NxG Loader
Proof of Concept for a new way of binary download from Usenet using the NxG Header, eliminating the need for Usenet search engines and NZB files.
The NxG Loader only works with NxG Headers created by an NxG Header compatible Usenet upload tool, e.g. the NxG Upper.
NxG Loader also accepts the new NXGLNK URI scheme and can register itself as a target for NXGLNKs.
With the NxG Header, neither Usenet search engines nor NZB files are needed for binary downloads. The message IDs required to retrieve the articles are calculated directly from the NxG Header.
Par2 files are only downloaded if missing or corruptes messages are detected. However, one disadvantage is that in this case all par2 files must currently be downloaded, even if only one block is corrupted.
Requirements
NxG Loader requires that unrar.exe and par2.exe (par2cmdline) are installed on your system and the paths to the executables are specified in the nxg-loader.conf.
The required executables are freeware and can be downloaded here:
Installation
- Download the executable file for your system from the release page.
- Extract the archive to a folder and run the executable.
- An nxg-loader.conf configuration file is created in this folder (or in "~/.conf/" for Linux systems).
- Edit the nxg-loader.conf according to your requirements.
Running the program
Run the program in a cmd line with the following flags:
nxg-loader --header "[NXGHEADER]" --password "[PASSWORD]" --title "[TITLE]"
or by specifying an NXGLNK as a positional argument:
nxg-loader "nxglnk://?h=[NXGHEADER]&p=[PASSWORD]&t=[TITLE]"
[NXGHEADER]
= the NXG Header for this download (required)
[PASSWORD]
= password required to extract the download (optional)
[TITLE]
= title of the download (optional)
See the other command line arguments and options with:
nxg-loader -h
Please also read the nxg-loader.conf for additional explanations in the comments
Todos
A lot...
This is a Proof of Concept with the minimum necessary features.
So there is certainly a lot left to do.
Version history
beta 3
- only unrar if rar files are present
- refactoring: move common functions to separate functions.go
- use X-Nxg article header for yenc decoding (allows yenc header obfuscation when uploading). Reverts change in beta 2 (only read body instead of whole article) because X-Nxg header is required.
- fix for wrong unrar error on missing password
beta 2
- some heavy refactoring
- only read body instead of whole article
- change of the progress bar to bytes instead of articles and display of the download rate
- bug fix for re-adding failed articles blocking the queue
- update dependencies
beta 1
Credits
This software is built using golang (License).
This software uses the following external libraries:
- github.com/acarl005/stripansi (License)
- github.com/alexflint/go-arg (License)
- github.com/chrisfarms/yenc (License)
- github.com/schollz/progressbar/v3 (License)
- github.com/spf13/viper (License)