Files
XC_VM/docs/ru/info/watch_folder.md
T
Divarion_D dbf535bcc5 docs(translate): robust {N} sentinels + possessive handling; regenerate ru
Fix Markdown-mangling artifacts the free web engine (yandex) produced in the
committed docs/ru, and regenerate the whole tree cleanly (0 fallbacks):

- Sentinel format @@N@@ -> {N}. MT engines are trained to preserve curly
  format-string placeholders, so {N} survives code-heavy lines where @@N@@ (and
  ZZZ…ZZZ, which also duplicated its Z) were split/moved — e.g. the stray
  "@0@@" in the FAQ and "load balancerZ" in the README are gone.
- Possessive: a trailing English `'s` is consumed INTO the masked span and
  dropped on restore. Every sentinel format breaks when a bare `'s` sits right
  after it, and Russian has no possessive `'s`.
- Validate + retry: after restore, any leftover brace fragment triggers a retry
  (the engine is non-deterministic); after a few failures the line stays English
  so a broken token is never emitted.
- Glossary += KeyDB, yt-dlp, Ubuntu, iptables, MAGSCAN.

Regenerated docs/ru (37 files, translators/yandex): no residual sentinels,
mkdocs build --strict clean.
2026-08-21 16:31:01 +03:00

17 KiB

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

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. WatchItem анализирует имя файла с помощью 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
** угадать** 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 (арабский, иврит и т.д.):

  • Имя файла НЕ должно содержать заголовка show
  • Включить ** Резервное копирование к имени папки**
Пример пути к файлу Проанализированные данные
/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 — простые имена файлов, локальные форматы
  • ** синтаксический анализатор guessit ** — поддерживает имена, разделенные точками, многоязычные заголовки, возврат к имени папки
  • Языки RTL — необходимо использовать резервную копию имени папки
  • **Структура папок сезона ** — для правильной сортировки в имени файла должно быть указано название показа

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