Программирование

Как подключить потоковое API к Telegram‑боту: настройка

Telegram Bot API не поддерживает прямое потоковое видео, поэтому нужно использовать сторонний сервис с публичным API (YouTube, Vimeo, Plex и др.). соблюдайте лимиты.

Какое API можно использовать для просмотра фильмов в Telegram‑боте?
Я разрабатываю бота, который по описанию ищет название фильма/сериала/аниме, и хочу добавить возможность смотреть фильмы внутри бота.
Какие сервисы (например, ZONA) предоставляют API, позволяющие интегрировать потоковое воспроизведение фильмов?

Как работает потоковое видео в Telegram‑боте

Telegram Bot API позволяет отправлять файлы (до 2 GB) и ссылки.
Если вы хотите, чтобы пользователь начал смотреть фильм прямо в Telegram, необходимо:

  1. Получить прямой URL‑потока (HLS, DASH, MP4‑файл) из внешнего сервиса.
  2. Отправить пользователю сообщение с этим URL, либо встроить его в форму inline_query с кнопкой «Играть».

Telegram не поддерживает прямое воспроизведение потоков, поэтому всё происходит через сторонний плеер (браузер, приложение).

Согласно Telegram Bot API – «отправка видео» ограничена 2 GB, а потоков поддерживать нельзя.


Публичные API потоковых сервисов

YouTube Data API

YouTube предоставляет публичный API, который возвращает метаданные видео и URL‑потоков (если пользователь разрешил доступа).

См. YouTube Data API – Video resource.

Vimeo API

Vimeo позволяет получить прямые ссылки на видео и настроить параметры качества.

См. Vimeo API – Video endpoint.

Dailymotion API

Dailymotion API выдаёт URL‑потоков и метаданные.

См. Dailymotion API – Video endpoint.

Plex Media Server API

Plex – собственный медиасервер, у которого есть REST‑API, позволящий генерировать потоки из локальной библиотеки.

См. Plex API – Streaming.

Emby Server API

Emby аналогичен Plex, с открытым API для потоковой передачи.

См. Emby API – Media streaming.

Kodi JSON‑RPC API

Kodi (плеер) имеет JSON‑RPC, через который можно запустить воспроизведение из бота, если бот запущен на той же машине.

См. Kodi JSON‑RPC API.

YTS API (torrent‑потоки)

YTS – торрент‑сервис, у которого есть публичный API, возвращающий magnet‑ссылки и прямые ссылки на видео.

См. YTS API.


Сервис ZONA и его ограничения

ZONA – это BitTorrent‑клиент, позволяющий «просматривать» контент, скачивая только нужные сегменты.
Однако у ZONA нет открытого HTTP‑API; доступ к потокам возможен только через пользовательский клиент.

См. Wikipedia – Zona (streaming video software).

Таким образом, ZONA не подходит для интеграции в Telegram‑бот, если нужен программный доступ к потокам.


Как подключить потоковое API к боту

  1. Выбор API – определите, где хранится ваш контент (YouTube, Vimeo, Plex и т.д.).
  2. Регистрация – получите ключи доступа (API‑ключ, OAuth‑токен).
  3. Получение URL – используя API, получите прямую ссылку на поток (HLS‑playlist, MP4‑URL).
  4. Отправка пользователю – сформируйте сообщение с кнопкой «Играть» (InlineKeyboardMarkup) и URL.
  5. Обработка ошибок – проверяйте статус кода ответа API, обрабатывайте ограничения по количеству запросов.

Пример кода (Python + aiogram):

python
from aiogram import Bot, Dispatcher, types
import aiohttp

API_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
YOUTUBE_KEY = 'YOUR_YOUTUBE_API_KEY'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(commands=['play'])
async def play_video(message: types.Message):
    query = message.get_args()
    # Получаем ID видео (пример для YouTube)
    async with aiohttp.ClientSession() as sess:
        resp = await sess.get(
            f'https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id={query}&key={YOUTUBE_KEY}'
        )
        data = await resp.json()
        if not data['items']:
            await message.answer('Видео не найдено')
            return
        video = data['items'][0]
        stream_url = f'https://www.youtube.com/watch?v={query}'
        await message.answer(
            f'🎬 {video["snippet"]["title"]}',
            reply_markup=types.InlineKeyboardMarkup(
                inline_keyboard=[
                    [types.InlineKeyboardButton('▶️ Смотреть', url=stream_url)]
                ]
            )
        )

Заключение

  • Telegram Bot API не поддерживает встроенное потоковое видео, поэтому нужно использовать сторонний сервис с публичным API.
  • Популярные варианты: YouTube Data API, Vimeo API, Dailymotion API, Plex API, Emby API, Kodi JSON‑RPC, YTS API.
  • ZONA – клиент, без открытого API, поэтому интегрировать его в бота нельзя.
  • Выберите сервис в зависимости от ваших источников контента и ограничений по лицензионным правам, получите ключи, получите URL‑потоков и отправьте их пользователю через Telegram‑бота.

Следуйте документации выбранного API и соблюдайте ограничения по количеству запросов и лицензии контента.

Авторы
Проверено модерацией
Модерация