10 KiB
Autoscan - автоскан для Plex на Go
Autoscan - заменяет поведение Plex и Emby по умолчанию для обнаружения изменений в файловой системе. Autoscan интегрируется с Sonarr, Radarr, Readarr, Lidarr и Google Drive для получения изменений практически в реальном времени, не полагаясь на файловую систему.
!!! note "От автора"
Наткнулся случайно, ища как можно поправить большую нагрузку при сканировании библиотеки в **Plex**. У меня достаточно большая медиа библиотека (1500 фильмов и 30000 серий в сериалах) и во время сканирования изменений, система могла некоторое ремя чуть тормозить. Решение нашлось - **Autoscan**. Он позволяет сделать интеграцию с Sonarr и Radarr, чтобы отслеживать моменты изменения файловой системы. Таким образом, сканирование в основом производится, когда что-то добавилось. Так же скан идет только по той папке, что менялась.
Запускать будем через Docker Compose. Предпологается, что Docker уже установлен. Так же установлен Plex. Наличии Radarr и Sonarr опционально.
Образ Docker
Создаем файл docker-compose.yml
:
nano docker-compose.yml
Заполняем его:
version: "3.7"
services:
autoscan:
image: cloudb0x/autoscan
container_name: autoscan
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
ports:
- 3030:3030
volumes:
- ./autoscan:/config
- /mnt:/mnt:ro #Media Library
Запустить можно через:
docker compose up -d
Конфиг файл
По умолчанию конифг не создается, его нужно создать руками и заполнить параметрами. Ниже представлен пример. А еще ниже описание параметров. Конфиг файл находится по пути: ./autoscan/config.yml
Создадим его:
touch ./autoscan/config.yml
??? example "Полный файл конфигурации"
```yaml title="config.yml"
# <- processor ->
# override the minimum age to 30 minutes:
minimum-age: 30m
# set multiple anchor files
#anchors:
# - /mnt/unionfs/drive1.anchor
# <- triggers ->
# Protect your webhooks with authentication
authentication:
username: username
password: password
# port for Autoscan webhooks to listen on
port: 3030
triggers:
radarr:
- name: radarr # /triggers/radarr
priority: 2
sonarr:
- name: sonarr # /triggers/sonarr
priority: 2
# Rewrite the path from within the container
# to your local filesystem.
#rewrite:
# - from: /mnt/TV/
# to: /mnt/Media/TV/
targets:
plex:
- url: https://plex.domain.tld # URL of your Plex server
token: XXX # Plex API Token
#rewrite:
# - from: /mnt/ # local file system
# to: / # path accessible by the Plex docker container (if applicable)
```
Типичный конфиг файл состоит из 3 частей:
triggers
processor
targets
triggers
triggers
- входные данные для запуска автосканирования. Они переводят входящие данные в общий формат данных, называемый сканированием.
Поддерживается несколько триггеров:
- A-Train : официальный триггер Google Drive для Autoscan.
- Inotify: прослушивает изменения в файловой системе. Его не следует использовать поверх креплений RClone.
- Вручную: если вы хотите просканировать путь вручную.
- -arrs: Lidarr, Sonarr, Radarr, Readarr - через webhook
Настройка triggers
Рассмотрим более подробно настройку триггера через webhook для Sonarr и Radarr.
Чтобы добавить вебхук в Sonarr, Radarr, Readarr или Lidarr, выполните следующие действия:
- Откройте
settings
страницу в Sonarr/Radarr/Readarr/Lidarr. - Выберите вкладку
connect
- Нажмите на большой плюсик
- Выбирать
webhook
- Используйте
Autoscan
в качестве имени - Выберите
On Import
иOn Upgrade
- Задайте URL-адрес URL-адреса автосканирования и добавьте,
/triggers/:name
где имя — это имя, заданное в конфигурации триггера. - Установите имя пользователя и пароль.
- Установите события:
Rename
,On Movie Delete
илиOn Series Delete
,On Movie File Delete
илиOn Episode File Delete
??? example "Пример куска конфига"
```yaml
triggers:
radarr:
- name: radarr # /triggers/radarr
priority: 2
sonarr:
- name: sonarr # /triggers/sonarr
priority: 2
# Rewrite the path from within the container
# to your local filesystem.
#rewrite:
# - from: /mnt/TV/
# to: /mnt/Media/TV/
```
processor
Триггеры передают полученные сканы процессору. Затем процессор сохраняет сканы в свое хранилище данных. В качестве хранилища данных процессор использует SQLite.
Все отправляемые сканы в процессор группируются по одинаковой папке. Далее процессор ждет, пока все файлы в этот папке не станут старше minimum-age
, по дефолту это 10 минут.
Когда все файлы старше минимального возраста, процессор параллельно вызовет все настроенные цели, чтобы запросить сканирование папки.
Настройка processor
Настройка процессора сводится к установке минимального времени сканирования. Есть 3 параметра:
minimum-age
- сколько времени пройдет после триггераscan-delay
- задержка между процессами сканированияscan-stats
- вывод статистики
...
# override the minimum age to 30 minutes:
minimum-age: 30m
# override the delay between processed scans:
# defaults to 5 seconds
scan-delay: 15s
# override the interval scan stats are displayed:
# defaults to 1 hour / 0s to disable
scan-stats: 1m
...
В minimum-age
полях scan-delay
и scan-stats
должна быть указана строка в следующем формате:
1s
если минимальный возраст должен быть установлен на 1 секунду.5m
если минимальный возраст должен быть установлен на 5 минут.1m30s
если минимальный возраст должен быть установлен на 1 минуту и 30 секунд.1h
если минимальный возраст должен быть установлен на 1 час.
targets
targets - это конечный путь, куда будет сгружаться вся информация по изменениям. Сгружать можно в:
- Plex
- Emby
- Jellyfin
- Autoscan
Настройка targets
Рассмотрим выгрузку в Plex. Autoscan заменяет стандартную джобу Plex по автоматическому обновлению библиотеки Plex. Поэтому лучше отключить параметр Update my library automatically
Можно настроить одну или несколько целей Plex в конфигурации:
...
targets:
plex:
- url: https://plex.domain.tld # URL of your Plex server
token: XXXX # Plex API Token
rewrite:
- from: /mnt/Media/ # local file system
to: /data/ # path accessible by the Plex docker container (if applicable)
...
В конфигурации следует обратить внимание на пару вещей:
url
. URL-адрес может напрямую ссылаться на контейнер докеров, локальный хост или обратный прокси-сервер, расположенный перед Plex.token
. Нам нужен токен Plex API, чтобы делать запросы от вашего имени. Эта статья должна вам помочь.rewrite
. Если Plex работает не в хостовой ОС, а в Docker-контейнере (или в Docker-контейнере работает Autoscan), то необходимо соответствующим образом переписать пути.