История одного маааленького бота YoutubeMp3

Сидел я как то вечером слушал музыку на ютубе, а слушаю музыку там постоянно. И как то мне понадобилось найти mp3 которая была в ролике и…

Сижу слушаю музыку на ютубчике и тут возникла необходимость скачать пару треков с ютуба себе в ipod (да я тот кто слушает музыку через плеер). Я начал искать треки по названию и не мог их найти, затем пришла идея просто достать из видюхи звуковую дорожку. Погуглив я нашел сайты и даже программы, которые выполняют данный фунционал, попользовавшись ими и удовлетворив свои потребности я благополучно забил на эту необходимость. Спустя месяц у меня возникла снова нужда и я подумал, "а не сделать ли мне такой же инструмент", ведь я программист и могу, программисты ж все могут. Я продумал что нужно, а нужно просто доставать треки из видюх. И я принялся шерстить наличие готовых библиотек для парсинга инфы с ютуб роликов дабы в последствии выкачать все что мне необходимо. Выбор пал на очень простую библиотеку «athlon1600/youtube-downloader» ее можно найти на

Данная библиотека удовлетворяла моим базовым потребностям, а именно получения списка доступных видео для скачки с переданного видеоролика. Далее я вспомнил что утилита ffmpeg вполне отлично справляется с получением аудио дорожек с видео и заюзал ее, нет ничего проще, как два пальца:

ffmpeg -i video.mp4 audio.mp3

И все! собственно функционал для скачки и получению аудио дорожки занял у меня примерно 2-3 часа. Но спустя день я подумал «А не вылить ли мне это добро на всеобщее обозрение» и тут я сразу же понял что хочу перенести данный функционал в телеграм. Благо у меня уже был опыт написание одного небольшого бота и для меня не было проблем перенести весь функционал в бота. Через два дня после зарождения идеи бот был реализован и я начал его рекламить. Наивно полагая что такой дичи нет в телеге. Купил рекламу в паре мест — начался первый приток пользователей, каждому пользователю я радовался как ребенок. Первый пользовательский фитбэк не заставил себя долго ждать, мне написали о багах и о фитчах, которые бы хотели в нем видеть. Я реализовывал новый фунционал и попутно продолжал собирать отзывы и наблюдать как развивается мое творение. Но тут случился пис*** — вообщем вы поняли, там где я арендовывал сервер начались проблемы, проблемы были аппаратные, а я как раз только только закупил рекламы на пару тыс рубликов, и в этот момент я начал нервничать так как в трубу бабосики сливать не хотелось. Поругавшись с поддержкой на предмет почему сервер лежит я успокоился и стал ждать, через полтора часа мой сервер снова заработал и в этот же момент было принято решение о переезде в другое место, где трава зеленее, серваки постабильней и более адекватный саппорт, выбор пал на

Прочитав отзывы и проанализировав их цены и возможности я принял решение что они мне полностью подходят. Переезд занял пару часов, разворачивание проекта и настройка окружения. Так как я окружение не запихивал в Docker пришлось маленько помаяться с установкой и настройкой. (мой совет, юзайте докер если ресурсы сервера позволяют не экономить на спичках). Весь код лежит в git. Собственно все просто и тривиально в плане стэка. А теперь вернемся к нашим «баранам». После переезда я благополучно запустился, попутно увеличив мощностя машинки на которой крутится бот.

Спустя пару дней, когда тестировал функционал бота, я заметил, что почему то перестали качаться ролики. Приступив к дебагу кода, было выяснено, что ютуб «забанил» мой ip адрес за подозретельную активность. Поискав решения в сети я понял что возиться с обходом каптчи дело еще то геморойное и проще воспользоваться старыми добрыми прокси сервисами. Для того чтобы качать ролики с ютуба нужны стабильные и скоростные прокси и от бесплатных вариантов я сразу отказался так как они медленные и не стабильные. Пролистав форумы и поисковую выдачу наткнулся на сайт

который предоставляет по демократичной цене прокси, как раз то что мне нужно было. Купив 2 штуки я принялся к разработке. Понимая что нужно быстрее пилить работу бота через прокси, я приступил не теряя ни минуты, так как если забанили мой локальный адрес то вопрос времени, когда забанят адрес сервака где лежит бот. Сел переписывать я в 11 вечера, а встал из за компа в 4 утра. Я ложился с мыслью что я сделал 90% от всей работы, а именно код был полностью написан, и отдельными кусками протестирован, но не тестировался в совокупности.

Проснувшись утром в 10 утра, я сразу пошел до своего кудахтера, нажал кнопку и пошел заваривать себе чайку, черный с лимоном куртис — отличный чай. Заварив чай я сел за комп, открыл подключение к базе данных, пощелкал и заметил, что за последние два часа не было ни одной скачки видео, это меня сильно насторожило, ведь в боте было около 2к пользователей и за два часа кто то бы да сделал запрос. Я полез на сервак и начал дебажить сервисы по отдельности, сначала протестировал сервис, который разруливает задачами, с ним было все в порядке, далее я начал смотреть на сервис, который выполнял задачи, и тут я заметил он отрабатывал за 1 секунду, а это значило что сервис не получает нужных ссылок, так как если сервис получает ссылки то скачка видео + конвертация занимает не менее 5 секунд. Я понял что случилось то к чему я готовился пол ночи, и приступил к финальному тестированию работы через прокси.

Нервы были на пределе так как бот не работал и я чувствовал, что просираю своих пользователей. Сидя час не вставая за дебагом и финальными правками я выпил две голые кружки чая, ГОЛЫЕ КАРЛ! даже конфетку не съел. Спустя час я дописал весь код и был готов запустить тестового бота и сделать финальный прогон. Долго расписывать не буду, вообщем все взлетело почти с первого раза, скачка заработала и заработала почти без потери скорости, слава бафомету и всем кто мне помогал. После этого я сходил докупил еще 4 прокси в общей сложности вбухав в эту затею 360 рябчиков я вылил обновления на сервак и мой бот ожил и заиграл новыми красками. Собственно и все, в след истории напишу как я пилил фунционал по скачке целых плейлистов с моего любимого ютуба. Спасибо тем кто смог осилить это, дочитав до конца.

Сам бот, кто хочет жамкайте и пользуйтесь:

https://tele.gg/getyoutubemp3bot

22
14 комментариев

Очень полезный бот. Пользуюсь. Спасибо вам!

1
Ответить

вам спасибо за отзыв, если есть какие то предложения по доработке, рад буду выслушать.

Ответить

При увеличении подписоты проксей не хватит. Имеется аналогичный функционал. В среднем 375 скачиваний в час. Как показала практика, нужно 100+ проксей. 
Если бот поиграться, то скоро это будет не выгодно. Либо сейчас уже думайте над бизнес планом.

1
Ответить

я к этому готов, сейчас пока 6 проксей справляется, написан фунционал который равномерно распределяет между ними нагрузку и на 4500 человек хватает, но как только скаканет и станет не хватать я докуплю, на счет бизнес плана, тут было пару мыслей по манитезации, но смысла что то монетизировать если менее 30-50тыс пользователей не вижу смысла.

Ответить

Комментарий недоступен

1
Ответить

вам спасибо за обратную связь)

Ответить

Тоже собирал библиотеку в айтюнс, покупал музыку в сторе, но лень и прогресс победили - apple music. Впрочем, сгодится, слушать из телеграма индюшатину и ремиксы, которых у эппл нет и никогда не будет :)

1
Ответить