Add torrent client integration and downloads management: introduce qbittorrent service in Docker setup, implement downloads endpoint in API, and enhance media storage to handle imported files. Update frontend routes and translations for downloads management.

This commit is contained in:
Leonid Pershin
2026-07-24 16:42:14 +03:00
parent 5853009d71
commit e7840ba919
18 changed files with 382 additions and 6 deletions
+3
View File
@@ -151,5 +151,8 @@ export type ScheduleEntryDto = {
episodeIndex: number | null
}
// ── Загрузки (торрент) ─────────────────────────────────────────────────────
export type DownloadFileDto = { relativePath: string; name: string; sizeBytes: number }
// ── Публичный эфир ─────────────────────────────────────────────────────────
export type PublicChannelDto = { id: string; slug: string; name: string }
+22
View File
@@ -117,6 +117,17 @@ const resources = {
Failed: 'Ошибка',
},
},
downloads: {
title: 'Загрузки',
empty: 'Папка загрузок пуста. Добавьте торрент в клиенте.',
import: 'Импортировать',
imported: 'Файл импортирован, идёт обработка',
size: 'Размер',
path: 'Файл',
refresh: 'Обновить',
openClient: 'Открыть qBittorrent',
hint: 'Торрент-клиент качает в downloads/. Выберите готовый файл и импортируйте — он скопируется в библиотеку и уйдёт на обработку, торрент продолжит сидироваться.',
},
shows: {
title: 'Шоу',
name: 'Название',
@@ -285,6 +296,17 @@ const resources = {
Failed: 'Failed',
},
},
downloads: {
title: 'Downloads',
empty: 'Downloads folder is empty. Add a torrent in the client.',
import: 'Import',
imported: 'File imported, processing started',
size: 'Size',
path: 'File',
refresh: 'Refresh',
openClient: 'Open qBittorrent',
hint: 'The torrent client downloads into downloads/. Pick a finished file and import it — it is copied into the library and queued for processing, the torrent keeps seeding.',
},
shows: {
title: 'Shows',
name: 'Name',