TGViewer
Меня заставили создать канал Меня заставили создать канал @theyforcedme · 6.12K subscribers
Post #2166 8.25K
Pink Floyd - Atom Heart Mother

Включите этот трек, пока читаете, он над постом.
Это не просто одна из моих любимых композиций Pink Floyd, это ещё и чудесный пример песни-трипа.

Песня-трип — это не просто музыка, это долгое путешествие.
Слушать такое надо с закрытыми глазами и в наушниках, представляя себя плывущим по музыкальному течению и разделяя в уме партии разных инструментов.
Время будто останавливается, вы выпадаете из реальности, а музыка окутывает всё сознание.
Такие трипы доступны в любое время, бесплатно и без риска сесть по 228.

Когда-нибудь я обязательно составлю плейлист из таких композиций. У меня их совсем мало, но всё равно хочу собрать их в одном месте.

И всё же, сейчас об Atom Heart Mother.
Каково же было моё удивление, когда оказалось, что я не могу отправить эту песню с помощью моего же @nowplaybot!
Бот предательски выплёвывал ошибку "Request Entity Too Large", потому что Telegram Bot API не позволяет отправить файл больше 50 МБ, а наша песенка весит все 56.

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

Возможно, для кого-то сейчас раскрою секрет.
Боты — это такие же аккаунты, как и обычные человеческие, разве что некоторые методы MTProto API для них недоступны.
Bot API — это лишь мост между HTTP и MTProto, работающий на TDLib.
Так вот лимит в 50 МБ для файлов — это всего лишь ограничение моста.
Если обращаться к MTProto API напрямую, лимит повышается до 1.5 ГБ, как и у обычных аккаунтов.

Обычно для таких задач я использую TDLib прямо из Go, но мне стало лень работать с асинхронной загрузкой файлов, поэтому решила взять что-нибудь другое.
Практически никогда не писала на Python, но сейчас выбрала именно его, чтобы по-быстрому накодить этот небольшой микросервис.

К сожалению, классная библиотека Pyrogram не подошла, потому что не умеет загружать файлы из памяти, только по пути с диска.
Взяла Telethon и написала вот это. Да, код там ужасный, но не ругайте, это не мой язык.

Микросервис запускается в отдельном контейнере и поднимает веб-сервер с единственным методом sendAudio, который принимает те же параметры, что и аналогичный метод из Bot API.

@nowplaybot определяет размер файла после скачивания из Deezer и если видит, что он больше 50 МБ, задействует питоновый микросервис для отправки аудио.
Если же файл маленький, используется стандартный способ (хочется использовать костыли как можно реже).

Теперь Atom Heart Mother и другие длинные треки отправляются правильно. Я спокойна.
More from @theyforcedme
  1. Apr 1, 2026photo post
  2. Nov 1, 2025мяу :3
  3. Aug 19, 2024мяу ^_^
  4. Mar 5, 2024photo post
  5. Feb 29, 2024Про сломанный @nowplaybot написала тут — https://t.me/nowplaylogs/28 Соррян!
  6. Dec 31, 2023Post #3577
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →