Возможности
TorrPlay создан для быстрого и плавного воспроизведения торрентов: с умным кэшированием в оперативной памяти, интеграцией с медиаплеерами и мониторингом.
Потоковая передача по HTTP
Воспроизводите видео и открывайте файлы напрямую из торрента без ожидания полной загрузки. Адрес потока:
/api/v1/stream/{hash}?path={url_encoded_path}Если в TorrPlay включена аутентификация, укажите токен воспроизведения в параметре запроса token:
/api/v1/stream/{hash}?path={url_encoded_path}&token={playback_token}Подробнее о токенах читайте в руководстве по Аутентификации.
Предзагрузка и буферизация
Потоки воспроизведения и предзагрузка работают в общей подсистеме потокового воспроизведения. Она распределяет приоритеты частей торрента и память для опережающего чтения так, чтобы активное воспроизведение получало ресурсы первым, а уже загруженные данные не пропадали:
- Адаптивное опережающее чтение: TorrPlay рассчитывает общий бюджет из
max_memory(см. Память для потокового воспроизведения). Активные потоки чтения при хранении в памяти делят этот бюджет между собой. - Плавное увеличение опережающего чтения: для нового потока или чтения после перемотки TorrPlay задаёт окно по меньшему из двух значений: выделенной доле бюджета или начальному пределу. Предел составляет не менее 1 MiB, округляется вверх до целого числа частей торрента и по мере просмотра растёт до выделенной потоку доли. Благодаря этому TorrPlay не загружает лишние данные сразу после заголовка контейнера, если плеер затем переходит к медиаданным.
- Приоритет воспроизведения: ближайшие к текущей позиции части загружаются раньше данных предзагрузки. После завершения HTTP-запроса поток чтения остаётся открытым до 30 секунд, чтобы продолжить загрузку перед следующим диапазонным запросом плеера.
- Предзагрузка позиции продолжения: подсистема кэширует начало и конец файла, а при передаче
playback_position_seconds— ещё и диапазон возле сохранённой позиции после разбора индекса контейнера. - Ограничение параллелизма: для каждого торрента хранится не более одной предзагрузки, одновременно скачиваются не более двух. Остальные ожидают со статусом
queued. - API предзагрузки (
PUT /api/v1/torrents/{hash}/preload): запускает или заменяет предзагрузку выбранного файла и необязательной позиции продолжения. - Мониторинг буфера (
GET /api/v1/torrents/{hash}/preload): возвращает целевой и загруженный объём, прогресс, число пиров, скорость и статусidle,queued,preloading,ready,failedилиevicted. - Индикация в интерфейсе: карточки торрентов в веб-панели TorrPlay показывают анимированный прогресс буферизации.
- Защита от вытеснения: диапазоны активного воспроизведения и данные предзагрузки защищены от обычного вытеснения LRU. Если память исчерпана и освободить её иначе нельзя, TorrPlay может вытеснить и защищённые части.
- Короткое хранение готового буфера: если воспроизведение не началось, готовая предзагрузка хранится 10 секунд. После использования TorrPlay освобождает её, когда закроется последний поток чтения файла, включая оставленный открытым в ожидании следующего запроса.
Веб-клиент и видеоплеер
Встроенный плеер позволяет смотреть любые видео в браузере:
- Переключение звуковых дорожек: плеер сам находит все аудиодорожки в файле. Кодеки без встроенной поддержки в браузерах (AC-3, E-AC-3, DTS) декодируются на лету через WASM и выводятся через Web Audio API.
- Встроенные и внешние субтитры: субтитры извлекаются из контейнеров Matroska (
.mkv) и WebM через диапазонные запросы без полного скачивания файла. Также можно загружать внешние файлы субтитров. - Навигация по раздаче: переключайте серии и файлы в панели управления плеером.
- Уведомления об обновлениях: плеер сообщает о выходе новых релизов TorrPlay на GitHub, показывает список изменений и ссылку на скачивание.
Интеграция со Stremio
TorrPlay содержит встроенную реализацию протокола Stremio Addon Protocol v3. Библиотека торрентов TorrPlay подключается к Stremio на ПК, Android TV и телефонах с автоматическим разделением на фильмы и сериалы.
Подробнее см. в руководстве по Интеграции со Stremio.
Поддержка Model Context Protocol (MCP)
В TorrPlay встроен сервер MCP (torrplay mcp), с помощью которого ИИ-ассистенты (Claude Desktop, Cursor и другие агенты) могут управлять библиотекой раздач, следить за оперативной памятью и создавать ссылки на видео.
Подробнее см. в руководстве по Model Context Protocol (MCP).
Медиасервер DLNA / UPnP
Встроенный медиасервер DLNA с автоматической категоризацией, пагинацией и поддержкой событий GENA позволяет смарт-телевизорам (LG webOS, Samsung Tizen, Sony Bravia), игровым приставкам и медиаплеерам в локальной сети находить TorrPlay и воспроизводить активные раздачи.
Подробнее см. в руководстве по DLNA / UPnP.
Бэкенды хранения
TorrPlay поддерживает два режима хранения данных:
Части торрента загружаются и кэшируются в оперативной памяти до достижения настраиваемого лимита (max_memory). При заполнении лимита алгоритм LRU сначала вытесняет незащищённые части, затем границы файлов и лишь в крайнем случае — диапазоны активного воспроизведения или предзагрузки.
Преимущества:
- Максимальная скорость работы
- Отсутствие износа накопителя
- Оптимально для онлайн-просмотра
Недостатки:
- Эфемерность (данные удаляются при перезапуске)
- Ограничение объёмом доступной оперативной памяти
Note
Примечание для пользователей Windows: на платформе Windows TorrPlay не удаляет файлы торрентов с диска автоматически при удалении раздачи или смене типа хранилища. Может потребоваться ручная очистка.
Фоновый загрузчик
Если включён параметр enable_downloader: true, TorrPlay автоматически скачивает в фоне раздачи с файловым хранилищем. Загрузка сама ставится на паузу, когда кто-то запускает воспроизведение, чтобы не забивать канал, и возобновляется после окончания просмотра.
Метрики Prometheus и мониторинг
Полный набор метрик Prometheus доступен по адресу /metrics, а /api/system/metrics возвращает краткую сводку активности в JSON. Метрики позволяют отслеживать фоновые загрузки (torrplay_downloading_torrents), торренты с открытыми сеансами просмотра (torrplay_streaming_torrents), обрабатываемые запросы потокового воспроизведения (torrplay_stream_requests_in_flight), задержки запросов и состояние среды Go.
Подробнее см. в руководстве по Метрикам и мониторингу.
Обновление метаданных
TorrPlay умеет автоматически обновлять метаданные раздач (постеры, названия, категории) из базы TheTVDB:
Параметры командной строки
| Флаг | Описание | По умолчанию |
|---|---|---|
--backup <path> | Входной файл резервной копии | torrplay.backup |
--output <path> | Путь к выходному файлу | torrplay.backup |
--category | Включить обновление категорий | Отключено |
--poster | Включить загрузку постеров | Отключено |
--title | Включить обновление названий | Отключено |
--language <lang> | Код языка метаданных (например eng) | — |
--provider <provider> | Поставщик метаданных (tvdb) | — |
--api-key <key> | API-ключ сервиса | — |
Пример использования
./torrplay --backup torrplay.backup --poster --title --provider tvdb --api-key YOUR_API_KEYСовместимость с TorrServer и qBittorrent
- TorrServer: поддержка вызовов API (
/torrents,/stream,/play,/cache,/viewed) для работы со сторонними клиентами (Kodi, VLC, TorrServe). - qBittorrent: эмуляция
/api/v2/torrents/addдля интеграции с сервисами автоматизации Prowlarr, Sonarr и Radarr.
Приложения для ПК и мобильных платформ
Базовая логика оформлена в виде библиотеки Go (pkg/torrplay), которая компилируется для мобильных устройств с помощью gomobile и Capacitor. Также доступны нативные приложения для ПК на базе Tauri под Windows, macOS и Linux.