Перейти к содержимому
Справочник API

Справочник API

TorrPlay предоставляет полнофункциональный RESTful API для программного управления. Полная спецификация OpenAPI доступна по адресу api/api.yaml.

Кроме того, ознакомиться с документацией API можно в Scalar.

Базовый URL

Все эндпоинты API задаются относительно:

http://localhost:8090

Эндпоинты

Аутентификация

МетодЭндпоинтОписание
POST/oauth/tokenПолучение JWT-токена администратора (Bearer auth)
POST/api/v1/tokensСоздание делегированного токена воспроизведения (scope: play)

Основной API

МетодЭндпоинтОписание
GET/api/v1/torrentsПолучение списка всех торрентов
POST/api/v1/torrentsДобавление нового торрента
POST/api/v1/torrent-resolutionsЧтение удалённого торрент-файла без сохранения
GET/api/v1/torrents/{hash}Получение метаданных торрента
PATCH/api/v1/torrents/{hash}Обновление метаданных торрента
DELETE/api/v1/torrents/{hash}Удаление торрента
PUT/api/v1/torrents/{hash}/preloadЗапуск или обновление предзагрузки торрента
GET/api/v1/torrents/{hash}/preloadПолучение статуса и прогресса буфера предзагрузки
DELETE/api/v1/torrents/{hash}/preloadОтмена предзагрузки
GET/api/v1/torrents/backupСоздание резервной копии торрентов и постеров
POST/api/v1/torrents/restoreВосстановление торрентов и постеров из резервной копии
GET/api/v1/stream/{hash}Потоковая передача файла торрента
HEAD/api/v1/stream/{hash}HEAD-запрос для файла, доступного для потоковой передачи
GET/api/v1/playlistГенерация M3U-плейлиста для потоковой передачи
GET/api/v1/settingsПолучение настроек приложения
PATCH/api/v1/settingsОбновление настроек приложения

Протокол Stremio Addon

МетодЭндпоинтОписание
GET/stremio/manifest.jsonМанифест аддона Stremio
GET/stremio/{token}/manifest.jsonМанифест аддона с авторизацией по токену в URL
GET/stremio/catalog/{type}/{id}.jsonПросмотр каталога фильмов или сериалов
GET/stremio/meta/{type}/{id}.jsonПолучение метаданных и списка серий
GET/stremio/stream/{type}/{id}.jsonПолучение ссылок на потоковое воспроизведение
GET/stremio/play/{hash}/{fileIdx}/{filename}Обработчик прямого воспроизведения с поддержкой Range-header

Статистика

МетодЭндпоинтОписание
GET/api/stats/memoryПолучение общей статистики использования памяти
GET/api/stats/torrents/{hash}Получение статистики по торренту

Система

МетодЭндпоинтОписание
GET/api/system/healthПроверка работоспособности
GET/api/system/infoПолучение информации о приложении
GET/api/system/logsПолучение логов приложения — см. раздел Журналы
GET/api/system/metricsПолучение системных метрик — см. раздел Метрики
GET/metricsЭкспорт метрик Prometheus — см. раздел Метрики

Совместимость с qBittorrent

МетодЭндпоинтОписание
POST/api/v2/torrents/addДобавление нового торрента (совместимо с qBittorrent)

Совместимость с TorrServer

МетодЭндпоинтОписание
POST/cacheПолучение статистики кэша
GET/echoПроверка состояния сервера
GET/play/{hash}/{index}Потоковая передача содержимого торрента
POST/settingsОбновление настроек
GET/stream/{filename}Потоковая передача или предварительная загрузка торрента
POST/torrentsУправление торрентами
POST/torrent/uploadДобавление нового торрента
POST/viewedУправление тегами просмотра торрентов

Потоковая передача

Для потоковой передачи файлов из торрента укажите хеш и URL-кодированный путь к файлу:

http://localhost:8090/api/v1/stream/{hash}?path={url_encoded_path}

Если включена аутентификация, добавьте токен воспроизведения:

http://localhost:8090/api/v1/stream/{hash}?path={url_encoded_path}&token={playback_token}

Пример запроса:

http://localhost:8090/api/v1/stream/dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c?path=Big.Buck.Bunny.1080p.mp4

Эндпоинты GET и HEAD также принимают необязательный URL-кодированный параметр magnet. Он передаёт трекеры, через которые TorrPlay ищет пиров для торрента, которого ещё нет в библиотеке.

Предзагрузка

Запустите или замените предзагрузку торрента, указав индекс либо путь к файлу. Если не передать ни одно из этих полей, TorrPlay выберет файл с индексом 0:

curl -X PUT http://localhost:8090/api/v1/torrents/{hash}/preload \
  -H "Content-Type: application/json" \
  -d '{
    "file_index": 0,
    "playback_position_seconds": 900
  }'

Поле playback_position_seconds добавляет к началу и концу файла диапазон возле сохранённой позиции просмотра. Запрос также принимает file_path и необязательную magnet-ссылку в поле magnet.

Ответ содержит target_bytes, completed_bytes, progress, download_rate, active_peers, total_peers и один из следующих статусов:

СтатусЗначение
idleДля торрента нет предзагрузки
queuedОжидание свободного слота или памяти
preloadingЗагрузка выбранных диапазонов файла
readyВсе запланированные диапазоны находятся в кэше
failedНе удалось зарезервировать память или торрент перестал получать данные
evictedРезерв освобождён для другой предзагрузки или после уменьшения лимита памяти

Если воспроизведение не началось, предзагрузка со статусом ready хранится 10 секунд. После использования TorrPlay освобождает её, когда закроется последний поток чтения файла, включая оставленный открытым в ожидании следующего запроса. Конечный статус failed или evicted также доступен в течение 10 секунд.

Чтение удалённого торрент-файла

POST /api/v1/torrent-resolutions загружает файл .torrent по HTTP- или HTTPS-ссылке и возвращает его метаданные, не создавая запись в базе данных. Если торрент уже есть в библиотеке, эндпоинт вернёт сохранённые метаданные без изменений:

curl -X POST http://localhost:8090/api/v1/torrent-resolutions \
  -H "Content-Type: application/json" \
  -d '{"url":"https://indexer.example/download/example.torrent"}'

Чтобы сохранить торрент в библиотеке, используйте POST /api/v1/torrents.

Аутентификация

При включённой аутентификации учётные данные необходимо указывать в каждом защищённом запросе. Эндпоинт выдачи токенов и проверка работоспособности доступны без аутентификации. Подробности в разделе Аутентификация.

Базовая аутентификация

Имя пользователя и пароль указываются в каждом защищённом запросе:

curl -u your-username:your-password http://localhost:8090/api/v1/torrents

Токен Bearer

Для защищённых эндпоинтов JWT-токен указывается в заголовке Authorization.

curl -H "Authorization: Bearer your-jwt-token" http://localhost:8090/api/v1/torrents

Получение токена

curl -X POST http://localhost:8090/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=password&username=your-username&password=your-password"

Пример: добавление торрента

curl -X POST http://localhost:8090/api/v1/torrents \
  -H "Content-Type: application/json" \
  -d '{
    "magnet": "magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c&dn=Big+Buck+Bunny"
  }'
Последнее обновление