FYTT - FromYoutubeToTelegram (https://t.me/FYTTproject_bot)
Проснулся, улыбнулся, прочитал о том, что YouTube замедляют, снова улыбнулся, зашел на YouTube — не работает. Перестал улыбаться, начал думать, что можно круто сделать по этому поводу. Увидел, что все байтят перейти в их Telegram (вот, кстати, мой), и появилась идея создать бота, который получает список подписок пользователя на YouTube, ищет Telegram-каналы всех подписок и выдает их пользователю списком, чтобы он не потерял любимых авторов. Думаю, идея нормальная — хитом, конечно, не станет, но в первую очередь делал для опыта.
До этого я, конечно, создавал ботов. По сути, я умел все, что нужно для проекта:
Работа с базой данных (использую MongoDB, в профессиональном сообществе её немного хейтят, но ладно).
Основной язык — Node.js + фреймворк telegraf.js.
Работа с Google API (YouTube API, в частности) — делал авторизацию для сайта с цитатами (недоделал, к сожалению, лежит уже год полумёртвым. Если есть гениальные идеи сделать лучший сайт с цитатами, пишите мне, покреативим).
Да, в принципе, это всё, что нужно по стеку.
Так как делал проект на полном вайбе, под музыку, конечно, никакой логики не прописал, но решил затестить, что сможет сделать ChatGPT — и не зря. Он написал основной код, логика которого мне понравилась. Разумеется, чтобы его запустить, нужно было сделать кучу правок, а чтобы он заработал — многое переписать. Но в целом я оказался доволен работой ChatGPT — это реально будущее. Причём я осознал, что он смог выдать нормальный код лишь потому, что я сам чётко понимал, как будет работать бот. А значит, программисты ещё долго будут мучиться на своих креслах, работая на корпорации.
Итак, в первой версии бота была авторизация, которая не работала.
Во второй версии появилась авторизация, которая заработала.
В третьей версии основной функционал заработал, но идея не была раскрыта, так как бот искал ссылки на Telegram-каналы ютуберов из моей базы данных, в которой было всего 3 канала — что, конечно, никуда не годилось. Тогда я быстро понял, что почти все YouTube-каналы оставляют в описании ссылки на свои Telegram-каналы, а значит, взять их — дело лёгкое, верно?
Ах да. YouTube API аж 3-й версии не способен получать ссылки каналов... Это же чуть ли не базовая функция API — получать всё, что написано на странице.
Благо нашёлся энтузиаст, который уже сделал своё API — yt.lemnoslife.com, где это хорошо реализовано. Респект автору огромный.
Ну и после этого последовал миллион фиксов багов и непоняток, потому что я неопытный и слабый разработчик. В итоге всё работает, но появилась другая проблема: бот запрашивает конфиденциальные данные пользователя — список его подписок, а значит, Google просто так не даст их получать тому, о ком ничего не знает. (Для тестов можно добавлять тестового пользователя).
Чтобы Google тебя одобрил, нужен сайт с главной страницей и политикой конфиденциальности.
«Кайф», — подумал я.
На самом деле заглушку сделать очень просто (домен, правда, пришлось покупать), вопрос был в содержании.
Первый раз Google не понравился логотип моего приложения, потому что он «не отражает индивидуальность» (или как-то так, короче, наверное, потому что слишком хорошо читается логотип YouTube и Telegram, с чем я согласен).
Тогда я решил показать всю свою харизму и индивидуальность:
Этот они приняли. ?
Далее Google не понравилась политика, которую написал ChatGPT. Они жёстко написали: мол, «в вашей политике сказано, что Google продаёт данные пользователей». Я перечитал и такого там не увидел. Закинул в ChatGPT, он всё пофиксил, и наконец меня одобрили.
Далее я всё релизнул, украсил, фиксил баги неделю-две и решил рассказать об этом людям, сделав два забавных Shorts:
https://youtu.be/MlXEUIDBhE0 - Speech to speech моей записи на ии оригинального голоса Рика из Рика и Морти
На данный момент моим ботом воспользовались 37 человек, но многие просто тыкнули /start и больше не заходили — что обидно :(
Кому интересно:
Бот - https://t.me/FYTTproject_bot
Исходный код - VitoSperansky/FromYoutubeToTelegram: Бот для поиска телеграмм каналов всех ютуберов, на которые вы подписаны в "два клика". (github.com)
Сайт - fytt.tech:3000 (порт 3000, потому что порты ниже 1024 по умолчанию закрыты для установки серверов, их можно открыть, но это угроза безопасности. По-хорошему мне надо было сделать переадресацию с 443 порта (он дефолтный для https сайтов, поэтому скрыт в поисковой строке и пользователи его не видят) с помощью ngrok например, но я не стал тратить силы, так это все равно заглушка для гугла).
Связаться со мной по вопросам или просто - https://t.me/vitosperansky
Jamshhed
Вау, оно действительно работает. Нашёл почти всё, только работает медленно. Запустился через 2 минуты после нажатия на старт.
Вопрос. Я правильно понял, что бот "заходит" на канал автора, смотрит его описание, находит ссылку на телеграмм и парсит её?
VitoSperansky Автор
Да, все верно. Ответил поздно, потому что я побежал баги фиксить и бота останавливал. Сам процесс парса тоже не быстрый, но и ускорить его я не знаю как, да и зачем, это не сильно мешает, я думаю. Еще все найденные связки ютуб-тг каналов я добавляю в базу данных, а значит, когда она будет большой, то каналы будут быстрее находиться, так не придется искать ссылку через api.