Skip to main content

Ferramenta CLI para upload automatizado em Usenet com RAR, PAR2 e nyuu

Project description

UpaPasta

Uploader automatizado para Usenet. Um comando, pipeline completo: PAR2 → upload → NZB pronto.

upapasta /tv/Night.of.the.Living.Dead.S01/

PyPI CI Python License: MIT


O que faz

  • Gera PAR2 com perfis de redundância (5 / 10 / 20%)
  • Faz upload via nyuu sem staging em /tmp (paths diretos)
  • Entrega NZB + NFO com metadados de vídeo
  • (Opcional) Cria RAR5 com senha antes do upload
  • Registra tudo em ~/.config/upapasta/history.jsonl

Zero dependências Python — apenas binários do sistema.


Instalação

pip install upapasta

Dependências do sistema:

Binário Função Instalar
nyuu Upload NNTP npm install -g nyuu
parpar Geração de PAR2 (recomendado) pip install parpar
par2 Alternativa ao parpar apt install par2
rar RAR5 (apenas com --rar) apt install rar
ffprobe Metadados de vídeo no NFO apt install ffmpeg
mediainfo Info técnica de mídia no NFO apt install mediainfo

Veja INSTALL.md para instruções detalhadas por plataforma.


Configuração

Na primeira execução, um wizard interativo cria ~/.config/upapasta/.env:

upapasta --config

Para configurar failover com múltiplos servidores NNTP, edite o .env diretamente — veja DOCS.md § Múltiplos servidores NNTP.


Casos de uso

Caso Comando
Pasta inteira upapasta Pasta/
Arquivo único upapasta Episodio.S01E01.mkv
Múltiplos inputs upapasta A/ B/ C/
Paralelo upapasta A/ B/ C/ --jobs 3
Ofuscação reversível upapasta Pasta/ --obfuscate
Máxima privacidade upapasta Pasta/ --strong-obfuscate
Senha RAR upapasta Pasta/ --password "abc123"
Cada arquivo = release upapasta /tv/Show.S04/ --each
Temporada + NZB único upapasta /tv/Show.S04/ --season
Daemon (monitorar pasta) upapasta /downloads/ --watch
Sem upload (só gera arquivos) upapasta Pasta/ --skip-upload
Simular sem enviar upapasta Pasta/ --dry-run
Retomar upload interrompido upapasta Pasta/ --resume

Fluxo recomendado 2026

RAR não é mais necessário para a maioria dos casos. O parpar grava a hierarquia de pastas nos .par2 e SABnzbd/NZBGet recentes reconstroem a árvore no download:

upapasta Pasta/ --obfuscate --backend parpar \
    --filepath-format common --par-profile safe

Use --rar apenas quando precisar de senha (casos legados) ou quando o downloader não suporta reconstrução via PAR2.

Níveis de ofuscação

Flag O que ofusca NZB mostra nome original?
(nenhuma) nada sim
--obfuscate arquivos + PAR2 sim (reversível)
--strong-obfuscate arquivos + PAR2 + subjects do NZB não

Opções principais

--rar                    Cria RAR5 antes do upload
--obfuscate              Nomes aleatórios; NZB restaura nomes originais
--strong-obfuscate       Máxima privacidade: nomes aleatórios em tudo
--password SENHA         Senha RAR (presume --rar automaticamente)
--par-profile PERFIL     fast (5%) · balanced (10%) · safe (20%)
--jobs N                 Uploads paralelos quando múltiplos inputs
--resume                 Retoma upload interrompido
--dry-run                Simula sem enviar
--skip-upload            Gera RAR/PAR2/NFO sem fazer upload
--each                   Cada arquivo da pasta = release separado
--season                 Como --each + NZB único da temporada
--watch                  Daemon: processa automaticamente novos itens

upapasta --help lista todas as opções com descrições completas.


Histórico e estatísticas

# Últimos 5 uploads
tail -5 ~/.config/upapasta/history.jsonl | python3 -m json.tool

# Estatísticas agregadas
upapasta --stats

# NZBs arquivados (hardlinks por timestamp)
ls -la ~/.config/upapasta/nzb/

Webhooks e hooks

Configure notificações pós-upload no .env:

# Discord, Slack, Telegram ou qualquer endpoint que aceite POST JSON
WEBHOOK_URL=https://discord.com/api/webhooks/...

# Script externo (recebe variáveis UPAPASTA_*)
POST_UPLOAD_SCRIPT=/home/user/notificar.sh

Veja DOCS.md § Hooks e webhooks para a lista completa de variáveis.


Documentação

  • DOCS.md — referência completa: configuração, pipeline, flags, ofuscação, PAR2, múltiplos servidores, resume, catálogo, hooks
  • docs/FAQ.md — erros frequentes e respostas diretas
  • docs/TROUBLESHOOTING.md — diagnóstico por sintoma
  • INSTALL.md — instalação de dependências por plataforma
  • CHANGELOG.md — histórico de versões

Licença

MIT — veja LICENSE.

Desenvolvido por franzopl.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upapasta-0.25.1.tar.gz (122.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

upapasta-0.25.1-py3-none-any.whl (75.6 kB view details)

Uploaded Python 3

File details

Details for the file upapasta-0.25.1.tar.gz.

File metadata

  • Download URL: upapasta-0.25.1.tar.gz
  • Upload date:
  • Size: 122.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for upapasta-0.25.1.tar.gz
Algorithm Hash digest
SHA256 2dfcf9bf4a19ee57bd14e6b1a88bc497e931883df6e62cd6af7b379dd81d6c58
MD5 9ff8d5f5d0495f91582e586df2dea448
BLAKE2b-256 2876ecf725f170d5d706bddc5bb450706624d7cd12f360fd1b981fef966001c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for upapasta-0.25.1.tar.gz:

Publisher: publish.yml on franzopl/upapasta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file upapasta-0.25.1-py3-none-any.whl.

File metadata

  • Download URL: upapasta-0.25.1-py3-none-any.whl
  • Upload date:
  • Size: 75.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for upapasta-0.25.1-py3-none-any.whl
Algorithm Hash digest
SHA256 038b44746872f4cd3c5688bb2c4cacb0e99a2b011da12d4db05e0c364aca5eae
MD5 d29ab5afb157e7e93918bef40abed281
BLAKE2b-256 51cf09070e1ffa711fc6e5ebddd01a8adcfb2980607b8c7eaca7158a3978fb6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for upapasta-0.25.1-py3-none-any.whl:

Publisher: publish.yml on franzopl/upapasta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page