RustyGet docs · rewrite in progress
Source

Usenet downloader · rewrite in progress

Every copy of a release,
working as one download.

RustyGet is a rewrite of NZBGet in Rust. It keeps NZBGet's speed and API, and adds duplicate fleets: when an article is missing on every server, it comes from another copy of the release, checked before it counts, instead of failing the download.

  • NZBGet API today
  • Rust, one module at a time
  • Borrowed articles checked
  • GPL v2 or later
illustration · one title, four postings
  Grouped 4 postings under one key
   Ranked primary 99% alive · 2160p
   Proved twin    par2 hashes match
     Kept alt     other encode · backup
  Missing 212 articles on all servers
 Borrowed 212 articles from the twin
 Verified par2 · nothing left to repair
 Finished 1 download · 0 failovers

Start here

What it does

RustyGet downloads files from Usenet using NZB files, the way NZBGet does: it fetches articles from your news servers, decodes them, checks and repairs the result with par2, unpacks archives, and runs your extensions. It runs on anything from a small NAS to a large server, and media managers such as Sonarr and Radarr talk to it as NZBGet.

What's new is how it treats duplicates. The same release usually exists as several postings: reposts, listings on other indexers, and other encodes. NZBGet keeps them as spares and starts the next one from scratch when a download fails. RustyGet uses them together:

  • An article missing on every server is fetched from a matching file in another copy. A yEnc article must fit its place in the file, and, where they're available, it's checked against its checksum (with the default CrcCheck=yes) and the download's par2 data.
  • Copies with byte-identical files, called twins, are proven by par2 checksums and can lend articles and recovery volumes. Other encodes, called alts, mostly serve as failover backups.
  • Holes that articles can't fill are patched with verified bytes, even from copies that are split, packed, or encrypted differently.
  • A copy that can't complete hands over to the best backup within seconds.
  • RustyGet can search NZBHydra2 for more copies and check each one on your servers before it counts on it.

See Feature highlights for the full list.

Status

RustyGet is in active development and runs in daily use. The C++ code inherited from NZBGet moves to Rust one module at a time, each port proven against the old code. There are no release packages yet, and the API may change as the rewrite goes on. Follow progress in the Rust port status and the repository.