{"id":14273,"url":"\/distributions\/14273\/click?bit=1&hash=820b8263d671ab6655e501acd951cbc8b9f5e0cc8bbf6a21ebfe51432dc9b2de","title":"\u0416\u0438\u0437\u043d\u044c \u043f\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0435 \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0440\u0435\u043d\u0434\u044b \u0440\u044b\u043d\u043a\u0430 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438","buttonText":"","imageUuid":""}

История одного маааленького бота 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

0
14 комментариев
Написать комментарий...
Константин Луконенко

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

Ответить
Развернуть ветку
Alex Wite
Автор

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

Ответить
Развернуть ветку
Nahimic Play Music

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

Ответить
Развернуть ветку
Alex Wite
Автор

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Alex Wite
Автор

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

Ответить
Развернуть ветку
Александр Рязанов

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

Ответить
Развернуть ветку
Alex Wite
Автор

да) тут как раз упор на это и сделано, потому что искать в сторонних библиотеках музыку которая есть  на ютубе как показала практика и лень и не всегда она есть, тем более есть видео где часовые подборки каких то треков и собственно поэтому проект существует, все было исходя из собственных потребностей 

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Станислав Тюрин

Не находит канал по ссылке(

Ответить
Развернуть ветку
Alex Wite
Автор

отредактировал, теперь есть

Ответить
Развернуть ветку
Станислав Тюрин

По ссылке по-прежнему не находит. Нашел сам )

Ответить
Развернуть ветку
Станислав Тюрин

Протестируйте ссылку)

Ответить
Развернуть ветку
Alex Wite
Автор

странно, я попробовал и у меня открывается с разных браузеров)

Ответить
Развернуть ветку
11 комментариев
Раскрывать всегда