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