Skip to main content

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

Project description

UpaPasta

Português (pt-BR)

Automated Usenet Uploader. One command, full pipeline: PAR2 → upload → NZB ready.

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

PyPI CI Python License: MIT


What it does

  • Generates PAR2 with redundancy profiles (5 / 10 / 20%)
  • Uploads via nyuu without staging in /tmp (direct paths)
  • Delivers NZB + NFO with video metadata
  • (Optional) Creates RAR5 with password before upload
  • Logs everything in ~/.config/upapasta/history.jsonl

Zero Python dependencies — system binaries only.


Installation

pip install upapasta

System dependencies:

Binary Function Install
nyuu NNTP Upload npm install -g nyuu
parpar PAR2 Generation (recommended) pip install parpar
par2 parpar alternative apt install par2
rar RAR5 (only with --rar) apt install rar
ffprobe Video metadata in NFO apt install ffmpeg
mediainfo Technical media info in NFO apt install mediainfo

See INSTALL.md for detailed instructions per platform.


Configuration

On the first run, an interactive wizard creates ~/.config/upapasta/.env:

upapasta --config

To configure failover with multiple NNTP servers, edit .env directly — see DOCS.md § Multiple NNTP servers.


Use cases

Case Command
Entire folder upapasta Folder/
Single file upapasta Episode.S01E01.mkv
Multiple inputs upapasta A/ B/ C/
Parallel upapasta A/ B/ C/ --jobs 3
Reversible obfuscation upapasta Folder/ --obfuscate
Maximum privacy upapasta Folder/ --strong-obfuscate
RAR Password upapasta Folder/ --password "abc123"
Each file = release upapasta /tv/Show.S04/ --each
Season + Single NZB upapasta /tv/Show.S04/ --season
Daemon (watch folder) upapasta /downloads/ --watch
No upload (files only) upapasta Folder/ --skip-upload
Dry run (simulate) upapasta Folder/ --dry-run
Resume interrupted upload upapasta Folder/ --resume

Recommended Workflow 2026

RAR is no longer necessary for most cases. parpar stores the folder hierarchy in .par2 files, and recent SABnzbd/NZBGet versions rebuild the tree upon download:

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

Use --rar only when you need a password (legacy cases) or when the downloader does not support reconstruction via PAR2.

Obfuscation levels

Flag What is obfuscated NZB shows original name?
(none) nothing yes
--obfuscate files + PAR2 yes (reversible)
--strong-obfuscate files + PAR2 + NZB subjects no

Main options

--rar                    Create RAR5 before upload
--obfuscate              Random names; NZB restores original names
--strong-obfuscate       Maximum privacy: random names for everything
--password PASSWORD      RAR password (automatically implies --rar)
--par-profile PROFILE    fast (5%) · balanced (10%) · safe (20%)
--jobs N                 Parallel uploads for multiple inputs
--resume                 Resume interrupted upload
--dry-run                Simulate without sending
--skip-upload            Generate RAR/PAR2/NFO without uploading
--each                   Each file in folder = separate release
--season                 Like --each + single season NZB
--watch                  Daemon: automatically process new items

upapasta --help lists all options with full descriptions.


History and statistics

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

# Aggregated statistics
upapasta --stats

# Archived NZBs (hardlinks by timestamp)
ls -la ~/.config/upapasta/nzb/

Webhooks and hooks

Configure post-upload notifications in .env:

# Discord, Slack, Telegram or any endpoint accepting POST JSON
WEBHOOK_URL=https://discord.com/api/webhooks/...

# External script (receives UPAPASTA_* variables)
POST_UPLOAD_SCRIPT=/home/user/notify.sh

See DOCS.md § Hooks and webhooks for the full list of variables.


Documentation


License

MIT — see LICENSE.

Developed by 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.26.5.tar.gz (157.4 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.26.5-py3-none-any.whl (114.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for upapasta-0.26.5.tar.gz
Algorithm Hash digest
SHA256 15b18302b64eae880c56a268c4382c526158b27b76afa30619ef0586a1e128a5
MD5 8d1c5038a3259a501dccab299aa6c392
BLAKE2b-256 5a2bbbe53a7ee6da3e7bd8dc544454281af0780be6053eaead8fce7c0aa6da4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for upapasta-0.26.5.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.26.5-py3-none-any.whl.

File metadata

  • Download URL: upapasta-0.26.5-py3-none-any.whl
  • Upload date:
  • Size: 114.3 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.26.5-py3-none-any.whl
Algorithm Hash digest
SHA256 94c42d0112fb011ce5e7af9099c6ed8394569d6022f199b68fdbb40160d8e796
MD5 3858456565f40f27e7c42d4c1b980e49
BLAKE2b-256 44dd462702c4a269a9154976b96f1ac0283215e2dc909bc4bea9ad722ff7a540

See more details on using hashes here.

Provenance

The following attestation bundles were made for upapasta-0.26.5-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