Перейти к содержанию

Папка просмотра — Автоматический импорт мультимедиа

Watch Folder - это автоматизированная система импорта контента. Он отслеживает локальные каталоги (или пульты дистанционного управления rclone) в поисках новых видеофайлов, анализирует их названия для извлечения метаданных (название, год, сезон, серия), ищет в базе данных TMDB обложки и описания и создает записи о фильмах/сериалах в базе данных — и все это без ручного вмешательства.


как это работает

┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
│  Watch Folder    │────▶│   WatchCron       │────▶│  WatchItem       │
│  (directory on   │     │  scans for new    │     │  parses filename │
│   disk / rclone) │     │  files, filters   │     │  queries TMDB    │
│                  │     │  already imported  │     │  creates DB row  │
└──────────────────┘     └──────────────────┘     └──────────────────┘
                                                   ┌──────────────────┐
                                                   │  Bouquet update  │
                                                   │  (auto-assign    │
                                                   │   to bouquets)   │
                                                   └──────────────────┘

Шаг за шагом

  1. Администратор создает папку наблюдения в панели администратора (Папка просмотра → Добавить) или через API (create_watch_folder). Конфигурация включает в себя: путь к каталогу, тип контента (фильм/сериал), целевую категорию, букеты, настройки парсера и назначенный сервер.
  2. Задание Cron cron:watch выполняется периодически (регулируется параметром scan_offset — секунды между сканированиями). Он запрашивает таблицу watch_folders для активных папок, в которых last_run превышено смещение.
  3. Обнаружение файлов — cron использует find для локальных каталогов или rclone lsjson для облачных/удаленных подключений. Файлы фильтруются по разрешенным расширениям (по умолчанию: mp4, mkv, avi, mpg, flv, 3gp, m4v, wmv, mov, ts). Файлы, уже присутствующие в streams.stream_source, пропускаются.
  4. Проверка стабильности — файлы, измененные менее 30 секунд назад, пропускаются (чтобы избежать импорта частично загруженных файлов).
  5. Параллельная обработка — каждый новый файл отправляется команде watch_item (через shell_exec), параллельно запуская до thread_count элементов с помощью Multithread.
  6. Элемент наблюдения анализирует имя файла с помощью PTN или guessit (смотрите документацию по синтаксическому анализу ниже), преобразует метаданные с помощью TMDB API и вставляет запись в streams (для фильмов) или streams_series + streams_episodes (для сериалов).
  7. Назначение букета — импортированные элементы автоматически добавляются в настроенные букеты.

Конфигурация

Просмотр настроек папки (для каждой папки)

Установка Описание
directory Локальный путь для сканирования (например, /mnt/media/movies/)
rclone_dir удаленный путь к rclone (альтернатива локальному каталогу)
type Тип содержимого: movie или series
server_id Сервер, на котором выполняется сканирование
category_id Целевая категория для импортируемого контента
bouquets Автоматическое назначение этим букетам
fb_category_id Резервная категория (в случае сбоя в сопоставлении жанров TMDB)
fb_bouquets Резервные букеты
allowed_extensions Расширения файлов для сканирования (пустые = список по умолчанию)
language Предпочтительный язык TMDB для метаданных
active Включить/отключить эту папку

Логические параметры

Вариант Описание
disable_tmdb Пропустить поиск в TMDB — импортировать файл только с разобранным заголовком
ignore_no_match Импорт, даже если TMDB не возвращает результата
auto_subtitles Автоматическое определение .srt, .sub, .sbv файлов рядом с видео
fallback_title Используйте имя папки в качестве заголовка, если синтаксический анализатор не может ее извлечь
read_native Чтение собственного заголовка из TMDB
movie_symlink Создавайте символические ссылки вместо ссылок на исходный путь
auto_encode Автоматическое кодирование импортированного содержимого
auto_upgrade Замените существующую версию более низкого качества, если идентификатор TMDB совпадает
duplicate_tmdb Разрешить многократный импорт с одним и тем же идентификатором TMDB
ffprobe_input Запустите ffprobe в исходном файле для извлечения метаданных кодека
extract_metadata Извлечение дополнительных метаданных из файла

Глобальные настройки

Установка Где Описание
tmdb_api_key Администратор → Настройки Требуемый — Ключ API TMDB. Без него Watch не будет работать
fallback_parser Администратор → Настройки Синтаксический анализатор, используемый при сбое основного синтаксического анализатора
alternative_titles Администратор → Настройки Поиск альтернативных названий в базе данных TMDB
max_genres Администратор → Настройки Максимальное количество жанров, назначаемых для каждого элемента

Панель администратора и API

Страницы панели администратора

Страница Описание
Смотреть папку → Список Просмотр всех настроенных папок наблюдения со статусом
Посмотреть папку → Добавить Создание/редактирование папки наблюдения
Папка просмотра → Настройки Глобальные настройки просмотра (синтаксический анализатор, конфигурация TMDB)
Просмотр папки → Журналы Просмотр результатов сканирования и ошибок

Действия администратора API

Действие Описание
get_watch_folders Перечислите все папки для просмотра
get_watch_folder Получить единую папку по идентификатору
create_watch_folder Создайте новую папку наблюдения
edit_watch_folder Обновите существующую папку наблюдения
delete_watch_folder Удалить папку наблюдения
reload_watch_folder Принудительное немедленное повторное сканирование
enable_watch Включить все папки наблюдения
disable_watch Отключите все папки наблюдения
kill_watch Уничтожьте все запущенные процессы наблюдения

