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 or 7z with password before upload
  • Logs everything in a centralized history (JSONL)
  • Cross-platform: works on Linux, macOS, and Windows

Installation

🚀 Portable (Windows / Linux)

Recommended for most users. Download the latest ZIP from Releases, extract and run. No Python or Node.js required.

📦 Via pip

pip install upapasta

System dependencies (if not using Portable):

Binary Function Status Install
nyuu NNTP Upload Mandatory npm install -g nyuu
parpar PAR2 Generation Mandatory npm install -g @animetosho/parpar
7z Packaging Default apt install p7zip-full
rar RAR5 support Optional apt install rar (or auto-download)
ffprobe Video metadata Optional apt install ffmpeg
mediainfo Technical info Optional apt install mediainfo

See INSTALL.md for detailed instructions per platform.


Configuration

On the first run, an interactive wizard creates your configuration file:

upapasta --config
  • Linux/macOS: ~/.config/upapasta/.env
  • Windows: %APPDATA%\upapasta\.env

Use cases

Case Command
Entire folder upapasta Folder/
Single file upapasta Episode.S01E01.mkv
Reversible obfuscation upapasta Folder/ --obfuscate
Pack + Password (default) upapasta Folder/ --password "abc123"
Force 7z upapasta Folder/ --7z
Force RAR upapasta Folder/ --rar
Each file = release upapasta /tv/Show.S04/ --each
Season + Single NZB upapasta /tv/Show.S04/ --season
Daemon (watch folder) upapasta /downloads/ --watch
Resume interrupted upload upapasta Folder/ --resume

Recommended Workflow 2026

RAR/7z 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 --par-profile safe

Use packaging (--compress, --rar or --7z) only when you need a password or when the downloader does not support folder reconstruction via PAR2.

Obfuscation

Since v0.28.0, the --obfuscate flag provides maximum stealth by default:

  • Files and PAR2 volumes are renamed to random strings.
  • NZB subjects are obfuscated (protected from indexer "peepers").
  • NZB file headers allow downloaders to restore original names automatically.

Main options

-c, --compress           Activate packaging using default compressor from .env
--rar                    Force RAR5 packaging (ignores .env)
--7z                     Force 7z packaging (ignores .env)
--password PASSWORD      Encryption password (uses default compressor if unspecified)
--obfuscate              Maximum privacy: random names for everything
--tmdb                   Enrich NFO with TMDb metadata (requires API Key)
--tmdb-search TERMO      Search TMDb and list IDs (utility)
--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 files 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.34.0.tar.gz (176.7 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.34.0-py3-none-any.whl (134.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for upapasta-0.34.0.tar.gz
Algorithm Hash digest
SHA256 3bc523fa66af925afd941c988f52de26b5e9874d40c1c0579cb5e80764585358
MD5 bd49b5b44458108316b744e514a2bab4
BLAKE2b-256 1ce813f5604b3fedc71875fea9842d5510c4731ce383bba93829c3c8ea1e356d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: upapasta-0.34.0-py3-none-any.whl
  • Upload date:
  • Size: 134.7 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.34.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6bb0df1170db269b90bdede0bb96d24f70de1689b946817d42ab0852f679052
MD5 d9cba5bdf20b1525f7a3932d0a0d9f9e
BLAKE2b-256 0af23f20c1be3a74f570cb013a66de475cb2290c223ec1f1f5d5f90a94e7cc86

See more details on using hashes here.

Provenance

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