Нравится это приложение? Спасибо за оценку ⭐️
Деклуттарр
Оглавление
- Обзор
- Зависимости, подсказки и часто задаваемые вопросы
- Начиная
- Пояснения к настройкам
- Кредиты
- Отказ от ответственности
Обзор
Decluttarr сохраняет очереди радара, сонара, лидарра, чтения и виспарра без зависаний/избыточных загрузок.
Обзор функций:
- Автоматически удалять загрузки, которые зависли при загрузке метаданных (и запускать загрузку из другого источника).
- Автоматически удалять неудачные загрузки (и запускать загрузку из другого источника)
- Автоматически удалять загрузки, принадлежащие радару/сонару/и т. д. элементы, которые были удалены за это время («Бесхозные загрузки»)
- Автоматически удалять зависшие загрузки после того, как они были обнаружены зависшими несколько раз подряд (и запускать загрузку из другого источника).
- Автоматически удалять медленные загрузки после того, как они были обнаружены медленными несколько раз подряд (и запускать загрузку из другого источника).
- Автоматически удалять загрузки, принадлежащие радару/сонару/и т. д. предметы, которые не контролируются
- Автоматически удалять загрузки, которые не удалось импортировать, поскольку они не являются обновлением формата (т. е. уже существует лучшая версия).
Вы можете запустить это локально, запустив main.py или вытащив образ докера. Вы можете найти образец docker-compose.yml в папке docker.
Зависимости, подсказки и часто задаваемые вопросы
- Используйте Sonarr v4 и Radarr v5 (тег «ночной» вместо «последний»), иначе некоторые функции могут работать некорректно.
- qBittorrent рекомендуется, но не обязателен. Если вы не используете qBittorrent, вы столкнетесь со следующими ограничениями:
- При обнаружении медленной загрузки будут использоваться скорости, предоставляемые приложениями *arr, что менее точно, чем то, что возвращает qBittorrent при прямом запросе.
- Не работает функция, позволяющая защитить загрузки от удаления (NO_STALLED_REMOVAL_QBIT_TAG).
- Функция игнорирования частных трекеров не работает.
- Если вы видите странные ошибки, такие как «найдено 10 или 3 раза», рассмотрите возможность включения настройки «Отклонять хэши торрентов из черного списка при захвате». В ночных Radarr/Sonarr/Readarr/Lidarr/Whisparr этот параметр находится в разделе «Настройки/Индексаторы» в дополнительных параметрах каждого индексатора, в Prowlarr он находится в разделе «Настройки/Приложения», а затем в расширенных настройках соответствующего приложения.
- При удалении битых торрентов принадлежащие им файлы удаляются.
- Для всех типов удаления: новая загрузка из другого источника автоматически добавляется радаром/sonarr/lidarr/readarr/whisparr (если доступно).
- Если вы используете qBittorrent и ни один из ваших торрентов не удаляется, а подробные журналы сообщают, что все торренты защищены NO_STALLED_REMOVAL_QBIT_TAG, даже если это не так, возможно, вы используете версию qBittorrent, у которой есть проблемы с вызовами API, и вы можете рассмотреть возможность перехода на нее. в другой образ qBit (см. №56)
- В настоящее время приложения «*Arr» поддерживаются только на английском языке. Дополнительную информацию см. в выпуске № 132.
- Если у вас возникли проблемы с yaml, пожалуйста, проверьте закрытые проблемы. Обозначения разные, и вполне может быть, что найденная вами проблема уже решена в одном из выпусков. Как только вы поймете свою проблему, не стесняйтесь публиковать свой yaml, чтобы помочь другим, здесь: #173.
- declutarr поддерживает только отдельные экземпляры радара/сонара. Если у вас есть несколько экземпляров этих *arrs, решение состоит в том, чтобы также запустить несколько declutarrs.
Начиная
Есть два способа запустить это:
- В качестве докер-контейнера с помощью docker-compose
- Клонируя репозиторий и запустив скрипт вручную
Оба способа описаны ниже, а ниже приведены объяснения различных настроек.
Способ 1: Докер
- Создайте файл
docker-compose.yml
- Используйте следующее в качестве основы и настройте параметры в соответствии со своими потребностями.
version: "3.3"
services:
decluttarr:
image: ghcr.io/manimatter/decluttarr:latest
container_name: decluttarr
restart: always
environment:
TZ=Europe/Zurich
PUID=1000
PGID=1000
## General
# TEST_RUN=True
# SSL_VERIFICATION=False
LOG_LEVEL: INFO
## Features
REMOVE_TIMER: 10
REMOVE_FAILED: True
REMOVE_FAILED_IMPORTS: True
REMOVE_METADATA_MISSING: True
REMOVE_MISSING_FILES: True
REMOVE_ORPHANS: True
REMOVE_SLOW: True
REMOVE_STALLED: True
REMOVE_UNMONITORED: True
RUN_PERIODIC_RESCANS: '
{
"SONARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7},
"RADARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7}
}'
# Feature Settings
PERMITTED_ATTEMPTS: 3
NO_STALLED_REMOVAL_QBIT_TAG: Don't Kill
REMOVE_SLOW: True
MIN_DOWNLOAD_SPEED: 100
FAILED_IMPORT_MESSAGE_PATTERNS: '
[
"Not a Custom Format upgrade for existing",
"Not an upgrade for existing"
]'
## Radarr
RADARR_URL: http://radarr:7878
RADARR_KEY: $RADARR_API_KEY
## Sonarr
SONARR_URL: http://sonarr:8989
SONARR_KEY: $SONARR_API_KEY
## Lidarr
LIDARR_URL=http://lidarr:8686
LIDARR_KEY=$LIDARR_API_KEY
## Readarr
READARR_URL=http://readarr:8787
READARR_KEY=$READARR_API_KEY
## Whisparr
WHISPARR_URL=http://whisparr:6969
WHISPARR_KEY=$WHISPARR_API_KEY
## qBitorrent
QBITTORRENT_URL: http://qbittorrent:8080
# QBITTORRENT_USERNAME=Your name
# QBITTORRENT_PASSWORD=Your password
- Запустите
docker-compose up -d
в каталоге, где находится файл, чтобы создать контейнер Docker. Примечание. Всегда загружайте « последнюю » версию. Версия «dev» предназначена только для тестирования, и ее следует использовать только при написании кода или поддержке с исправлением ошибок.
Способ 2. Запуск вручную.
- Клонируйте репозиторий с помощью
git clone -b main https://github.com/ManiMatter/decluttarr.git
- Переименуйте файл
config.conf-Example
внутри папки конфигурации в config.conf
- Настройте
config.conf
в соответствии с вашими потребностями. - Установите библиотеки, перечисленные в файле docker/requirements.txt (pip install -r require.txt).
- Запустите скрипт с помощью
python3 main.py
Примечание. config.conf
игнорируется при запуске через docker-compose.yml.
Пояснения к настройкам
Общие настройки
Настраивает общее поведение приложения (для всех функций)
ЛОГ_УРОВЕНЬ
- Устанавливает уровень, на котором будет происходить ведение журнала.
-
INFO
будет отображать только изменения, примененные к радару/сонару/лидарру/ридарру/виспарру. -
VERBOSE
показывает каждую выполняемую проверку, даже если никакие изменения не применяются. -
DEBUG
показывает очень подробную информацию, необходимую только для отладки. - Тип: Строка
- Допустимые значения: КРИТИЧЕСКИЙ, ОШИБКА, ПРЕДУПРЕЖДЕНИЕ, ИНФОРМАЦИЯ, ПОДРОБНЫЙ, ОТЛАДКА.
- Обязательно: Нет (по умолчанию INFO)
TEST_RUN
- Позволяет безопасно опробовать этот инструмент. Если активно, загрузки не будут удалены.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
SSL_ВЕРИФИКАЦИЯ
- Включает или отключает проверку сертификата SSL для всех вызовов API.
-
True
означает, что проверка сертификата SSL включена. - Предупреждение. Важно отметить, что отключение проверки SSL может иметь последствия для безопасности, поскольку делает систему уязвимой для атак «человек посередине». Это следует делать только в контролируемой и безопасной среде, где риски хорошо понимаются и минимизируются.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — True)
Настройки функций
Управляет типом очистки, применяемым к очереди загрузок.
REMOVE_TIMER
- Устанавливает частоту проверки очереди на наличие потерянных и остановившихся загрузок.
- Тип: Целое число
- Единица: Минуты
- Обязательно: Нет (по умолчанию 10)
REMOVE_FAILED
- Управляет удалением из очереди неудачных загрузок без подключений.
- Эти загрузки не добавляются в черный список — новая загрузка из другого источника автоматически добавляется радаром/sonarr/lidarr/readarr/whisparr (если доступно)
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_FAILED_IMPORTS
- Управляет удалением из очереди загрузок, которые не удалось импортировать.
- Это может произойти, например, если уже существует лучшая версия.
- Примечание. Импорт считается неудачным, только если сообщение об импорте содержит предупреждение, указанное в FAILED_IMPORT_MESSAGE_PATTERNS (см. ниже).
- Эти загрузки добавляются в черный список.
- Если для параметра IGNORE_PRIVATE_TRACKERS установлено значение true, а затронутый торрент является частным трекером, элемент очереди будет удален, но торрент-файлы сохранятся.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_METADATA_MISSING
- Управляет удалением из очереди загрузок, зависших при получении метаданных.
- Эти загрузки добавляются в черный список, чтобы их не запрашивали повторно.
- Новая загрузка из другого источника автоматически добавляется радаром/sonarr/lidarr/readarr/whisparr (если доступно)
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_MISSING_FILES
- Управляет удалением из очереди загрузок с предупреждением «Файлы отсутствуют».
- Эти загрузки не добавляются в черный список.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_ORPHANS
- Управляет удалением бесхозных загрузок из очереди.
- Бесхозные загрузки — это те, которые больше не принадлежат ни одному запрошенному носителю (поскольку носитель был удален из радара/сонарри/лидарра/readarr/whisparr после начала загрузки)
- Эти загрузки не добавляются в черный список.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_SLOW
- Управляет удалением медленных загрузок из очереди.
- Медленные загрузки добавляются в черный список, чтобы их не запрашивали повторно в будущем.
- Примечание. Не относится к загрузкам через Usenet (поскольку пользователи платят за определенную скорость, замедления быть не должно).
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_STALLED
- Управляет удалением из очереди остановленных загрузок без подключений.
- Эти загрузки добавляются в черный список, чтобы их не запрашивали повторно в будущем.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
REMOVE_UNMONITORED
- Управляет удалением из очереди загрузок, принадлежащих неотслеживаемым носителям.
- Примечание. Будет удалено из очереди только в том случае, если все телешоу, зависящие от одной и той же загрузки, не отслеживаются.
- Эти загрузки не добавляются в черный список.
- Примечание. Поскольку sonarr не поддерживает многосезонные пакеты, если вы их загружаете, вам следует защитить их с помощью
NO_STALLED_REMOVAL_QBIT_TAG
, что описано ниже. - Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — False)
RUN_PERIODIC_RESCANS
- Управляет автоматическим поиском элементов, которые отсутствуют или еще не достигли порогового значения.
- Примечание. В настоящее время поддерживается только Radarr/Sonarr (Lidarr в зависимости от: Lidarr/Lidarr#5084 / Readarr в зависимости от: Readarr/Readarr#3724)
- Тип: Словарь
- Обязательно: нет (по умолчанию автоматический поиск не запускается)
- «SONARR»/«RADARR» включает автоматический поиск соответствующих экземпляров.
- "MISSING"/"CUTOFF_UNMET" включает автоматический поиск нужных предметов (по умолчанию True)
- «MAX_CONCURRENT_SCANS» определяет максимальное количество элементов, которые будут искаться при каждом сканировании. Это значение определяет, сколько элементов обрабатывается за одну операцию поиска, которая происходит в соответствии с интервалом, установленным REMOVE_TIMER.
- Примечание. Ограничение указано для списка разыскиваемых. Таким образом, если и Radarr, и Sonarr настроены на автоматический поиск как отсутствующих, так и отключенных неудовлетворенных элементов, фактическое количество может в четыре раза превышать MAX_CONCURRENT_SCANS.
- «MIN_DAYS_BEFORE_RESCAN» определяет количество дней, которые должны пройти, прежде чем элемент снова будет рассмотрен для сканирования.
- Примечание. RUN_PERIODIC_RESCANS всегда будет искать те элементы, которые искались дольше всего.
RUN_PERIODIC_RESCANS: '
{
"SONARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7},
"RADARR": {"MISSING": true, "CUTOFF_UNMET": true, "MAX_CONCURRENT_SCANS": 3, "MIN_DAYS_BEFORE_RESCAN": 7}
}'
Существуют разные нотации yaml, некоторые пользователи предложили альтернативную нотацию ниже. Если у вас возникли проблемы, сначала проверьте закрытые проблемы, прежде чем открывать новую (например, № 173).
- RUN_PERIODIC_RESCANS=[
{
"SONARR":[{"MISSING":true, "CUTOFF_UNMET":true, "MAX_CONCURRENT_SCANS":3, "MIN_DAYS_BEFORE_RESCAN":7}],
"RADARR":[{"MISSING":true, "CUTOFF_UNMET":true, "MAX_CONCURRENT_SCANS":3, "MIN_DAYS_BEFORE_RESCAN":7}]
}
MIN_DOWNLOAD_SPEED
- Устанавливает минимальную скорость загрузки для активных загрузок.
- Если увеличение размера загруженного файла при загрузке меньше этого значения между двумя последовательными проверками, загрузка считается медленной и удаляется, если происходит чаще, чем разрешено.
- Тип: Целое число
- Единица измерения: Кбайт в секунду.
- Обязательно: нет (по умолчанию 100, но применяется только в том случае, если для параметра REMOVE_SLOW установлено значение true)
PERMITTED_ATTEMPTS
- Определяет, сколько раз загрузка должна быть обнаружена как остановленная, медленная или зависшая загрузка метаданных, прежде чем она будет удалена.
- Тип: Целое число
- Единица измерения: количество сканирований
- Обязательно: Нет (по умолчанию 3)
NO_STALLED_REMOVAL_QBIT_TAG
- Загрузки в qBittorrent, помеченные этим тегом, не будут удалены.
- Функция недоступна, если qBittorrent не используется в качестве торрент-менеджера.
- Применяется ко всем типам удаления (т.е. decluttarr ничего не удаляет автоматически)
- Примечание. Вы можете попробовать «принудительную перепроверку», чтобы вручную восстановить и запустить застрявшие торренты.
- Тег автоматически создается в qBittorrent (требуемый qBittorrent доступен по
QBITTORRENT_URL
) - Важно: также защищает от удаления неотслеживаемые загрузки (актуально для многосезонных пакетов).
- Тип: Строка
- Обязательно: Нет (по умолчанию
Don't Kill
»)
IGNORE_PRIVATE_TRACKERS
- Частные торренты в qBittorrent не будут удалены из очереди, если для этого параметра установлено значение true.
- Работает только если используется qBittorrent (не работает с передачей и т.д.)
- Применяется ко всем типам удаления (т.е. decluttarr ничего не удаляет автоматически); единственным исключением является REMOVE_NO_FORMAT_UPGRADE, где для приватных трекеров элемент очереди удаляется (но торрент-файлы сохраняются)
- Примечание. Вы можете попробовать «принудительную перепроверку», чтобы вручную восстановить и запустить застрявшие торренты.
- Тип: Логический
- Допустимые значения: True, False.
- Обязательно: Нет (по умолчанию — True)
FAILED_IMPORT_MESSAGE_PATTERNS
- Работает вместе с REMOVE_FAILED_IMPORTS (актуально, только если этот параметр равен true)
- Определяет шаблоны, на основе которых инструмент решает, следует ли считать завершенную загрузку с предупреждениями об импорте неудачной.
- Элементы очереди считаются неудачными, если какой-либо из указанных шаблонов содержится в одном из сообщений элемента очереди.
- Примечание. Если оставить пустым (или не указать), любой такой ожидающий импорт с предупреждением считается неудачным.
- Тип: Список
- Рекомендуемые значения: ["Не является обновлением пользовательского формата для существующих", "Не является обновлением для существующих"]
- Обязательно: Нет (по умолчанию [], что означает, что все сообщения являются неудачными)
Раздел радара
Определяет экземпляр радара, в котором следует очистить очередь загрузки.
RADARR_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, этот экземпляр не будет отслеживаться.
РАДАRR_KEY
Раздел эхолота
Определяет экземпляр sonarr, в котором очередь загрузки должна быть очищена.
SONARR_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, этот экземпляр не будет отслеживаться.
СОНАРР_КЛЮЧ
Лидарр раздел
Определяет экземпляр лидарра, в котором следует очистить очередь загрузки.
LIDARR_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, этот экземпляр не будет отслеживаться.
ЛИДАРР_КЛЮЧ
Читать раздел
Определяет экземпляр readarr, в котором очередь загрузки должна быть очищена.
READARR_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, этот экземпляр не будет отслеживаться.
READARR_KEY
Раздел Уиспарр
Определяет экземпляр Whisparr, на котором следует очистить очередь загрузки.
WHISPARR_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, этот экземпляр не будет отслеживаться.
WHISPARR_KEY
- Ваш API-ключ для Whisparr
Раздел qBittorrent
Определяет настройки для подключения к qBittorrent. Если используется другой торрент-менеджер, закомментируйте этот раздел (см. выше ограничения функциональности, вытекающие из этого)
QBITTORRENT_URL
- URL-адрес, по которому можно получить доступ к экземпляру
- Если не определено, NO_STALLED_REMOVAL_QBIT_TAG не действует.
QBITTORRENT_USERNAME
- Имя пользователя, используемое для входа в qBittorrent
- Необязательный; не требуется, если включен обход аутентификации на qBittorrent (например, для локальных подключений)
QBITTORRENT_PASSWORD
- Пароль, используемый для входа в qBittorrent
- Необязательный; не требуется, если включен обход аутентификации на qBittorrent (например, для локальных подключений)
Кредиты
- Скрипт для обнаружения остановленных загрузок, расширенный кодом MattDGTL/sonarr-radarr-queue-cleaner
- Скрипт для чтения конфигурации, расширенной кодом с помощью syncarr/syncarr
- Команде SONARR/RADARR и участникам за отличный продукт, документацию по API и рекомендации на их канале Discord.
- Особая благодарность им за добавление дополнительного флага в их API, который позволил этому скрипту обнаруживать зависания загрузок при поиске метаданных.
- craggles17 для совместимости с руками
- Fxsch для улучшенной документации / ReadMe
Отказ от ответственности
На этот скрипт не распространяется никакая гарантия, и вы используете его на свой страх и риск.