обновление what's playing bot
обновил тут своего ботика @whats_playing_bot
сделал то, что хотел сделать ещё пару лет назад - интеграцию с другими сервисами помимо Spotify. теперь к боту можно подключить аккаунт SoundCloud и делиться треками так же, как и через Spotify.
что сейчас работает с SoundCloud:
- шер треков
- добавление треков в избранное
- поиск треков через inline-режим
что, возможно, добавлю позже:
- проигрывание треков в Telegram Mini App
- управление плеером через кнопки в сообщениях и команды бота - скорее всего нет. в SoundCloud API нет такого функционала, разве что я по фану сделаю поддержку в своём приложении
пару лет назад делал интеграцию с Deezer. в принципе, почти сделал, но решил не заливать фичу, так как на тот момент ещё занимался миграцией проекта с MongoDB на PostgreSQL и в процессе добавлял новые сущности и связи, которых раньше не было. в итоге мне уже было лень доделывать фичу и разрешать мердж конфликты. и вот сейчас решил написать её заново.
возможно, сделаю ещё интеграцию с Deezer. но там интересный момент. они закрыли возможность регистрации новых приложений для использования апи. у меня, конечно, остались ключи, которые я регистрировал раньше. проверил их и вроде бы ещё работают. авторизация проходит, а вот насчёт остальных методов не уверен. возможно, нет смысла его интегрировать.
ещё немного изменил архитектуру проекта.
теперь все одинаковые запросы к апи сервисов проходят через distributed single flight сервис. то есть при одновременном запросе одного и того же трека только первый запрос обращается к апи и сохраняет информацию о треке, а остальные просто ожидают, пока основной завершится, после чего уже получают результат. это позволило уменьшить количество обращений к апи и временно решить некоторые проблемы с парсером треков.
изменил приоритет получения и обновления информации о треке. в первую очередь бот работает с внутренними сервисами и сразу обновляет сообщение, а уже потом делает запросы к внешнему агрегатору и в случае необходимости обновляет сообщение еще раз.
это позволило быстрее отображать ссылки на разные сервисы, так как внешние агрегаторы могут отвечать на запрос вплоть до минуты и при этом часто возвращают ошибку 429
ссылки на бота:

