Radarr, Sonarr e os outros Starrs atualmente não possuem um mecanismo integrado para lidar com downloads paralisados, este projeto visa resolver isso.
Swaparr é inspirado em um tópico do Reddit "Eu escrevi um script que repl.." de Douglas96.
Se Swaparr foi útil para você e você aprecia o poder do software de código aberto, considere dar uma estrela a este repositório. Seu gesto apoiará enormemente nossos esforços e ajudará outras pessoas a descobrir o Swaparr!
Swaparr opera silenciosamente em segundo plano, oferecendo opções completas de personalização e visibilidade clara por meio de logs do console. Sua função principal é resolver o problema de downloads paralisados em instâncias starr.
Detecção automática: o Swaparr verifica todos os downloads ativos em suas instâncias starr a cada 10 minutos (ajustável) para identificar possíveis lentidão.
Sistema de Strike: Os downloads identificados recebem um strike e esse ciclo de avaliação se repete periodicamente. Se um download acumular o máximo de strikes permitidos, o Swaparr o removerá automaticamente da sua instância.
Personalização: Swaparr oferece opções de personalização para ajustar o comportamento de golpes.
Aviso
Swaparr ainda está em beta, as coisas podem mudar antes de chegar à versão 1.0.0
Docker e seu plugin de composição são necessários. Abaixo está uma matriz de como instalar ambos em seu sistema:
Sistema operacional | Instruções Oficiais |
---|---|
Linux | docs.docker.com/../linux-install |
Mac OS | docs.docker.com/.../mac-install |
Windows | docs.docker.com/.../windows-install |
Comece com o arquivo de composição fornecido como base e personalize-o excluindo ou ajustando quaisquer serviços.
versão: '3'serviços: radarr:image: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-radarrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:7878 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave de API Radarr (obrigatório) - PLATFORM=radarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true # -- (Opcional) sonarr: imagem: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-sonarrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:8989 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave de API Sonarr (obrigatório) - PLATFORM=sonarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true
versão: '3'serviços: radarr:image: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-radarrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:7878 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave de API Radarr (obrigatório) - PLATFORM=radarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true # -- (Opcional) sonarr: imagem: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-sonarrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:8989 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave de API Sonarr (obrigatório) - PLATFORM=sonarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true # -- (Opcional) lidarr: imagem: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-lidarrrestart: a menos que seja interrompidoambiente: - BASEURL=http://127.0.0.1:8989 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave API Lidarr (obrigatório) - PLATFORM=lidarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true # -- (Opcional) readarr: imagem: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-readarrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:8989 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave API Readarr (obrigatório) - PLATFORM=readarr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true # -- (Opcional) whisparr: imagem: ghcr.io/thijmengthn/swaparr:latestcontainer_name: swaparr-whisparrrestart: a menos que-stoppedenvironment: - BASEURL=http://127.0.0.1:8989 # IP ou FQDN (obrigatório) - APIKEY=7f3a8..cbc07 # Chave API Whisparr (obrigatório) - PLATFORM=whisparr # "radarr", "sonarr".. (Opcional) padrão: radarr - MAX_STRIKES=3 # Número positivo (Opcional) padrão: 3 - SCAN_INTERVAL=10m # 1d, 6h, 30m, etc.. (Opcional) padrão: 10m - MAX_DOWNLOAD_TIME=2h # 1d, 6h, 30m, etc.. (Opcional) padrão: 2h - IGNORE_ABOVE_SIZE=25GB # 1TB, 1GB, 1MB, etc.. (Opcional) padrão: 25GB - REMOVE_FROM_CLIENT=true # Boolean (Opcional) padrão: true
Para iniciar o Swaparr, execute o seguinte comando:
docker compose up -d
Você pode monitorar as atividades do Swaparr e rastrear o processamento de downloads executando o seguinte comando. Omita o parâmetro
para visualizar logs de todas as plataformas:
docker compose logs
Para desligar o Swaparr, execute o seguinte comando:
docker compose down
Atualizar o Swaparr é muito fácil, obtenha as imagens mais recentes e reinicie o serviço:
docker compose pull
docker compose down
docker compose up -d
Um breve resumo para esclarecer algumas coisas para você:
Nome | Padrão | Descrição |
---|---|---|
URLBASE | http://127.0.0.1:7878 | A URL de um radarr, sonarr ou outra instância starr. |
APIKEY | 7f3a8..cbc07 | A chave API de um radarr, sonarr ou outra instância starr. |
PLATAFORMA | radarr | Indica o tipo de plataforma starr, seja radarr , sonarr , lidarr , readarr ou whisparr . |
MAX_STRIKES | 3 | Número máximo de avisos que um download pode acumular antes de ser removido. |
SCAN_INTERVAL | 10m | Com que frequência o Swaparr verifica downloads paralisados. |
MAX_DOWNLOAD_TIME | 2h | Tempo máximo de download permitido antes de ser considerado paralisado. |
IGNORE_ABOVE_SIZE | 25GB | Arquivos maiores que esse tamanho serão ignorados e não monitorados. |
REMOVE_FROM_CLIENT | true | Remover da fila e do cliente de download (padrão) OU false apenas a fila de uma instância starr. |
Status | Descrição |
---|---|
Normal | O download está ocorrendo conforme esperado; nenhum problema detectado. |
Striked | Download sinalizado como lento ou parado; pode ser removido se continuar acumulando strikes. |
Removed | Foi tentado remover o download da instância starr. |
Ignored | O download não é monitorado porque está fora dos limites definidos (por exemplo, tamanho ou limites de tempo). |
Queued | O download está na fila esperando para começar; não será atingido. |
Se você precisa de ajuda, deseja contribuir ou encontrou um bug que precisa ser corrigido, basta abrir um problema. Somos todos ouvidos e prontos para colaborar com você!