Как я делаю свой «Яндекс Музыку» внутри Telegram и что пошло не так

Привет, DTF. Расскажу про свой пет-проект, который незаметно стал чем-то большим: музыкального бота в Telegram @tgsoundsbot. Тут будет немного истории, немного технической боли и честные цифры.

Зачем вообще

Я слушаю много андеграунда и SoundCloud-рэпа. Половины этого нет в нормальных стримингах, а если и есть, то не всё. Переключаться между приложениями ради одного трека надоело, а музыку друзьям я всё равно скидываю в Telegram. Так появилась идея: пусть всё будет прямо там.

Что умеет

  • Поиск. Пишешь название или исполнителя, бот присылает трек прямо в чат.
  • «Моя свага». Персональная волна. При первом запуске выбираешь любимых артистов, дальше бот подбирает музыку и учится на лайках и пропусках.
  • Инлайн-режим. В любом чате пишешь @tgsoundsbot название, и трек улетает другу, не выходя из переписки. Неожиданно это стало самой популярной фишкой.
  • Новинки. Если вышел трек у артиста, которого ты слушаешь, бот пришлёт его сам. Не чаще одного сообщения в день, спамить я принципиально не хочу.
  • Мини-приложение. Нормальный плеер с обложками, очередью и историей.
  • «Мой месяц в музыке». Что-то вроде Spotify Wrapped: карточка для сторис с твоими топ-артистами за месяц.

Немного технической боли

Инлайн. Telegram не даёт загрузить файл прямо в ответ на инлайн-запрос, можно отдать только уже загруженный файл или ссылку. Поэтому сначала отправляется короткая заглушка с настоящим названием трека, бот в фоне загружает аудио и подменяет его в уже отправленном сообщении. Со стороны выглядит как «⏳ загружаем трек…», а через пару секунд там уже музыка.

Треки, которые выглядят нормально, но не играют. Часть треков на площадке доступна только по платной подписке или только в некоторых странах. В метаданных они выглядят как обычные. Единственный надёжный способ понять, сыграет ли трек, — реально запросить поток. Теперь бот проверяет каждый трек перед тем, как показать его в поиске.

Один день, когда всё сломалось. В октябре площадка поменяла форматы потоков и добавила DRM, и воспроизведение отвалилось у всех и сразу. Пришлось переписывать выбор формата: перебирать варианты по очереди и пропускать защищённые.

Стек для тех, кому интересно: Python (python-telegram-bot, aiohttp), MongoDB, мини-приложение на Vue 3.

Цифры, честно

  • Больше 1000 пользователей.
  • Активных каждый день — единицы. Часть пользователей пришла с рекламы, и они быстро отвалились.
  • Самое интересное: около 8 новых людей в день приходят сами, через инлайн. Человек видит в чате трек с подписью «via @tgsoundsbot», пробует сам и скидывает дальше.

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

Что дальше

Распознавание музыки по голосовому и видео, чтобы найти трек «по звуку». И ещё больше андеграунда в рекомендациях.

Попробовать

👉 @tgsoundsbot: бесплатно, регистрации нет, жмёшь «Старт» и пишешь трек.

Буду рад фидбеку в комментах: чего не хватает, что бесит, каких артистов не нашли. Каждый комментарий реально читаю и чиню.

11
11