Media Pocket

Self-hosted система асинхронного получения, обработки и доставки медиа через Telegram.

Media Pocket принимает запрос через Telegram, получает медиа из внешнего источника, нормализует результат и возвращает его пользователю. Это не один длинный обработчик: интерактивный bot и фоновый worker разделены, а работа проходит через асинхронный контур.

Состояние и выполнение

PostgreSQL хранит каноническое состояние. Redis Streams участвует в движении заданий между процессами, поэтому приём запроса отделён от сетевого получения и обработки файла. Такое разделение заставляет явно определить повторное выполнение, ошибки, переходы состояния и момент, когда результат действительно готов к доставке.

Источники медиа скрыты за provider abstraction. Это удерживает особенности конкретного внешнего сервиса на его границе, а не размазывает их по Telegram-слою и worker. FFmpeg входит в контур нормализации и обработки там, где полученный файл нельзя просто передать дальше как есть.

Инженерная граница

У системы есть отдельные concerns вокруг deployment, security boundaries и acceptance checks. Особенно важна граница браузерной аутентификации: для источников, которым нужны browser credentials, Media Pocket может работать через Media Cookie Broker, не превращая собственный worker в держателя полноценной человеческой сессии.

Проект интересен как сочетание пользовательского интерфейса с длительной фоновой работой, внешними нестабильными источниками и проверяемым состоянием — без попытки спрятать эти различия за одним синхронным вызовом.