A fast, concurrent command-line utility to verify the availability of all articles in an NZB file on a Usenet server before you start downloading.
Have you ever started downloading a large multi-gigabyte file from Usenet, only to discover hours later that it's missing too many articles to be repaired? This script solves that problem.
By performing a "pre-flight check," it quickly queries your provider for every article listed in the NZB file without downloading the full article bodies. This saves you significant time and bandwidth by letting you know upfront if a download is worth starting.
- High Performance: Uses Python's
asyncioto handle dozens or hundreds of concurrent connections, checking articles in parallel. - Bandwidth Efficient: Utilizes the NNTP
STATcommand to check only for an article's existence, not its content, saving hundreds of kilobytes per check. - Configurable: Easily set the number of concurrent connections to match your provider's limits.
- User-Friendly: A real-time progress bar shows the status, followed by a clear summary report of found, missing, and errored articles.
- Cross-Platform: Runs on any system with Python 3.
- Python 3.8+
pipandvenvfor managing dependencies. On Debian/Ubuntu, ensure you havepython3-venvinstalled (sudo apt install python3.11-venv).
-
Clone the repository (or download the script):
git clone https://your-repo-url/nzb-completion-checker.git cd nzb-completion-checker -
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activateOn Windows, use
venv\Scripts\activate -
Install the required packages: Create a file named
requirements.txtwith the following content:tqdmThen, run the installation command:
pip install -r requirements.txt
The script is run from the command line with several optional arguments.
usage: nzb_checker.py [-h] -s SERVER [-p PORT] [-u USERNAME] [-pw PASSWORD]
[-c CONNECTIONS] [--no-ssl] [--show-missing]
nzb_file
A fast, concurrent Usenet NZB completion checker.
positional arguments:
nzb_file Path to the .nzb file to check.
options:
-h, --help show this help message and exit
-s SERVER, --server SERVER
Usenet server address (e.g., news.your-provider.com).
-p PORT, --port PORT Server port (default: 563 for SSL).
-u USERNAME, --username USERNAME
Your Usenet username.
-pw PASSWORD, --password PASSWORD
Your Usenet password.
-c CONNECTIONS, --connections CONNECTIONS
Number of concurrent connections to use (default: 50).
--no-ssl Disable SSL for the connection (e.g., for port 119).
--show-missing Print the list of all missing article IDs at the end.