Умный медиа-сервер для автоматического отслеживания, загрузки, организации и нарезки сериалов с торрент-трекеров и VK Video.
Series Tracker — это веб-приложение, которое превращает рутинную задачу по обновлению вашей медиатеки в полностью автономный фоновый процесс. Добавьте источники для ваших сериалов, и приложение само будет проверять наличие новых серий, скачивать их, переименовывать по гибким шаблонам и даже нарезать видеокомпиляции на отдельные эпизоды, готовя их для Plex, Jellyfin или любого другого медиа-сервера.
- Поддержка нескольких источников: Система умеет работать как с торрент-трекерами (Kinozal, Anilibria, Anilibria.TV, Astar.bz), так и с VK Video.
- 🧠 Продвинутый движок правил: Мощный визуальный конструктор позволяет создавать сложные цепочки правил (
ЕСЛИ...ТО...) для извлечения метаданных (сезон, эпизод, озвучка, качество) из названий видео и файлов. - 🤖 Многоагентная архитектура: Надежные фоновые процессы обеспечивают стабильность и производительность:
- MonitoringAgent: Плановое сканирование, синхронизация статусов, проверка файлов.
- DownloaderAgent: Параллельная загрузка видео из VK через
yt-dlp. - SlicingAgent: Автоматическая нарезка видеокомпиляций на эпизоды через
ffmpeg. - RenamingAgent: Централизованная обработка задач на переименование.
- StatefulAgent: Управление жизненным циклом торрентов в qBittorrent.
- 🎯 "Умный" планировщик для VK: Уникальный алгоритм
SmartCollectorанализирует все найденные видео (одиночные и компиляции) и строит оптимальный план загрузки для максимального покрытия серий. - ✂️ Автоматическая нарезка видео: Система умеет получать оглавление (chapters) из видеокомпиляций VK и автоматически нарезать их на отдельные файлы-эпизоды без перекодирования.
- ✨ Централизованное переименование: Все загруженные и обработанные файлы переименовываются в соответствии с единым, настраиваемым форматом.
- 📡 Обновления в реальном времени: Интерфейс на Vue.js мгновенно отображает любые изменения статусов благодаря технологии Server-Sent Events (SSE).
- 🛡️ Отказоустойчивость:
- Агенты восстанавливают прерванные задачи после перезапуска сервера.
- Сканер автоматически переключается на рабочие зеркала трекеров в случае недоступности основного домена.
- Система логирования: Все действия агентов и парсеров записываются в базу данных и доступны для просмотра и фильтрации через веб-интерфейс.
Инструкция предполагает установку на сервер под управлением Ubuntu/Debian.
Сначала необходимо установить все внешние инструменты, которые использует приложение.
# Обновляем систему
sudo apt update && sudo apt upgrade -y
# Устанавливаем Python, PIP и систему виртуальных окружений
sudo apt install python3 python3-pip python3-venv -y
# Устанавливаем FFmpeg (для нарезки видео)
sudo apt install ffmpeg -y
# Устанавливаем yt-dlp (для работы с VK Video)
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
# Устанавливаем библиотеку libtorrent (для будущих функций)
sudo apt install libtorrent-rasterbar-dev -y-
Клонируйте репозиторий (или просто скопируйте файлы проекта на сервер):
git clone https://github.com/wolfam0108/series-tracker.git cd series-tracker -
Создайте и активируйте виртуальное окружение:
# Создаем окружение в папке venv python3 -m venv venv # Активируем его source venv/bin/activate
-
Установите Python-библиотеки из файла
requirements.txt:pip install -r requirements.txt
-
Установите системные зависимости для Playwright:
sudo playwright install-deps
-
Загрузите браузерные движки для Playwright:
playwright install
-
Создайте директории для медиафайлов и дайте права на них вашему пользователю (замените
your_user):sudo mkdir -p /путь/к/вашим/сериалам sudo chown -R your_user:your_user /путь/к/вашим/сериалам
-
Запустите приложение с помощью Gunicorn:
# Убедитесь, что виртуальное окружение активировано gunicorn -c gunicorn_config.py run:app -
Настройте авторизацию:
- Откройте в браузере
http://<АДРЕС_ВАШЕГО_СЕРВЕРА>:5000. - Перейдите в Настройки → Авторизация.
- Заполните учетные данные для qBittorrent, Kinozal и VK Video (Access Token).
- Сохраните изменения.
- Откройте в браузере
Теперь ваше приложение полностью настроено и готово к работе. Для остановки Gunicorn нажмите Ctrl+C.
Чтобы приложение запускалось автоматически при старте системы и работало в фоновом режиме, можно создать systemd сервис.
1. Создайте файл сервиса:
sudo nano /etc/systemd/system/series-tracker.service2. Вставьте в него следующую конфигурацию:
Замените /path/to/your/project на полный путь к папке series-tracker и your_user на ваше имя пользователя.
[Unit]
Description=Series Tracker Application
After=network.target
[Service]
User=your_user
Group=your_user
WorkingDirectory=/path/to/your/project/series-tracker
ExecStart=/path/to/your/project/series-tracker/venv/bin/python3 run.py
Restart=always
[Install]
WantedBy=multi-user.target3. Включите и запустите сервис:
# Перезагружаем конфигурацию systemd
sudo systemctl daemon-reload
# Включаем автозапуск сервиса при старте системы
sudo systemctl enable series-tracker.service
# Запускаем сервис немедленно
sudo systemctl start series-tracker.service
# Проверяем статус сервиса
sudo systemctl status series-tracker.serviceПрежде чем создавать правила, давайте разберемся с основными концепциями.
-
Профиль: Профиль — это просто контейнер, который хранит набор правил. Каждый сериал (и VK, и торрент) привязывается к одному из профилей. Вы можете создать один универсальный профиль или отдельные профили для разных студий озвучки (например, "AniLibria Rules", "VK Dub Studio Rules").
-
Правило: Правило — это одна инструкция в формате "ЕСЛИ... ТО...". Правила в профиле выполняются строго по порядку, сверху вниз. С помощью стрелок вы можете менять их приоритет.
-
Условия (
ЕСЛИ): Эта часть проверяет, соответствует ли название видео/файла заданному вами шаблону (паттерну).- Содержит / Не содержит: Базовые проверки.
- И / ИЛИ: Вы можете добавлять несколько условий в одно правило и объединять их логикой "И" (должны выполниться все) или "ИЛИ" (должно выполниться хотя бы одно).
-
Действия (
ТО): Эта часть определяет, что нужно сделать, если условия выполнились.- Исключить видео: Самое простое действие. Если условие сработало, это видео/файл будет полностью проигнорировано. Идеально для отсеивания трейлеров, анонсов, обзоров и т.д.
- Извлечь / Назначить: Основные рабочие действия. Позволяют извлечь из названия динамические данные (номер серии, разрешение) или назначить статические (тег озвучки).
-
Конструктор паттернов: Это визуальный редактор, где вы собираете шаблон для поиска.
Текст: Соответствует точному тексту, который вы введете.Число: Соответствует любому одному или нескольким числам (1,05,155).Пробел: Соответствует одному или нескольким пробелам.*: "Джокер". Соответствует любому количеству любых символов.Начало/Конец: "Якоря", которые привязывают ваш паттерн к началу или концу строки.+/-: Математические операции для корректировки извлеченных чисел.
Давайте создадим профиль для типичной группы, которая выкладывает аниме.
Цель: Научить систему правильно распознавать серии, игнорировать мусор и извлекать все метаданные.
Пример названия видео: Магическая битва - 2 сезон, 15 серия [1080p] [AniDub]
- Перейдите в Настройки → Фильтры VK.
- В поле "Имя нового профиля" введите
AniDub VK Rulesи нажмите кнопку "+". - Выберите только что созданный профиль из выпадающего списка. Теперь вы готовы добавлять в него правила.
Первым делом всегда лучше создавать правила для исключения ненужного контента.
- Нажмите "Добавить правило".
- Назовите правило, например,
Исключить трейлеры и обзоры. - В блоке
ЕСЛИвыберитеСодержити в конструкторе паттернов соберите шаблон[Трейлер]. - Нажмите кнопку
+рядом с конструктором, чтобы добавить еще одно условие. Выберите логический операторИЛИ. - Во втором условии соберите паттерн
[Обзор]. - В блоке
ТОвыберите действиеИсключить видео. - Сохраните правило.
Теперь, если в названии видео будет слово "Трейлер" или "Обзор", оно будет проигнорировано.
Это самое главное правило, которое будет обрабатывать стандартные названия серий.
-
Нажмите "Добавить правило" еще раз. Оно появится ниже первого.
-
Назовите его
Извлечение данных о серии (Sxx Exx). -
Блок
ЕСЛИ:- Создайте условие
Содержитсо следующим паттерном:[сезон, ] [<Число>] [серия] - Это гарантирует, что правило сработает только на названиях, где есть упоминание сезона и серии.
- Создайте условие
-
Блок
ТО: Здесь мы добавим несколько действий, нажимая+после каждого.- Действие 1:
Извлечь номер сезона. Паттерн:[сезон, ] [<Число>]. Система поймет, что число после "сезон, " — это номер сезона. - Действие 2:
Извлечь номер серии. Паттерн:[серия](можно дополнить[, ] [<Число>]). - Действие 3:
Назначить озвучку/тег. В поле для значения просто впишитеAniDub. - Действие 4:
Извлечь разрешение. Паттерн:[ [<Число>] [p] ]. Конструкция найдет число, после которого идет буква "p", и извлечет его.
- Действие 1:
-
Сохраните правило.
- Перейдите на вкладку "Шаг 3: Тестирование профиля".
- В большое текстовое поле вставьте проблемные названия, например:
Магическая битва - 2 сезон, 15 серия [1080p] [AniDub] Магическая битва - Трейлер 2 сезона - Нажмите "Запустить тест".
- Вы увидите результат: первая строка будет успешно обработана (станет зеленой) с извлеченными данными (Сезон: 2, Серия: 15, Тег: AniDub, Разрешение: 1080), а вторая будет помечена как "ИСКЛЮЧЕНО" (станет красной). Это значит, что ваш профиль работает правильно.
Логика здесь абсолютно такая же, но применяется она не к названию видео в VK, а к имени файла внутри торрента.
Цель: Научить систему правильно переименовывать файлы вида [AniLibria.TV]_Shaman_King_Flowers_-_05_[1080p].mkv.
-
Привязка профиля:
- Зайдите в статус нужного торрент-сериала.
- На вкладке "Свойства" в поле "Профиль правил" выберите тот профиль, который вы хотите использовать для переименования (можно создать новый, например, "Torrent Renaming Rules").
-
Создание правил:
- Перейдите в Настройки → Фильтры VK и выберите ваш профиль для торрентов.
- Создайте правило. Например, для файла
[AniLibria.TV]_Shaman_King_Flowers_-_05_[1080p].mkv:ЕСЛИ:Содержитпаттерн_-_ [<Число>] _[ТО(Действие 1):Извлечь номер сериис паттерном_-_ [<Число>]ТО(Действие 2):Извлечь разрешениес паттерном[ [<Число>] [p] ]ТО(Действие 3):Назначить озвучку/тегсо значениемAniLibria.
-
Тестирование:
- На вкладке тестирования есть уникальная функция для торрентов. Вместо того чтобы вставлять названия вручную, вы можете ввести
ID<номер_сериала>(например,ID13) и нажать "Получить с VK" (кнопка также работает для получения файлов из БД). - Система автоматически загрузит в поле для теста реальные имена файлов из указанного сериала в вашей базе данных.
- После этого нажмите "Запустить тест" и убедитесь, что все файлы распознаются корректно.
- На вкладке тестирования есть уникальная функция для торрентов. Вместо того чтобы вставлять названия вручную, вы можете ввести
Эта система очень гибкая. Не бойтесь экспериментировать с разными комбинациями блоков и правил, чтобы добиться идеального результата для ваших источников.
Это руководство предполагает, что вы уже создали и настроили профиль фильтров в разделе Настройки → Фильтры VK. Если вы этого еще не сделали, пожалуйста, сначала создайте профиль.
Цель: Добавить сериал с трекера (например, Anilibria или Kinozal) и привязать к нему профиль правил для будущего переименования файлов.
Шаг 1: Открытие окна добавления
На главной странице приложения нажмите большую синюю кнопку «Добавить сериал».
Шаг 2: Вставка ссылки и автоматический анализ
В открывшемся окне найдите поле «URL для парсинга». Вставьте в него полную ссылку на страницу с раздачей сериала.
Приложение автоматически начнет анализ ссылки. Вы увидите индикатор загрузки. Если ссылка корректна и трекер доступен, через несколько секунд поля ниже заполнятся автоматически.
Шаг 3: Проверка и заполнение данных
После завершения анализа проверьте автоматически заполненные поля и заполните оставшиеся:
- Название (RU) и (EN): Обычно заполняются автоматически. Проверьте их корректность.
- Путь сохранения: (Обязательно) Укажите полный путь на вашем сервере, куда будут скачиваться файлы этого сериала.
- Сезон: Обычно заполняется автоматически (по умолчанию
s01). Если на раздаче несколько сезонов или сезон не важен (например, для фильмов), поставьте галочку "Раздача содержит несколько сезонов".
Шаг 4: Выбор профиля правил (Ключевой шаг)
Найдите поле «Профиль правил». Это выпадающий список.
- Нажмите на него и выберите из списка ваш заранее созданный профиль (например, "Torrent Renaming Rules").
Именно этот профиль будет использоваться для переименования файлов этого сериала после их загрузки.
Шаг 5: Выбор качества (для некоторых трекеров)
Если вы добавляете сериал с трекера, который предлагает несколько версий раздачи (например, Anilibria или Astar.bz), ниже появится блок «Выбор качества». Выберите предпочтительные для вас версии (например, 1080p HEVC).
Шаг 6: Завершение
Нажмите кнопку «Добавить». Окно закроется, и новый сериал появится в общем списке на главной странице, готовый к первому сканированию.
Цель: Добавить сериал из группы VK и привязать к нему профиль фильтров для распознавания и обработки видео.
Шаг 1: Открытие окна добавления
Так же, как и для торрентов, нажмите кнопку «Добавить сериал».
Шаг 2: Вставка ссылки из VK
В поле «URL для парсинга» вставьте ссылку на видео из нужного вам канала VK. Система автоматически определит, что это VK-ссылка, и интерфейс изменится, показав блок "Настройки для VK Video".
- Поля «Ссылка на канал» и «Поисковые запросы» заполнятся автоматически из вставленной вами ссылки. Вы можете их скорректировать.
Шаг 3: Настройка параметров VK и сериала
- Режим поиска: Выберите "Быстрый поиск" (рекомендуется для начала) или "Полное сканирование".
- Название (RU) и (EN): (Обязательно) В отличие от торрентов, эти поля нужно заполнить вручную.
- Путь сохранения: (Обязательно) Укажите путь для загрузки файлов.
- Сезон: Если в группе выкладывают несколько сезонов вперемешку, поставьте галочку "Раздача содержит несколько сезонов". В противном случае, укажите номер сезона (например,
s01).
Шаг 4: Выбор профиля правил (Ключевой шаг)
Это самый важный шаг для VK-сериалов.
- В поле «Профиль правил» выберите ваш заранее созданный профиль для VK (например, "AniDub VK Rules").
Без правильно выбранного профиля система не сможет распознать серии в потоке видео из группы.
Ша-г 5: Завершение
Нажмите кнопку «Добавить». Сериал появится в общем списке. Теперь вы можете запустить для него сканирование, чтобы система нашла и запланировала к загрузке первые серии согласно вашим правилам.