КЛИ

# Normal cron execution (usually triggered automatically)
sudo -u xc_vm /home/xc_vm/console.php cron:watch

# Force scan a specific folder (by ID)
sudo -u xc_vm /home/xc_vm/console.php cron:watch 5

Анализаторы

Доступны два средства анализа имен файлов. Средство анализа извлекает структурированные метаданные (название, год, сезон, эпизод, разрешение, кодек) из имени видеофайла.

Выбор синтаксического анализатора

Синтаксический анализатор Лучше всего для
PTN Simple filenames with spaces: San Andreas 2015 720p.mkv
guessit Dot-separated filenames: The.Matrix.1999.1080p.BluRay.mkv

Установите основной синтаксический анализатор для каждой папки просмотра. Глобальный параметр fallback_parser используется, когда основной синтаксический анализатор не возвращает совпадений.


1️⃣ Синтаксический анализатор PTN

PTN parser поддерживает синтаксический анализ файлов фильмов и телешоу с типичными шаблонами именования.

Фильмы

Пример файла Проанализированные данные
San Andreas 2015 720p WEB-DL x264 AAC-JYK.mkv Название: San Andreas, Год выпуска: 2015, Разрешение: 720p, Видео: x264, Аудио: AAC, Группа: JYK
The Martian 2015 540p HDRip KORSUB x264 AAC2 0-FGT.mp4 Название: "Марсианин", Год выпуска: 2015, Разрешение: 540p, Видео: x264, Аудио: AAC2.0, Группа: FGT

Телевизионные шоу

Пример файла Проанализированные данные
friends.s02e01.720p.bluray-sujaidr.mkv Название: Друзья, Сезон: 2, Серия: 1, Разрешение: 720p, Формат: bluray, Группа: sujaidr
Mr Robot S01E05 HDTV x264-KILLERS[ettv].mp4 Название: Мистер Робот, Сезон: 1, Серия: 5, Формат: HDTV, Видео: x264, Группа: KILLERS

2️⃣ синтаксический анализатор догадок

Guessit поддерживает более сложные имена файлов, включая разделители точек и многоязычные заголовки.

Фильмы

Пример файла Проанализированные данные
The.Matrix.1999.1080p.BluRay.x264.DTS-FGT.mkv Название: "Матрица", Год выпуска: 1999, Разрешение: 1080p, Видео: x264, Аудио: DTS, Группа: FGT
Inception.2010.720p.BRRip.x264.AAC-ETRG.mkv Название: Начало, Год выпуска: 2010, Разрешение: 720p, Видео: x264, Аудио: AAC, Группа: ETRG

Телевизионные шоу

Пример файла Проанализированные данные
Breaking.Bad.S03E07.720p.BluRay.x264-REWARD.mkv Название: "Во все тяжкие", Сезон: 3, Серия: 7, Разрешение: 720p, Видео: x264, Группа: REWARD
Game.of.Thrones.S05E09.1080p.WEB-DL.DD5.1.H.264-NTb.mkv Название: Игра престолов, Сезон: 5, Серия: 9, Разрешение: 1080p, Видео: H.264, Аудио: DD5.1, Группа: NTb

Возврат к имени резервной папки

Если имя файла не содержит отображаемого заголовка, включите Возврат к имени резервной папки:

Пример пути к файлу Проанализированные данные
/path/to/Show Name/S01E01 720p WEB-DL.mkv Название: Название сериала, Сезон: 1, Серия: 1
/path/to/Show.Name/S01E01.720p.WEB-DL.mkv Название: Название сериала, Сезон: 1, Серия: 1

Структура сезонных папок

Если вы хотите, чтобы эпизоды были отсортированы по папкам сезонов, имя файла должно содержать название шоу:

Пример пути к файлу Проанализированные данные
/path/to/Show Name/Season 01/Show Name S01E01 720p WEB-DL.mkv Название: Название сериала, Сезон: 1, Серия: 1
/path/to/Show.Name/Season.01/Show.Name.S01E01.720p.WEB-DL.mkv Название: Название сериала, Сезон: 1, Серия: 1

Языки RTL

Для показов на языках RTL (арабский, иврит и т.д.):

  • Имя файла не должно содержать названия шоу
  • Включить Возврат к имени резервной папки
Пример пути к файлу Проанализированные данные
/path/to/Show Name/S01E01 (year).mp4 Название: Название сериала, Сезон: 1, Серия: 1, Год выпуска: year
/path/to/Show Name/Season 01/S01E01 (year).mp4 Название: Сезон 01, Сезон: 1, Серия: 1, Год выпуска: year

❗️ Примечание: Для языков RTL название показа берется только из названия папки.


Резюме

  • Анализатор PTN — простые имена файлов, локальные форматы
  • синтаксический анализатор догадок — поддерживает имена, разделенные точками, многоязычные заголовки, возврат к имени папки
  • Языки RTL — необходимо использовать резервную копию имени папки
  • Структура сезонных папок — отображаемый заголовок должен быть в имени файла для корректной сортировки

💡 Совет: Используйте согласованные имена файлов и папок для точного анализа и автоматической сортировки по сезонам.