Как я делаю свой «Яндекс Музыку» внутри Telegram и что пошло не так
Привет, DTF. Расскажу про свой пет-проект, который незаметно стал чем-то большим: музыкального бота в Telegram @tgsoundsbot. Тут будет немного истории, немного технической боли и честные цифры.
Зачем вообще
Я слушаю много андеграунда и SoundCloud-рэпа. Половины этого нет в нормальных стримингах, а если и есть, то не всё. Переключаться между приложениями ради одного трека надоело, а музыку друзьям я всё равно скидываю в Telegram. Так появилась идея: пусть всё будет прямо там.
Что умеет
- Поиск. Пишешь название или исполнителя, бот присылает трек прямо в чат.
- «Моя свага». Персональная волна. При первом запуске выбираешь любимых артистов, дальше бот подбирает музыку и учится на лайках и пропусках.
- Инлайн-режим. В любом чате пишешь @tgsoundsbot название, и трек улетает другу, не выходя из переписки. Неожиданно это стало самой популярной фишкой.
- Новинки. Если вышел трек у артиста, которого ты слушаешь, бот пришлёт его сам. Не чаще одного сообщения в день, спамить я принципиально не хочу.
- Мини-приложение. Нормальный плеер с обложками, очередью и историей.
- «Мой месяц в музыке». Что-то вроде Spotify Wrapped: карточка для сторис с твоими топ-артистами за месяц.
Немного технической боли
Инлайн. Telegram не даёт загрузить файл прямо в ответ на инлайн-запрос, можно отдать только уже загруженный файл или ссылку. Поэтому сначала отправляется короткая заглушка с настоящим названием трека, бот в фоне загружает аудио и подменяет его в уже отправленном сообщении. Со стороны выглядит как «⏳ загружаем трек…», а через пару секунд там уже музыка.
Треки, которые выглядят нормально, но не играют. Часть треков на площадке доступна только по платной подписке или только в некоторых странах. В метаданных они выглядят как обычные. Единственный надёжный способ понять, сыграет ли трек, — реально запросить поток. Теперь бот проверяет каждый трек перед тем, как показать его в поиске.
Один день, когда всё сломалось. В октябре площадка поменяла форматы потоков и добавила DRM, и воспроизведение отвалилось у всех и сразу. Пришлось переписывать выбор формата: перебирать варианты по очереди и пропускать защищённые.
Стек для тех, кому интересно: Python (python-telegram-bot, aiohttp), MongoDB, мини-приложение на Vue 3.
Цифры, честно
- Больше 1000 пользователей.
- Активных каждый день — единицы. Часть пользователей пришла с рекламы, и они быстро отвалились.
- Самое интересное: около 8 новых людей в день приходят сами, через инлайн. Человек видит в чате трек с подписью «via @tgsoundsbot», пробует сам и скидывает дальше.
Сейчас главная задача — чтобы такие люди не только отправляли треки, но и оставались слушать.
Что дальше
Распознавание музыки по голосовому и видео, чтобы найти трек «по звуку». И ещё больше андеграунда в рекомендациях.
Попробовать
👉 @tgsoundsbot: бесплатно, регистрации нет, жмёшь «Старт» и пишешь трек.
Буду рад фидбеку в комментах: чего не хватает, что бесит, каких артистов не нашли. Каждый комментарий реально читаю и чиню.