Gostou deste aplicativo? Obrigado por dar um ⭐️
Declutar
Índice
- Visão geral
- Dependências, dicas e perguntas frequentes
- Começando
- Explicação das configurações
- Créditos
- Isenção de responsabilidade
Visão geral
Decluttarr mantém a fila radarr & sonarr & lidarr & readarr & whisparr livre de downloads paralisados/redundantes
Visão geral dos recursos:
- Exclua automaticamente downloads que estão travados no download de metadados (e acione o download de outra fonte)
- Exclua automaticamente downloads com falha (e acione download de outra fonte)
- Exclua automaticamente downloads pertencentes a radarr/sonarr/etc. itens que foram excluídos entretanto ('Downloads órfãos')
- Exclua automaticamente downloads paralisados, depois que eles forem paralisados várias vezes seguidas (e acione o download de outra fonte)
- Exclua automaticamente downloads lentos, depois que eles forem considerados lentos várias vezes seguidas (e acione o download de outra fonte)
- Exclua automaticamente downloads pertencentes a radarr/sonarr/etc. itens que não são monitorados
- Exclua automaticamente downloads que falharam na importação, pois não são uma atualização de formato (ou seja, uma versão melhor já está presente)
Você pode executar isso localmente iniciando main.py ou puxando a imagem do docker. Você pode encontrar um exemplo docker-compose.yml na pasta docker.
Dependências, dicas e perguntas frequentes
- Use Sonarr v4 e Radarr v5 (atualmente tag 'nightly' em vez de 'latest'), caso contrário, alguns recursos podem não funcionar corretamente
- qBittorrent é recomendado, mas não obrigatório. Se você não usar qBittorrent, enfrentará as seguintes limitações:
- Ao detectar downloads lentos, serão usadas as velocidades fornecidas pelos aplicativos *arr, o que é menos preciso do que o qBittorrent retorna quando consultado diretamente
- O recurso que permite proteger downloads contra remoção (NO_STALLED_REMOVAL_QBIT_TAG) não funciona
- O recurso que ignora rastreadores privados não funciona
- Se você encontrar erros estranhos como "encontrado 10/3 vezes", considere ativar a configuração "Rejeitar hashes de torrent na lista de bloqueio durante a captura". No Radarr/Sonarr/Readarr/Lidarr/Whisparr noturno, a opção está localizada em configurações/indexadores nas opções avançadas de cada indexador, no Prowlarr está em configurações/aplicativos e depois nas configurações avançadas do respectivo aplicativo
- Quando torrents corrompidos são removidos, os arquivos pertencentes a eles são excluídos
- Em todos os tipos de remoção: um novo download de outra fonte é adicionado automaticamente por radarr/sonarr/lidarr/readarr/whisparr (se disponível)
- Se você usar qBittorrent e nenhum de seus torrents for removido e os logs detalhados informarem que todos os torrents estão protegidos pelo NO_STALLED_REMOVAL_QBIT_TAG mesmo que não sejam, você pode estar usando uma versão qBittorrent que tem problemas com chamadas de API e você pode querer considerar a troca para uma imagem qBit diferente (veja #56)
- Atualmente, os aplicativos “*Arr” são suportados apenas em inglês. Consulte a edição nº 132 para obter mais detalhes
- Se você tiver problemas com o yaml, verifique os problemas encerrados. Existem notações diferentes e pode muito bem ser que o problema que você encontrou já tenha sido resolvido em um dos problemas. Depois de descobrir seu problema, sinta-se à vontade para postar seu yaml para ajudar outras pessoas aqui: #173
- declutarr suporta apenas instâncias únicas de radarr/sonarr. Se você tiver várias instâncias desses *arrs, a solução é executar vários decluclutarrs também
Começando
Existem duas maneiras de executar isso:
- Como um contêiner docker com docker-compose
- Clonando o repositório e executando o script manualmente
Ambas as formas são explicadas abaixo e há uma explicação para as diferentes configurações abaixo
Método 1: Docker
- Faça um arquivo
docker-compose.yml
- Use o seguinte como base para isso e ajuste as configurações de acordo com suas necessidades
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
- Execute
docker-compose up -d
no diretório onde o arquivo está localizado para criar o contêiner do docker. Nota: Sempre extraia a versão " mais recente ". A versão "dev" é apenas para teste e só deve ser extraída ao contribuir com código ou oferecer suporte com correções de bugs
Método 2: executando manualmente
- Clone o repositório com
git clone -b main https://github.com/ManiMatter/decluttarr.git
- Renomeie o
config.conf-Example
dentro da pasta config para config.conf
- Ajuste
config.conf
de acordo com suas necessidades - Instale as bibliotecas listadas em docker/requirements.txt (pip install -r requisitos.txt)
- Execute o script com
python3 main.py
Nota: O config.conf
é desconsiderado ao executar via docker-compose.yml
Explicação das configurações
Configurações gerais
Configura o comportamento geral do aplicativo (em todos os recursos)
LOG_LEVEL
- Define o nível em que o registro ocorrerá
-
INFO
mostrará apenas as alterações aplicadas a radarr/sonarr/lidarr/readarr/whisparr -
VERBOSE
mostra cada verificação sendo realizada mesmo que nenhuma alteração seja aplicada -
DEBUG
mostra informações muito granulares, necessárias apenas para depuração - Tipo: Corda
- Valores permitidos: CRÍTICO, ERRO, AVISO, INFO, VERBOSE, DEBUG
- É obrigatório: Não (o padrão é INFO)
TEST_RUN
- Permite que você experimente esta ferramenta com segurança. Se estiver ativo, os downloads não serão removidos
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
SSL_VERIFICAÇÃO
- Ativa ou desativa a verificação do certificado SSL para todas as chamadas de API
-
True
significa que a verificação do certificado SSL está ativada - Aviso: é importante observar que desabilitar a verificação SSL pode ter implicações de segurança, pois torna o sistema vulnerável a ataques man-in-the-middle. Só deve ser feito em um ambiente controlado e seguro, onde os riscos sejam bem compreendidos e mitigados.
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é True)
Configurações de recursos
Orienta qual tipo de limpeza é aplicada à fila de downloads
REMOVE_TIMER
- Define a frequência com que a fila é verificada em busca de downloads órfãos e paralisados
- Tipo: Inteiro
- Unidade: Minutos
- É obrigatório: Não (o padrão é 10)
REMOVE_FAILED
- Orienta se downloads com falha sem conexões são removidos da fila
- Esses downloads não são adicionados à lista de bloqueio - Um novo download de outra fonte é adicionado automaticamente por radarr/sonarr/lidarr/readarr/whisparr (se disponível)
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_FAILED_IMPORTS
- Orienta se os downloads que falharam na importação serão removidos da fila
- Isto pode acontecer, por exemplo, quando uma versão melhor já está presente
- Nota: Considera que uma importação falhou apenas se a mensagem de importação contiver um aviso listado em FAILED_IMPORT_MESSAGE_PATTERNS (veja abaixo)
- Esses downloads são adicionados à lista de bloqueio
- Se a configuração IGNORE_PRIVATE_TRACKERS for verdadeira e o torrent afetado for um rastreador privado, o item da fila será removido, mas os arquivos do torrent serão mantidos
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_METADATA_MISSING
- Orienta se os downloads travados na obtenção de metadados são removidos da fila
- Esses downloads são adicionados à lista de bloqueio, para que não sejam solicitados novamente
- Um novo download de outra fonte é adicionado automaticamente por radarr/sonarr/lidarr/readarr/whisparr (se disponível)
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_MISSING_FILES
- Orienta se os downloads que possuem o aviso "Arquivos ausentes" serão removidos da fila
- Esses downloads não são adicionados à lista de bloqueio
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_ORPHANS
- Orienta se os downloads órfãos são removidos da fila
- Downloads órfãos são aqueles que não pertencem mais a nenhuma mídia solicitada (já que a mídia foi removida do radarr/sonarr/lidarr/readarr/whisparr após o início do download)
- Esses downloads não são adicionados à lista de bloqueio
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_SLOW
- Orienta se downloads lentos são removidos da fila
- Downloads lentos são adicionados à lista de bloqueio, para que não sejam solicitados novamente no futuro
- Nota: Não se aplica a downloads da Usenet (como lá os usuários pagam por determinada velocidade, não deve ocorrer lentidão)
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_STALLED
- Orienta se downloads paralisados sem conexões são removidos da fila
- Esses downloads são adicionados à lista de bloqueio, para que não sejam solicitados novamente no futuro
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
REMOVE_UNMONITORED
- Orienta se os downloads pertencentes a mídias não monitoradas são removidos da fila
- Observação: só será removido da fila se todos os programas de TV que dependem do mesmo download não forem monitorados
- Esses downloads não são adicionados à lista de bloqueio
- Nota: Como o sonarr não suporta pacotes multi-temporada, se você baixar um você deve protegê-lo com
NO_STALLED_REMOVAL_QBIT_TAG
que é explicado mais abaixo - Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é falso)
RUN_PERIODIC_RESCANS
- Orienta se as pesquisas são acionadas automaticamente para itens que estão faltando ou que ainda não atingiram o limite
- Nota: atualmente suporta apenas Radarr/Sonarr (Lidarr dependendo de: Lidarr/Lidarr#5084 / Readarr Dependendo de: Readarr/Readarr#3724)
- Tipo: Dicionário
- É obrigatório: Não (o padrão é que nenhuma pesquisa seja acionada automaticamente)
- "SONARR"/"RADARR" ativa as buscas automáticas das respectivas instâncias
- "MISSING"/"CUTOFF_UNMET" ativa a busca automática pelos itens desejados (o padrão é True)
- "MAX_CONCURRENT_SCANS" especifica o número máximo de itens a serem pesquisados em cada varredura. Este valor determina quantos itens são processados por operação de busca, que ocorre de acordo com o intervalo definido pelo REMOVE_TIMER.
- Nota: O limite é por lista de procurados. Assim, se o Radarr e o Sonarr estiverem configurados para pesquisas automáticas, tanto para itens ausentes quanto para itens de corte não atendidos, a contagem real poderá ser quatro vezes maior que MAX_CONCURRENT_SCANS
- "MIN_DAYS_BEFORE_RESCAN" indica os dias que precisam passar antes que um item seja considerado novamente para uma verificação
- Nota: RUN_PERIODIC_RESCANS sempre pesquisará os itens que foram pesquisados há mais tempo
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}
}'
Existem diferentes notações yaml, alguns usuários sugeriram a notação alternativa abaixo. Se você enfrentar problemas, verifique primeiro os problemas encerrados antes de abrir um novo (por exemplo, # 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
- Define a velocidade mínima de download para downloads ativos
- Se o aumento no tamanho do arquivo baixado de um download for menor que esse valor entre duas verificações consecutivas, o download será considerado lento e será removido se acontecer com mais frequência do que as tentativas permitidas
- Tipo: Inteiro
- Unidade: KBytes por segundo
- É obrigatório: Não (o padrão é 100, mas só é aplicado quando "REMOVE_SLOW" for verdadeiro)
PERMITTED_ATTEMPTS
- Define quantas vezes um download deve ser detectado como travado, lento ou travado no download de metadados antes de ser removido
- Tipo: Inteiro
- Unidade: Número de varreduras
- É obrigatório: Não (o padrão é 3)
NO_STALLED_REMOVAL_QBIT_TAG
- Downloads em qBittorrent marcados com esta tag não serão removidos
- O recurso não está disponível quando não se usa qBittorrent como gerenciador de torrents
- Aplica-se a todos os tipos de remoção (ou seja, nada será removido automaticamente pelo decluttarr)
- Observação: você pode tentar "forçar nova verificação" para fazer com que seus torrents travados voltem a funcionar manualmente
- A tag é criada automaticamente em qBittorrent (o qBittorrent obrigatório pode ser acessado em
QBITTORRENT_URL
) - Importante: também protege downloads não monitorados contra remoção (relevante para pacotes de várias temporadas)
- Tipo: Corda
- É obrigatório: Não (o padrão é
Don't Kill
)
IGNORE_PRIVATE_TRACKERS
- Torrents privados em qBittorrent não serão removidos da fila se estiver definido como verdadeiro
- Só funciona se qBittorrent for usado (não funciona com transmissão etc.)
- Aplica-se a todos os tipos de remoção (ou seja, nada será removido automaticamente pelo decluttarr); a única exceção é REMOVE_NO_FORMAT_UPGRADE, onde para rastreadores privados o item da fila é removido (mas os arquivos torrent são mantidos)
- Observação: você pode tentar "forçar nova verificação" para fazer com que seus torrents travados voltem a funcionar manualmente
- Tipo: Booleano
- Valores permitidos: Verdadeiro, Falso
- É obrigatório: Não (o padrão é True)
FAILED_IMPORT_MESSAGE_PATTERNS
- Funciona em conjunto com REMOVE_FAILED_IMPORTS (relevante apenas se esta configuração for verdadeira)
- Define os padrões com base nos quais a ferramenta decide se um download concluído que contém avisos na importação deve ser considerado como falhado
- Os itens da fila são considerados com falha se algum dos padrões especificados estiver contido em uma das mensagens do item da fila
- Nota: Se deixado em branco (ou não especificado), qualquer importação pendente com aviso será considerada falhada
- Tipo: Lista
- Valores recomendados: ["Não é uma atualização de formato personalizado para existente", "Não é uma atualização para existente"]
- É obrigatório: Não (o padrão é [], o que significa que todas as mensagens são falhas)
Seção Radar
Define a instância do radarr na qual a fila de download deve ser organizada
RADARR_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, esta instância não será monitorada
RADARR_KEY
- Sua chave API para radarr
Seção Sonar
Define a instância do sonarr na qual a fila de download deve ser organizada
SONARR_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, esta instância não será monitorada
SONARR_KEY
- Sua chave de API para sonarr
Seção Lidarr
Define a instância lidarr na qual a fila de download deve ser organizada
LIDARR_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, esta instância não será monitorada
LIDARR_KEY
- Sua chave API para lidarr
Seção Readarr
Define a instância readarr na qual a fila de download deve ser organizada
READARR_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, esta instância não será monitorada
READARR_KEY
- Sua chave de API para readarr
Seção Whisparr
Define a instância do Whisparr na qual a fila de download deve ser organizada
WHISPARR_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, esta instância não será monitorada
WHISPARR_KEY
- Sua chave API para Whisparr
Seção qBittorrent
Define configurações para conectar com qBittorrent Se um gerenciador de torrent diferente for usado, comente esta seção (veja acima as limitações de funcionalidade que surgem disso)
QBITTORRENT_URL
- URL sob o qual a instância pode ser acessada
- Se não for definido, NO_STALLED_REMOVAL_QBIT_TAG não terá efeito
QBITTORRENT_USERNAME
- Nome de usuário usado para fazer login no qBittorrent
- Opcional; não é necessário se o desvio de autenticação no qBittorrent estiver habilitado (por exemplo, para conexões locais)
QBITTORRENT_SENHA
- Senha usada para fazer login no qBittorrent
- Opcional; não é necessário se o desvio de autenticação no qBittorrent estiver habilitado (por exemplo, para conexões locais)
Créditos
- Script para detectar downloads paralisados expandido no código por MattDGTL/sonarr-radarr-queue-cleaner
- Script para ler a configuração expandida no código por syncarr/syncarr
- Equipe SONARR/RADARR e colaboradores por seu excelente produto, documentação de API e orientação em seu canal Discord
- Agradecimentos especiais a eles por adicionar um sinalizador adicional à sua API que permitiu que este script detectasse downloads travados ao encontrar metadados
- craggles17 para compatibilidade de braço
- Fxsch para documentação aprimorada / ReadMe
Isenção de responsabilidade
Este script não tem qualquer garantia e você o usa por sua própria conta e risco