Fetching release history from GitHub...
Below is the change log for all stable releases.
For testing releases see Release history (for testing releases).
21.1 • 3 Jun 2021
- fixed crash on systems with 64-bit time (#736, #742);
- corrected icon in Windows uninstall program list (#704);
- allow special characters in URL for username and password (#682);
- improved reporting for binding errors on Windows (#715).
- fixed unicode space characters in javascript files, which could cause issues with nginx proxy (#650, #651);
- fixed negative values for FileSizeLo in json-rpc (#693);
- corrected url detection in rpc-method append (#679);
- added support for new error messages in unrar 5.80 (#694);
- now always using snapshots when reading directory contents (#688):
- in previous versions snapshots were used on macOS only;
- now they are used on all OSes;
- this solves issue with leftovers during directory cleanup, which could happen on certain OSes when
working with network drives;
- fixed file allocating on file systems where sparse files are not supported (#720):
- the issue could happen when InterDir was located on a network drive;
- fixed crash caused by malformed nzb files (#745);
- fixed GROUP command in nserv(#739);
- updated url of the global certificate storage file in the build scripts (#747);
- fixed: file selector in WebKit based browsers doesn't allow to choose the same file again (#731);
- removed outdated links from web interface and merged Info and About tabs (#748).
- fixed PC sleep mode not working (Windows only) (#635);
- set SameSite attribute for cookies (#725);
- corrected typo in about dialog of web interface (#634);
- added nzbget version to about page (#637);
- updated license text: changed address of Free Software Foundation and minor formatting changes (#648).
21.0 • 2 May 2019
- reworked duplicate handling to support URLs, especially when using RSS feeds (#541):
- queue items added via URLs (to be fetched by nzbget) are no longer immediately fetched;
- instead url-items are handled by duplicate check similar to nzb-items and may be placed into history as duplicate backups;
- if an url-item needs to be downloaded as backup for a failed other item the nzb-file is fetched via provided URL;
- this greatly reduces the number of nzbs fetched from indexers when using RSS feeds and duplicate handling;
- improved support for Android devices (#538):
- now providing a separate installer package for Android;
- the package contains binaries built using Android NDK;
- this improves compatibility with Android, in particular with Android 8, where general Linux installer version of NZBGet didn't work anymore due to security changes in Android;
- android installer app is updated to use the new android installer package instead of general Linux package;
- thoroughly optimised the program to reduce power consumption in idle state (#351, #593, #597):
- number of CPU wake ups in idle state has been reduced from hundreds times per second to about only one per second;
- optimisations for large queues with thousands of items (#591):
- speed up saving of queue state and reduced number of queue state savings;
- improved queue state format to reduce amount of state data saved during downloading;
- in tests download speed for very large queue (16000 items) has been increased from 45 MB/s to 300 MB/s (comparing to 400 MB/s with small queue);
- added native support for aarch64 architecture (ARM 64 Bit CPU) in Linux and Android installers (#629);
- updated unrar to 5.7 and 7-zip to 19.0 (#618);
- Windows installer now includes unrar in 32 bit and 64 bit variants (#618);
- allowing wildcards in option AuthorizedIP (#620);
- force par-check for nzbs without archives (#525);
- improved handling of files splitted via par2 (#595);
- added python 3 compatibility to EMail.py script (#578);
- added python 3 compatibility to Logger.py script (#581);
- proper UTF-8 encoding of email content in EMail.py script (#585);
- improved error reporting for queue disk state corruption (#591);
- removed suggestion of RC4 cipher (#611);
- better description of option UMask (#612);
- integrated LGTM code analyser tool into project (#604);
- added functional tests for unpack CRC error (#558);
- click on nzbget logo in web-interface now switches to downloads tab instead of showing About dialog which has been moved into settings (#564);
- fixed: failed downloads not having any par2- or archive- files were moved to DestDir instead of remaining in InterDir (#562);
- fixed crash when using FIPS version of OpenSSL (#561);
- fixed potential crash in built-in web-server (#567);
- fixed: statistics for session download time and speed may be way off on high load (#573);
- fixed many compilation warnings in GCC (#590, #592);
- fixed deprecated OpenSSL calls (#600);
- fixed: macOS menubar widget could not connect if password contained special characters (#599);
- fixed compatibility issue with OpenSSL compiled without compression support (#607, #608);
- fixed: remote clients not displaying current download speed (#351, #610);
- fixed: remote server could crash when feed with invalid api request (#621);
- fixed trimming of relative paths in config (#622, #135).
20.0 • 6 Jun 2018
- massive performance optimisations in downloader (#448):
- improved yEnc decoder (#450);
- improved CRC32 calculation (#446);
- processing data in one pass;
- SIMD implementation of decoder and CRC functions on x86 and ARM CPUs; SIMD code relies on node-yencode library by Anime Tosho (#454);
- overall performance improvement up to +500% on x86 and +250% on ARM (better speed or less CPU usage);
- for details see Benchmarks;
- using glibc instead of uClibc in universal installer builds for Linux (#459):
- this significantly improves performance (see benchmarks above);
- compatibility with Android and other systems is hopefully also improved;
- in universal installer glibc is used on x86 and ARM;
- uClibc is still used on MIPS and PPC;
- performance optimisations in web-interface (#421):
- reduced number of requests when loading webui by combining all javascript-files into one and all css-files into one;
- reduced load time by calling multiple API-methods simultaneously;
- extensive use of browser caching for static files significantly reduces the amount of data transferred on webui initialisation;
- extensive use of browser caching for API requests reduces the amount of data transferred during webui status updates, especially when nzbget is in idle state and there are no changes in download queue or history;
- avoid work in browser on status updates if there are no changes in download queue or history;
- support for keep alive connections significantly reduces overhead for establishing connections on webui status updates, especially when connecting to nzbget via TLS/SSL (avoiding TLS handshakes);
- a number of performance optimisations for large download queue with thousands of items (#438):
- much faster loading of queue from disk greatly improves program start up time;
- improved queue management for faster download speed;
- now offering 64 bit binaries for Windows (#435):
- installer includes 32 and 64 bit nzbget binaries;
- when updating from older versions the 64 bit binary is installed automatically, although into the old location to keep all your shortcuts intact;
- using word windows instead of win32 in the setup file name;
- automatic update check (#440):
- new option UpdateCheck to check for stable or testing versions (or disable);
- when a new version is found a notification is shown;
- the update check is enabled by default for stable versions;
- significantly improved logging performance, especially in debug builds (#466);
- par-check prints par2 creator application to help identify creator app issues (#467);
- added support for Unix domain sockets (POSIX only) (#400);
- better error handling when fetching rss feeds (#416);
- updated POSIX build files to newer autotools version (#418):
- compatibility with newer autotools;
- compatibility with newer platforms such as aarch64;
- enabled functional tests on Travis CI (#443);
- better username/password validation when testing connection on settings page (#433);
- improved rar-renamer to better handle certain cases (#442);
- new option SkipWrite for easier speed tests;
- support for redirect codes 303, 307 and 308 in web-client for fetching of rss feeds and nzb-files (#420);
- installer for FreeBSD is now built using Clang instead of GCC; this fixes incompatibility with FreeBSD 11 (#425):
- universal Linux installer can now be used on FreeBSD (via Linux compatibility mode) (#423);
- updated unrar to v5.50;
- more robust news server connection test (#471);
- enhancements in NServ:
- memory cache to reduce disk load during speed tests - new command line switch -m (#448);
- speed control - new command line switches -w and -r (#451);
- show IP address of incoming connection in NServ (#536);
- changed default location of log-file (#455);
- better handling of broken connections (#460);
- removed obsolete or less useful options SaveQueue, ReloadQueue, TerminateTimeout, AccurateRate, BrokenLog (#461);
- renamed option LogBufferSize to LogBuffer (#461);
- passwords of failed login attempts are no longer printed to log to improve security (#496);
- cookies in web interface are now saved with httpOnly attribute to improve security (#485);
- titles and duplicates keys in duplicate check are now case insensitive (#477);
- added LibreSSL support (#497);
- web interface now has a better icon for favorites or home screen of mobile devices (#483);
- improved duplicate detection for obfuscated downloads having files with same subjects (#547);
- direct rename and direct unpack are now active by default on new installations, except for slow Linux systems (#548);
- added advice for letsencrypt in option descriptions (#546);
- fixed incorrect renaming in rar-renamer which could cause some downloads to fail (#509);
- fixed race condition in queue script coordinator which could cause crashes (#501);
- fixed: post-processing parameters were sometimes case sensitive causing issues (#498);
- fixed DNS resolving issues on Android (#468);
- fixed: backup servers not used on certain article decoding errors (#462);
- fixed: when direct rename was active certain downloads with damaged par2-files become paused at near completion and required manual resuming (#424);
- fixed: crash when flushing article cache after direct rename (#529);
- fixed: deleting active par-job may crash the program (#527);
- fixed: tests may fail on Windows due to locked files (#528);
- fixed: unpack using password file doesn't work on Windows (#412);
- fixed: compiler error when building using GnuTLS (#414);
- fixed: Linux installer failure on android emulator (#417);
- fixed: options formatted as password fields when they shouldn't (#426);
- fixed: slightly off article statistics after direct rename (#430);
- fixed: NServ terminated if client interrupted connection (#431);
- fixed: example pp-scripts may not work properly if nzbget password or username contained special characters (#452, #453);
- fix in functional tests to not rely on sizes of externally generated files (#437);
- fixed: option AuthorizedIP did not work with IPv6 addresses (#439);
- fixed crash on certain malformed articles (#533);
- fixed logging of IPv6 addresses (#534);
- fixed crash which could happen on Windows when reloading or terminating the program (#549).
19.1 • 8 Jul 2017
- proper handling of changing category (and destination path) during direct unpack; direct unpack now gracefully aborts with cleanup; the files will be unpacked during post-processing stage (#408);
- fixed: password protected downloads of certain kind may sometimes end up with no files if direct unpack was active (#405);
- fixed: rar-renamer mistakenly renamed some encrypted rar3 files causing unnecessary repair (#406);
- fixed: rar-renamer could not process some encrypted rar3-archives (#407).
19.0 • 25 Jun 2017
- unpack during downloading (#371):
- downloaded files can now be unpacked as soon as every archive part is downloaded;
- new option DirectUnpack to activate direct unpacking;
- direct unpack works even with obfuscated downloads; option DirectRename (see below) must be active for that;
- option ReorderFiles (see below) should be also active for optimal file download order;
- direct unpack works for rar-archives; 7-zip archives and simply splitted files are processed by default unpack module;
- direct unpack obviously works only for healthy download; if download is damaged the direct unpack cancels and the download is unpacked during post-processing stage after files are repaired;
- direct unpack reduces the time needed to complete download and post-processing;
- it also allows to start watching of video files during download (requires compatible video player software);
- see forum topic Unpack during downloading for more info;
- renaming of obfuscated file names during downloading (#360):
- correct file names for obfuscated downloads are now determined during download stage (instead of post-processing stage);
- downloaded files are saved into disk directly with correct names;
- direct renaming uses par2-files to restore correct file names;
- new option DirectRename to activate direct renaming;
- new queue-event NZB_NAMED, sent after the inner files are renamed;
- automatic reordering of files (#364):
- inner files within nzb reordered to ensure download of files in archive parts order;
- the files are reordered when nzb is added to queue;
- if direct renaming is active (option DirectRename) the files are reordered again after the correct names becomes known;
- new option ReorderFiles;
- new command GroupSortFiles in api-method editqueue;
- new subcommand SF of remote command -E/--edit;
- new option FileNaming to control how to name obfuscated files (before they get renamed by par-rename, rar-rename or direct-rename) (#361);
- TLS certificate verification (#339):
- when connecting to a news server (for downloading) or a web server (for fetching of rss feeds and nzb-files) the authenticity of the server is validated using server security certificate. If the check fails that means the connection cannot be trusted and must be closed with an error message explaining the security issue;
- new options CertCheck and CertStore;
- official NZBGet packages come with activated certificate check;
- when updating from an older NZBGet version the option CertCheck will be automatically activated when the settings is saved (switch to Settings page in web-interface and click Save all changed);
- see Certificate verification for details;
- authentication via form in web-interface as alternative to HTTP authentication (#330):
- that must help with password tools having issues with HTTP authentication dialog;
- new option FormAuth;
- drop-downs (context menus) for priority, category and status columns (#346):
- quicker changing of priority and category;
- easier access to actions via drop-down (context menu) in status column;
- extensions scripts can now be executed from settings page (#50):
- script authors define custom buttons;
- when clicked the script is executed in a special mode and obtain extra parameters;
- example script Email.py extended with button Send test e-mail;
- for details see Extension scripts;
- on Windows NZBGet can now associate itself with nzb-files (#24):
- use option in Windows installer to register NZBGet for nzb-files;
- unrar shipped within Linux package is now compiled with fallocate option to improve compatibility with media players when watching videos during downloading and unpacking (#379);
- support for HTTP-header X-Forwarded-For in IP-logging (#331);
- improvements in RSS feed view in phone mode (#263);
- set name, password and dupe info when adding via URL by click on a button near URL field in web-interface (#123);
- backup-badge for items in history similar to downloads tab (#31);
- show backup icon in history in phone theme (#31);
- added support for ECC certificates in built-in web-server (#353);
- save changes before performing actions in history dialog (#346);
- proper exit code on client command success or failure (#23).
- added host name to all error messages regarding connection issues (#349);
- improved continuos integration with Travis CI:
- added gcc 4.8 to test matrix;
- installing unrar into test system to allow unit tests requiring unrar;
- new button Volume Statistics in section News Servers of settings page; shows the same volume data as in global statistics dialog (#352);
- new option ServerX.Notes for user comments on news servers (#352);
- new parameters for api-method servervolumes as a performance optimization measure to reduce amount of transferred data (#352);
- new option to force connection to news servers via ipv4 or ipv6 (#252);
- removed unnecessary requests to news servers (#360);
- updated unrar to v5.40;
- clear script execution log before executing script (#50);
- added support for crash dumps on Windows (#392):
- renamed option DumpCore to CrashDump;
- new option CrashTrace to make it possible to disable default printing of call stack in order to produce more relevant crash dumps;
- fixed: startup scheduler tasks can be executed again (#376);
- fixed: fatal messages when compiling from sources (#367).
- fixed: per-nzb download statistics could be wrong if the program was reloaded during downloading (#378).
- fixed crash which may happen between post-processing steps (#398);
- fixed: asterix (*) was sometimes passed as parameter to extension scripts (Windows only) (#387);
- fixed potential crash during update via web-interface (#386).
18.1 • 8 Apr 2017
- fixed: crash during download, caused by a race condition (#356);
- fixed: sleep mode did not work on Windows (#350);
- fixed: queue was not saved after deleting of queued post-jobs (#348);
- fixed: possible crash at the end of post-processing (#347);
- fixed: undefined in reorder extension scripts (#338).
18.0 • 12 Feb 2017
- automatic deobfuscation of rar-archives without par-files (#288):
- obfuscated downloads not having par-files can now be successfully unpacked;
- also helps with downloads where rar-files were obfuscated before creating par-files;
- new options RarRename and UnpackIgnoreExt;
- multi post-processing (#291):
- in addition to classic post-processing strategy where items are processed one after another it is now possible to post-process multiple items at the same time;
- new option PostStrategy to choose from four: sequential, balanced, aggressive, rocket;
- in balanced strategy downloads needing repair do not block other items which are processed sequentially but simultaneously with repairing item;
- in aggressive mode up to three items are post-processed at the same time and in rocket mode up to six items (including up to two repair tasks);
- unified extension scripts settings (#319):
- options PostScript, QueueScript, ScanScript and FeedScript were replaced with one option Extensions;
- users don't need to know the technical details of extension scripts as all scripts are now can be selected at one place;
- easier activation of complex extension scripts which previously needed to be selected in multiple options for their proper work;
- reordering download queue with drag and drop in web-interface (#301):
- new actions GroupMoveBefore and GroupMoveAfter in API-method editqueue;
- priorities are now displayed as a column instead of badge; that makes it possible to manually sort on priority by clicking on column title (#286);
- removed vertical lines in tables; looks better in combination with new priority column (#286);
- keyboard shortcuts in web-interface (#242):
- improved UI to prevent accidental deletion of many items (#282):
- visual indication of records selected on other pages;
- extra warning when deleting many records from history;
- additional options in custom pause dialog (#29, #278);
- better handing of damaged par2-files in par-renamer (#327):
- if par-renamer can’t load a (damaged) par2-file then another par2-file is downloaded and par-renamer tries again;
- better handling of obfuscated par-files (#313);
- splitted option Retries into ArticleRetries and UrlRetries; option RetryInterval into ArticleInterval and
UrlInterval (#306);
- scheduler tasks can be started at program launch (#304):
- use asterisk as TaskX.Time;
- graceful termination of scheduler scripts (#304):
- scripts receive signal SIGINT (CTRL+BREAK on Windows) before termination;
- added support for nZEDb attributes in rss feeds (#275);
- better cleanup handling: if parameter unpack is disabled for an nzb-file the cleanup isn't performed for it (#249);
- fields containing passwords are now displayed as protected fields (#49, #260);
- showing password-badge for nzbs with passwords (#274, #285);
- allow control of what tab is shown when opening web-interface (#277):
- add #downloads, #history, #messages or #settings to the URL, for example http://localhost:6789/#history or http://localhost:6789/index.html#history;
- functional testing to ensure program quality (#279):
- improved API-method append in combination with duplicate check; method returns nzb-id also for items added straight to history (#284);
- removed parameter offset from api-method editqueue (#299):
- when needed the offset is now passed within parameter Args as string;
- old method signature is supported for compatibility;
- improved error reporting on feed parse errors (#281);
- highlighting selected rows with alternative colors (#276 , #280);
- improved selecting of par2-file for repair (#329);
- splitted config section Download Queue and moved many options into new section Connection;
- disabled SSLv3 in built-in web-server (#295);
- multiple recipients in the example pp-script EMail.py (#309);
- added compatibility with openssl 1.1.0 (#298);
- fixed TLS handshake error when using GnuTLS (#271);
- fixed: sorting of selected items may give wrong results (#300);
- fixed: search box filter in feed view were not reset (#315).
17.1 • 5 Sep 2016
- adjustments and fixes for Retry failed articles function, better handling of certain corner cases (#253);
- partial compatibility with gcc 4.8 (#256);
- removed unnecessary debug logging to javascript console (#245);
- improved error reporting on certain file operations (#136);
- corrected option description (#162);
- corrected text in history delete confirmation dialog (#224);
- fixed performance issue on certain Windows systems (#251);
- fixed: root drive paths on Windows could not be used (for example NzbDir=N:\) (#247);
- fixed hanging after marking as BAD from queue script (#261);
- fixed: old nzbget.exe was deleted even when installing into a new directory (Windows only) (#254);
- fixed: compilation error if configured with unit tests but without par-module (#255);
- fixed crash on malformed articles (#262);
- fixed javascript error on Chrome for Linux (#86);
- fixed compilation error if configured without TLS (#265).
17.0 • 27 Jul 2016
- reworked the full source code base to utilize modern C++ features (#88):
- with the main motivation to make the code nicer and more fun to work with;
- to compile NZBGet from source a compiler supporting C++14 is required, see Prerequisites for C++ compiler;
- most users don't have to compile on their own and can use official installers offered on download page;
- for a detailed list of internal changes see milestone Modern C++;
- now offering an official installer for FreeBSD (#124):
- automatic installation;
- built-in update via web-interface;
- currently supporting only x86_64 CPU architecture;
- full support for Unicode and extra long file paths (more than 260 characters) on Windows including (#136, #127, #91):
- downloading;
- par-verifcation and -repair;
- par-rename (deobfuscation);
- unpacking;
- post-processing;
- added download volume quota management (#99):
- new options MonthlyQuota, QuotaStartDay, DailyQuota;
- downloading is suspended when the quota is reached and automatically resumed when the next billing period starts (month or day);
- new fields in RPC-method status: MonthSizeLo, MonthSizeHi, MonthSizeMB, DaySizeLo, DaySizeHi, DaySizeMB, QuotaReached. MonthSizes are related to current billing month taking option QuotaStartDay into account;
- download volume for this month shown in web-interface in statistics dialog shows data for current billing month (taking option QuotaStartDay into account);
- remaining time is shown in orange when the quota is reached;
- dialog statistics and status may show extra row Download quota: reached;
- new function Retry failed articles in history (#205):
- failed downloads can be now tried again but in contrast to command Download again only failed articles are downloaded whereas successfully downloaded pieces are reused;
- new command HistoryRetryFailed of RPC-method editqueue;
- new subcommand F of command line switch -E/--edit for history;
- reworked behavior regarding deleting already downloaded files when deleting downloads from queue (#224):
- in order to better work together with the new Retry failed articles-feature;
- removed option DeleteCleanupDisk;
- in the Delete downloads confirmation dialog now allowing user to decide if the already downloaded files must be deleted or not;
- option HealthCheck extended with new possible value Park; Health check now offers:
- Delete - to move download into history and delete already downloaded files;
- Park - to move download into history and keep already downloaded files;
- remote command GroupDelete now always delete already downloaded files;
- new remote command GroupParkDelete keeps already downloaded files;
- new subcommand DP of console command --edit/-E to delete download from queue and keep already downloaded files;
- added support for SNI in TLS/SSL (#223);
- built-in web-server can now use certificate chain files through option SecureCert, when compiled using OpenSSL (#110);
- better error reporting when using GnuTLS (#120);
- new option ShellOverride allows to configure path to python, bash, etc.; useful on systems with non-standard paths; eliminating the need to change shebang for every script; also makes it possible to put scripts on non-exec file systems (#107);
- reduced disk fragmentation in direct write mode on Windows; this improves unpack speed (#195);
- news servers can now be configured as optional; marking server as optional tells NZBGet to ignore this server if a connection to this server cannot be established (#155);
- added several settings to change behavior of web-interface, new section WEB-INTERFACE on settings page (#206);
- showing various status info in browser window title (#197):
- number of downloads, current speed, remaining time, pause state;
- new option WindowTitle;
- added support for tvdbid and tvmazeid in rss feeds (#132);
- added button to save nzb-log into a file directly from web-ui (#108);
- queue-scripts can now change destination after download is completed and before unpack (#162);
- queue-scripts save messages into nzb-log (#163);
- new queue script event NZB_MARKED; new env var NZBNA_MARKSTATUS is passed to queue scripts (#225);
- showing number of selected items in confirmation box when deleting or performing other actions on multiple items in web-interface (#98);
- allowing character = in dupe-badges (#97);
- par-check doesn't ignore files from option ExtCleanupDisk anymore; only files listed in option ParIgnoreExt are ignored (#147);
- printing low-level messages from par2-module (as DETAIL) (#161);
- option ScriptDir now accepts multiple directories (#181);
- hidden files and directories are now ignored by the scanner of incoming nzb directory (#141);
- improved error reporting on DNS lookup errors (#146);
- improved POSIX configure script - now using pkg-config for all required libraries (#192);
- improved Windows installer - scripts are now installed into a subdirectory of default MainDir (C:\ProgramData\NZBGet\scripts) instead of program's directory (#145);
- separated disk state files for queue and history for better performance (#207);
- automatically removing orphaned diskstate files from QueueDir (#121);
- improved replacing of invalid characters in file names in certain cases (#209);
- added support for file names with reserved words on Windows (#210);
- improved tray icon (Windows) to look better on a dark background (#66);
- feed scripts are now expected to return exit codes (#203);
- fixed: splitted files were not always joined (#201);
- path to original queued nzb-file is now passed to scripts (#231);
- moved option FeedX.Interval upwards (#230);
- fixed check for reserved characters in file names (Windows) (#227);
- fixed: wrong encoding in file names of downloaded files (#137);
- fixed: queue-scripts not called for failed URLs if the scripts were set in category’s option PostScript (#171);
- fixed: crash when executing command --printconfig (#174);
- fixed: error messages when trying to delete intermediate directory on Windows (#180);
- fixed: web-ui didn't load in Chrome on iOS (#178);
- text corrections in web-interface (#236);
- updated option descriptions (#158, #212, #217, #218).
16.4 • 5 Dec 2015
- fixed resource (socket) leak, which may cause too many open files errors with a possible crash (#118, #104);
- fixed poor unrar performance on Mac OS X when unpacking to network shares.
16.3 • 29 Oct 2015
- fixed: certain downloads may fail due to a bug in the workaround implemented in v16.2.
16.2 • 24 Oct 2015
- implemented a workaround to deal with malformed news server responses, which may still contain useful data. One of the major usenet providers is affected by the issue recently; the workaround fixes download failures (#100).
16.1 • 19 Oct 2015
- updated unrar shipped with Linux installer to 5.21;
- fixed issues with reverse proxies (#77);
- fixed unpack failure on older AMD CPUs, when installed via universal Linux installer (#89);
- fixed: when the program was started from setup the default directories were created with wrong permission (Windows only) (#95).
16.0 • 10 Oct 2015
- moved project hosting to GitHub:
- moved source code repository from subversion to git;
- updated POSIX makefile to generate revision number for testing releases (#3);
- updated Linux installer build script to work with git (#9);
- adjusted function check for updates in web-interface (#47);
- update-scripts for Linux installer and Windows setup fetch new versions from GitHub releases area (#27);
- cleaned up project root directory, removed many unneeded files which were required by GNU build tools (#48);
- added verification for setup authenticity during update on Linux and Windows (#51);
- improvements in Linux installer:
- improved compatibility with android;
- added support for paths with spaces in parameter --destdir;
- auto-selecting armhf-architecture on ARM 64 bit systems (aarch64) (#35);
- ignored nzbs are now added to history and processed by queue scripts (#26):
- when an nzb-file isn’t added to queue for some reason, the file is now also added to history (in addition to messages printed to log);
- on one hand that makes it easier to see errors (as history items instead of error log messages), on the other hand that provides more info for extension scripts and third-party programs;
- for malformed nzb-files which cannot be parsed the status in history is DELETE: SCAN;
- for duplicate files with exactly same content status DELETE: COPY;
- for duplicate files having history items with status GOOD and for duplicate files having hidden history items with status SUCCESS which do not have any visible duplicates - status DELETE: GOOD;
- new values for field DeleteStatus of API-Method history: GOOD, COPY, SCAN;
- new values for field Status of API-Method history: FAILURE/SCAN, DELETED/COPY, DELETED/GOOD (they will also be passed to pp-scripts as NZBPP_STATUS);
- new queue-script event NZB_DELETED;
- new queue event URL_COMPLETED, with possible details: FAILURE, SCAN_SKIPPED, SCAN_FAILURE;
- improved quick filter (the search box at the top of the page) (#72):
- now supporting OR, AND, NOT, parenthesis;
- can search in specific fields;
- can search in API-fields which are not shown in the table;
- filters can be saved and loaded using new drop down menu;
- for more info see documentation page Quick Filter;
- new advanced duplicate par-check mode (#64):
- can be activated via option ParScan=Dupe;
- the new mode is based on the fact that the same releases are posted to Usenet multiple times;
- when an item requires repair but doesn't have enough par-blocks the par-checker can reuse parts downloaded in other duplicates of the same title;
- that makes it sometimes possible to repair downloads which would fail if tried to repair individually;
- the downloads must be identifiable as duplicates (same nzb name or same duplicate key);
- when par-checker needs more par-blocks it goes through the history and scans the download directories of duplicates until it finds missing blocks; it's smart enough to abort the scanning if the files come from different releases (based on video file size);
- adjusted option HealthCheck; when set to Delete and duplicate par-scan is active, the download is aborted only if the completion is below 10%; that's to avoid deletion of damaged downloads which can be potentially repaired using new par-check mode;
- downloads which were repaired using the new mode or which have donated their blocks to repair other downloads are distinguishable in the history details dialog with new status EXPAR: RECIPIENT or EXPAR:
DONOR; a tooltip on the status shows amount of par-blocks received/donated;
- new field ExParStatus returned by API-method history;
- to quickly find related history items use quick filter -exparstatus:none in history list;
- queue script activity is now indicated in web-interface (#60):
- items in download list may have new statuses QS-QUEUED (gray) or QUEUE-SCRIPT (green);
- new values for field Status in API-method listgroups: QS_QUEUED, QS_EXECUTING;
- the number of active (and queued) scripts are shown in the status dialog in web-interface; this new row is hidden if no scripts are queued;
- active queue scripts accounts for activity indicator in web-interface (rotating button);
- new field QueueScriptCount in API-method status indicates number of queue-scripts queued for execution including the currently running;
- added scripting support to RSS Feeds (#18):
- new option FeedScript;
- new option FeedX.FeedScript to define per rss feed scripts; in addition to existing global option
FeedScript;
- new option FeedX.Backlog to control the RSS feed behavior when fetched for the first time or after changing of URL or filter (#73);
- new option FlushQueue (yes by default) to force disk cache flush when saving queue (#28);
- quick toggle of speed limit; Command/Control + click-on-speed-icon toggles between all servers active and speed-limit=none and servers and speed limit as in the config file (#56);
- new option RequiredDir to wait for external drives mount on boot (#21);
- implemented cleanup for field description in RSS feeds to remove HTML formatting (#32);
- hidden webui option rowSelect now works for feed view too (#19);
- improved error message for password protected archives (#54);
- increased limit for log-entries in history dialog from 1000 to 10000;
- completion tab of download details dialog (and history details dialog) shows per servers article completion in percents; now there are also tooltips to show article counts;
- do not reporting bad blocks for missing files (which are already reported as missing);
- when adding nzb-files via web-interface it's now possible to change name and other properties (#76):
- nzb-files in the upload-list are now clickable;
- a click opens properties dialog where the name, password, duplicate key and duplicate score can be changed;
- new setting to set tray icon behavior on Windows (#59);
- improvements in built-in web-server to fix communication errors which may occur on certain systems, in particular on OS X Safari (#77):
- implemented graceful disconnect strategy in web-server;
- added authorization via X-Auth-Token to overcome Safari’s bug, where it may stop sending HTTP Basic Auth header when executing ajax requests;
- pp-script EMail.py now supports new TLS/SSL mode Force. When active the secure communication with SMTP server is built using secure socket on connection level instead of plain connection and following switch
into secure mode using SMTP-command STARTLS. This new mode is in particular required when using GMail on port 465 (#20);
- speed improvement in built-in web-server on Windows when serving API requests (web-interface) for very large queue or history (with thousands items);
- better performance when deleting many items from queue at once (hundreds or thousands);
- improved performance in web-interface when working with very large queue or history (thousands of items);
- integrated unit testing framework, created few first unit tests:
- new configure parameter --enable-tests to build the program with tests;
- use nzbget --tests to execute all tests or nzbget --tests -h for more options;
- fixes in Linux installer:
- fixed: installer may show wrong IP-address in the quick help message printed after installation (thanks to @sanderjo) (#42);
- fixed: installation failed on certain WD NAS models due to Busybox limitations;
- fixed: not working endianness detection on mipseb architecture (#55);
- fixed: unrar too slow on x86_64 architecture (#57);
- fixed: reporting of bad blocks for empty files could print garbage file names;
- fixed: par-check did not work on UNC paths (Windows only) (#74);
- fixed: config error messages were not printed to log or screen but only to stdout, where users typically don’t see them (#61);
- fixed: incorrect reading of UrlStatus from diskstate (#70);
- fixed: total articles wasn't reset when downloading again (#69);
- fixed: crash on reload if a queue-script is running (#71);
- fixed: mark as bad may return items to queue if used on multiple items simultaneously (#67);
- fixed: updating may fail if NZBGet was not installed on the system drive (Windows only) (#78);
- fixed: the program may hang during multithreading par-repair, only certain Linux system affected (#41);
- fixed: active URL download could not be deleted (#33);
- fixed: par-verification of repaired files were sometimes not skipped in quick verification mode (option ParQuick=yes);
- fixed: when parsing nzb-files filenames may be incorrectly detected causing certain downloads to fail (#45);
- fixed: nzb-files containing very large individual files (many GB) may cause program to crash or print error Could not create file ... (#52).
15.0 • 20 May 2015
- improved application for Windows:
- added tray icon (near clock);
- left click on icon pauses/resumes download;
- right lick opens menu with important functions;
- console window can be shown/hidden via preferences (is hidden by default);
- new preference to automatically start the program after login;
- new preference to show browser on start;
- new preference to hide tray icon;
- menu commands to show important folders in windows explorer (destination, etc.);
- on first start the config file is now placed into subdirectory NZBGet inside standard AppData-directory;
- default destination and other directories are now placed in the AppData\NZBGet-directory instead of programs directory; this allows to install the program into program files-directory since the program does not write into the programs directory anymore;
- the program exe has an icon now;
- if the exe is started from windows explorer the program starts in application mode; if the exe is called from command prompt the program works in console mode;
- created installer for Windows:
- the program is installed into program files by default;
- the working directory with all subdirectories is now placed into AppData directory;
- the batch files nzbget-start.bat and nzbget-recovery-mode.bat are not needed and not installed anymore;
- the installer supports automatic updates via web-interface (Settings - SYSTEM - Check for updates);
- created installer for Linux:
- included are precompiled binaries for the most common CPU architectures: x86, ARM, MIPS and PowerPC;
- installer automatically detects CPU architecture of the system and installs an appropriate executable;
- configuration file is automatically preconfigured for immediate use;
- the installation on supported platforms has become as simple as: download, run installer, start installed nzbget;
- the installer supports automatic updates via web-interface (Settings - SYSTEM - Check for updates);
- thanks to Clinton Hall for organizing the tests on many NAS devices;
- added support for password list file:
- new option UnpackPassFile to set the location of the file;
- during unpack the passwords are tried from the file until unpack succeeds or all passwords were tried;
- implemented different strategies for rar4 and rar5-archives taking into account the features of formats;
- for rar5-archives a wrong password is reported by unrar unambiguously and the program can immediately try other passwords from the password list;
- for rar4-archives and for 7z-archives it is not possible to differentiate between damaged archive and wrong password; for those archives if the first unpack attempt (without password) fails the program executes par-check (preferably quick par-check if enabled via option **ParQuick) before trying the passwords from the list;
- another optimization is that the password list is tried only when the first unpack attempt (without password) reports a password error or decryption errors; this saves unnecessary unpack attempts for damaged unencrypted archives;
- options UnrarCmd and SevenZipCmd can include extra switches to pass to unrar/7-zip:
- This allows for easy passing of additional parameters without creating of proxy shell scripts;
- improved news server connections handling:
- if a download of an article fails due to connection error the news server becomes temporary disabled (blocked) for several seconds (defined by option RetryInterval);
- the download is then retried on another news server (of the same level) if available;
- if no other news servers (of the same level) exist the program will retry the same news server after its block interval expires;
- this increases failure tolerance when multiple news servers are used;
- added on-demand queue sorting:
- one click on column title in web interface sorts the selected or all items;
- if the items were already sorted in that order they are sorted backwards; in other words the second click sorts in descending order;
- when sorting selected items they are also grouped together in a case there were holes between selected items;
- RPC-method editqueue has new command GroupSort, parameter Text must be one of: name, priority, category, size, left; add character + or - to sort to explicitly define ascending or descending order (for example name-); if none of these characters is used the auto-mode is active: the items are sorted in ascending order first, if nothing changed - they are sorted again in descending order;
- added restricted user and add-user:
- restricted user has access to most program functions but cannot see security related options (including usernames and passwords) and cannot save configuration;
- restricted user can be used with other programs and web-sites;
- add-user can only add new downloads via RPC-API and can be used with other programs or web-sites;
- added per-nzb logging:
- each nzb now has its own individual log;
- messages printed during download or post-processing are saved;
- the messages can be retrieved later at any time;
- new button Log in the history details dialog;
- button Log in the download details dialog is now active during download too (not only during post-processing);
- the log contains all nzb-related messages except detail-messages and errors printed during retrieving of articles (they would produce way too many messages and are not that useful anyway);
- new option NzbLog to deactivate per-nzb logging if necessary;
- per-nzb logs are saved in the queue-directory (option QueueDir);
- new RPC-method loadlog returns the previously saved messages for a given nzb-file;
- new field MessageCount is returned by RPC-methods listgroups and history and indicates if there are any messages saved for the item;
- parameter NumberOfLogEntries of RPC-method listgroups and the field Log returned by the method are now deprecated, use method loadlog instead;
- field PostInfoText returned by RPC-method listgroups is now automatically filled with the latest message printed by a pp-script eliminating the need to access deprecated field Log';
- new action Mark as success on history page and in history details dialog:
- items marked as success are considered successfully downloaded and processed, which is important for duplicate check;
- use this command if the download was repaired outside of NZBGet;
- new action HistoryMarkSuccess in RPC-method editqueue;
- new subcommand S of command -E H (command line interface);
- new status SUCCESS/MARK can be returned by RPC-method history;
- actions for history items can now be performed for multiple (selected) records:
- post-process again, download again, mark as success, mark as good, mark as bad;
- extended RPC-API method editqueue: for history-records of type URL the action HistoryRedownload can now be used as synonym to HistoryReturn (makes it easier to redownload multiple items of different types (URL and NZB) with one API call).
- options ParIgnoreExt and ExtCleanupDisk can now contain wildcard characters - and ?;
- added new option ServerX.Retention to define server retention time (days); files older than configured server retention time are not even tried on this server;
- added support for negative numeric values in rss filter (useful for fields dupescore and priority);
- added subcommand HA to remote command --list/-L to list the whole history including hidden records;
- added optional parameters to remote command --append/-A allowing to pass duplicate key, duplicate mode and duplicate score; removed parameters F and U of command --append/-A, which were used to set mode (file or URL), which is now detected automatically; the parameters are still supported for compatibility;
- name and category of history items can now be changed in web-interface; RPC-API method editqueue extended with new actions HistorySetName and HistorySetCategory;
- improved timeout handling during establishing of connections;
- updated pp-script EMail.py:
- using the new nzb-log feature;
- new option SendMail allows to choose if the e-mail should be send always or on failure only;
- updated pp-script Logger.py to use the new nzb-log feature;
- improved cleanup (option ExtCleanupDisk):
- if download was successful with health 100% the cleanup is now performed even if par-check and unpack were not made; previously a successful par-check or unpack were required for cleanup;
- now the files are deleted in subdirectories too (recursively);
- added a small button near feed name in the feed menu on downloads-page; a click on the button fetches the feed, whereas a click on the feed title shows feed's content (as before);
- improved detection of malformed nzb-files: nzbs which are valid xml-documents but without nzb content are now rejected with an appropriate error message;
- renamed option CreateBrokenLog to BrokenLog; the old option name is recognized and automatically converted when the configuration is saved in web-interface;
- improved the quality of speed throttling when a speed limit is active;
- added hidden webui setting rowSelect to select records by clicking on any part of the row, not just on the check mark; to activate it change the setting rowSelect in webui/index.js;
- when moving files to final destination the hidden files (with names starting with dot) are considered unimportant and no errors are printed if they cannot be moved; such files (.AppleDouble, .DS_Store, etc.) are usually used by services to hold metadata and can be safely ignored;
- option sets (such as news-servers, categories, etc.) can now be reordered using news buttons move up and move down;
- added button Test Connection to make a news server connection test from web-interface;
- improved timeout handling when connecting to news servers which have multiple addresses;
- improved error handling when communicating with secure servers (do not trying to send quit-command if connection could not be established or was interrupted; this avoids unnecessary timeout);
- improved connection handling when fetching nzb-files and rss feeds; do not print warning Content-Length is not submitted by server... anymore;
- download speed in context menu of menubar icon is now shown in MB/s instead of KB/s (for speeds from 1 MB/s) (Mac OS X only);
- removed shell script nzbgetd which were used to control nzbget as a service; modern systems manage services in a diffreent way and do not require that old script anymore;
- updated info in about dialogs (Windows and Mac OSX);
- updated description of few options;
- changed defaults for few logging options;
- configuration file nzbget.conf is now also searched in the app-directory on all platforms (for easier installation);
- disabled unnecessary assert-statements in par2-module when building in release mode;
- disabled changing of compiler options during configuring in debug mode (--enable-debug); it conflicted with cross-compiling and did not allow to pass extra options via CXXFLAGS; required debug options must be passed via CXXFLAGS now (for example for gcc: CXXFLAGS=-g ./configure --enable-debug);
- improved support for update-scripts:
- all command line parameters used to launch nzbget are passed to the script in env vars NZBUP_CMDLINEX, where X is a parameter number starting with 0;
- if the path to update-script defined in package-info.json does not start with slash the path is considered being relative to application directory;
- new env var NZBUP_RUNMODE (DAEMON, SERVER) is passed to the script;
- fixed: env var NZBUP_PROCESSID had wrong value (ID of the parent process instead of the nzbget process);
- fixed: command make install installed README from par2-subdirectory instead of main README;
- fixed: web-interface may fail to load on Firefox mobile;
- fixed: parsing of RPC-parameters passed via URL were sometimes incorrect;
- fixed: in JSON-RPC the request-id was not transfered back in the response as required by JSON-RPC specification;
- fixed possible crash when using remote command -B dump to print debug info;
- fixed: XML-RPC method history returned invalid xml when used with parameter hidden=true (JSON-RPC worked correct);
- fixed: remote command nzbget -L H may crash if the history contained URL-items with certain status;
- fixed: unlike to all other scripts the update-script should not be automatically terminated when the program quits;
- fixed: action Split may not work for bad nzb-files with missing segments; new Field Progress returned by RPC-method listfiles shows the download progress of the file taking missing articles into account;
- if the lock-file cannot be created or the lock could not be acquired an error message is printed to the log-file;
- fixed: update log shown during automatic update via web-interface may show duplicate messages or messages may clear out;
- fixed: lowercase hex digits were not correctly parsed in URLs passed to RPC-API method append;
- suppress printing of memory leaks reports when the program terminates because of wrong command line switches (Windows debug mode only).
14.2 • 15 Feb 2015
- fixed: the program could crash during download when article cache was active (more likely on very high download speeds);
- fixed: unlike to all other scripts the update-script should not be automatically terminated when the program quits;
- fixed: XML-RPC method history returned invalid xml when used with parameter hidden=true (JSON-RPC was fine).
14.1 • 15 Feb 2015
- fixed: program could crash during unpack (Posix) or unpack failure was reported (Windows);
- fixed: quick par-check could hang on certain nzb-files containing multiple par-sets (occured only in 64 bit mode);
- fixed: menubar icon was not visible on Mac OSX in dark mode;
system sleep on idle state is now prevented during download and post-processing (Mac OSX only);
- fixed: unrar may sometimes fail with message no files to extract (certain Linux systems);
- fixed false memory leak warning when compiled in debug mode (Windows only);
- fixed: Mac OSX app didn't work on OSX 10.7 Lion.
14.0 • 9 Nov 2014
- added article cache:
- new option ArticleCache defines memory limit to use for cache;
- when cache is active the articles are written into cache first and then all flushed to disk into the destination file;
- article cache reduces disk IO and may reduce file fragmentation improving post-processing speed (unpack);
- it works with both writing modes (direct write on and off);
- when option DirectWrite is disabled the cache should be big enough (for best performance) to accommodate all articles of one file (sometimes up to 500 MB) in order to avoid writing articles into temporary files, otherwise temporary files are used for articles which do not fit into cache;
- when used in combination with DirectWrite there is no such limitation and even a small cache (100 MB or even less) can be used effectively; when the cache becomes full it is flushed automatically (directly into destination file) providing room for new articles;
- new row in the statistics and status dialog in web-interface indicates the amount of memory used for cache;
- new fields ArticleCacheLo, ArticleCacheHi and ArticleCacheMB returned by RPC-method status;
- renamed option WriteBufferSize into WriteBuffer:
- changed the dimension - now option is set in kilobytes instead of bytes;
- old name and value are automatically converted;
- if the size of article is below the value defined by the option, the buffer is allocated with the articles size (to not waste memory);
- therefore the special value -1 is not required anymore; during conversion -1 is replaced with 1024 (1 megabyte) but it can be of course manually changed to any other value later;
- integrated par2-module (libpar2) into NZBGet’s source code tree:
- the par2-module is now built automatically during building of NZBGet;
- this eliminates dependency from external libpar2 and libsigc++...
- ...making it much easier for users to compile NZBGet without patching libpar2;
- added quick file verification during par-check/repair:
- if par-repair is required for download the files downloaded without errors are verified quickly by comparing their checksums against the checksums stored in the par2-file;
- this makes the verification of undamaged files almost instant;
- damaged (partially downloaded) files are also verified quickly by comparing block's checksums against the checksums stored in the par2-file; when necessary the small amounts of data is read from files to calculate block's checksums;
- this makes the verification of damaged files very fast;
- new option ParQuick (active by default);
- when quick par verification is active the repaired files are not verified to save time; the only reason for incorrect files after repair can be hardware errors (memory, disk) but this is not something NZBGet should care about;
- if unpack fails (excluding invalid password errors) and quick par-check does not find any errors or quick par-check was already performed the full par-check is performed; this helps in certain rare situations caused by abnormal program termination;
- added multithreading par-repair:
- doesn't depend on other libraries and works everywhere, on all platforms and all CPUs (with multiple cores), no special compiling steps are required;
- new option ParThreads to set the number of threads for repairing;
- the number of repair threads is automatically reduced to the amount of bad blocks if there are too few of them; if there is only one bad block the multithreading par-repair is switched off to avoid overhead of thread synchronisation (which does not make sense for one working thread);
- new option ParBuffer to define the memory limit to use during par-repair;
- added support for detection of bad downloads (fakes, etc.):
- queue-scripts are now called after every downloaded file included in nzb;
- new events FILE_DOWNLOADED and NZB_DOWNLOADED of parameter NZBNA_EVENT; new env. var NZBNA_DIRECTORY passed to queue scripts;
- queue-scripts have a chance to detect bad downloads when the download is in progress and cancel bad downloads by printing a special command; downloads marked as bad become status FAILURE/BAD and are processed by the program as failures (triggering duplicate handling); scripts executed thereafter see the new status and can react accordingly (inform an indexer or a third-party automation tool);
- when a script marks nzb as bad the nzb is deleted from queue, no further internal post-processing (par, unrar, etc.) is made for the nzb but all post-processing scripts are executed; if option DeleteCleanupDisk is active the already downloaded files are deleted;
- new status BAD for field DeleteStatus of nzb-item in RPC-method history;
- queue-scripts can set post-processing parameters by printing special command, just like post-processing-scripts can do that; this simplifies transferring (of small amount) of information between queue-scripts and post-processing-scripts;
- scripts supporting two modes (post-processing-mode and queue-mode) are now executed if selected in post-processing parameters: either in options PostScript and CategoryX.PostScript or manually on page Postprocess of download details dialog in web-interface; it is not necessary to select dual-mode scripts in option QueueScript; that provides more flexibility: the scripts can be selected per-category or activated/deactivated for each nzb individually;
- added option EventInterval allowing to reduce the number of calls of queue-scripts, which can be useful on slow systems;
- queue scripts can define what events they are interested in; this avoids unnecessary calling of the scripts which do not process certain events;
- the list of scripts (pp-scripts, queue-scripts, etc.) is now read once on program start instead of reading everytime a script is executed:
- that eliminates the unnecessary disk access;
- the settings page of web-interface loads available scripts every time the page is shown;
- this allows to configure newly added scripts without restarting the program first (just like it was before); a restart is still required to apply the settings (just like it was before);
- RPC-method configtemplates has new parameter loadFromDisk
- options ParIgnoreExt and ExtCleanupDisk are now respected by par-check (in addition to being respected by par-rename): if all damaged or missing files are covered by these options then no par-repair is performed and the download assumed successful;
- added new search field dupestatus for use in rss filters:
- the search is performed through download queue and history testing items with the same dupekey or title as current rss item;
- the field contains comma-separated list of following possible statuses (if duplicates were found): QUEUED, DOWNLOADING, SUCCESS, WARNING, FAILURE or an empty string if there were no matching items found;
- added log file rotation:
- options CreateLog and ResetLog replaced with new option WriteLog (none, append, reset, rotate);
- new option RotateLog defines rotation period;
- improved joining of splitted files:
- instead of performing par-repair the files are now joined by unpacker, which is much faster;
- the files splitted before creating of par-sets are now joined as well (they were not joined in v13 because par-repair has nothing to repair in this case);
- the unpacker can detect missing fragments and requests par-check if necessary;
- added per-nzb time and size statistics:
- total time, download, verify, repair and unpack times, downloaded size and average speed, shown in history details dialog via click on the row with total size in statistics block;
- RPC-methods listgroups and history return new fields: DownloadedSizeLo, DownloadedSizeHi, DownloadedSizeMB, DownloadTimeSec, PostTotalTimeSec, ParTimeSec, RepairTimeSec, UnpackTimeSec;
- pp-script EMail.py now supports mail server relays (thanks to l2g for the patch);
- when compiled in debug mode new field process id is printed to the file log for each row (it is easier to identify processes than threads);
- if an nzb has only few failed articles it may have completion shown as 100%; now it is shown as 99.9% to indicate that not everything was successfully downloaded;
- updated configure-script to not require gcrypt for newer GnuTLS versions (when gcrypt is not needed);
- for downloads delayed due to propagation delay (option PropagationDelay) a new badge propagation is now shown near download name;
- added new option UrlTimeout to set timeout for URL fetching and RSS feed fetching; renamed option ConnectionTimeout to ArticleTimeout;
- improved pp-script EMail.py: now it can send time statistics (thanks to JVM for the patch);
- improvement in duplicate check:
- if a new download with empty dupekey and empty dupescore is marked as dupe and the another download with the same name have non empty dupekey or dupescore these properties are copied from that download;
- this is useful because the new download is most likely another upload of the same file and it should have the same duplicate properties for best duplicate handling results;
- when connecting in remote mode using command line parameter --connect/-C the option ControlIP is now interpreted as 127.0.0.1 if it is set to 0.0.0.0 (instead of failing with an error message);
- when option ContinuePartial is active the current state is saved not more often than once per second instead of after every downloaded article; this significantly reduce the amount of disk writings on high download speeds;
- added commands PausePostProcess and UnpausePostProcess to scheduler;
- unpack is now automatically immediately aborted if unrar reports CRC errors;
- unpack is now immediately aborted if unrar reports wrong password (works for rar5 as well as for older formats); the unpack error status PASSWORD is now set for older formats too (not only rar5);
- improved cleanup:
- disk cleanup is now not performed if unrar failed even if par-check was successful;
- queue cleanup (for remaining par2-files) is now made more smarter: the files are kept (parked) if they can be used by command post-process again and are removed otherwise;
- improved scan-scripts: if the category of nzb-file is changed by the scan-script the assigned post-processing scripts are now automatically reset according to the new category;
- added missing new line character at the end of the help screen printed by nzbget -h;
- better error reporting if a temp file could not be found;
- added news server name to message Cancelling hanging download ... to help identifying problematic servers;
- added column age to history tab in web-interface;
- debug builds for Windows now print call stack on crash to the log-file, which is very useful for debugging;
- additional parameters (env. vars) are now passed to scan scripts: NZBNP_DUPEKEY, NZBNP_DUPESCORE, NZBNP_DUPEMODE; scan-scripts can now set dupekey, dupemode and dupescore by printing new special commands;
- fixed potential crash which could happen in debug mode during program restart;
- fixed: program could crash during restart if an extension script was running; now all active scripts are terminated during restart; - fixed: RPC-method editqueue with action HistoryReturn caused a crash if the history item did not have any remaining (parked) files;
- fixed: RPC-method saveconfig did not work via XML-RPC (but worked via JSON-RPC);
- fixed: a superfluous comma at the end of option TaskX.Time was interpreted as an error or may cause a crash;
- fixed: relative destination paths (options DestDir and CategoryX.DestDir) caused failures during unrar;
- fixed: splitted .cbr-files were not properly joined;
- fixed: inner files (files listed in nzb) bigger than 2GB could not be downloaded;
- fixed: cleanup may leave some files undeleted (Mac OSX only);
- fixed: compiler error if configured using parameter --disable-gzip;
- fixed: one log-message was printed only to global log but not to nzb-item pp-log;
- fixed: par-check could fail on valid files (bug introduced in libpar2 0.3);
- fixed: scheduler tasks were not checked after wake up if the sleep time was longer than 90 minutes;
- fixed: the pause extra pars-state was missing in the pause/resume-loop of curses interface, key P;
- fixed: web interface showed an error box when trying to submit files with extensions other than .nzb, although these files could be processed by a scan-script; now the error is not shown if any scan-script is set in options.
13.0 • 14 Jul 2014
- reworked download queue:
- queue now holds nzb-jobs instead of individual files (contained within nzbs);
- this drastically improves performance when managing queue containing big nzb-files on operations such as pause/unpause/move items;
- tested with queue of 30 nzb-files each 40-100GB size (total queue size 1.5TB) - queue managing is fast even on slow device;
- limitation: individual files (contained within nzbs) now cannot be moved beyond nzb borders (in older version it was possible to move individual files freely and mix files from different nzbs, although this feature was not supported in web-interface and therefore was not much known);
- this change opens doors for further speed optimizations and integration of download queue with post-processing queue and possibly url-queue;
- current download data such as remained size or size of paused files is now internally automatically updated on related events (download of article is completed, queue edited, etc.);
- this eliminates the need of calculating this data upon each RPC-request (from web-interface) and greatly decrease CPU load of processing RPC-requests when having large download queue (and/or large nzb-files in queue);
- field Priority was removed from individual files;
- instead nzb-files (collections) now have field Priority;
- nzb-files now also have new fields MinTime and MaxTime, which are set when nzb-file is parsed and then kept;
- this eliminates the need of recalculation file statistics (min and max priority, min and max time);
- removed action FileSetPriority from RPC-command editqueue;
- removed action I from remote command --edit/-E for individual files (now it is allowed for groups only);
- removed few (not more necessary) checks from duplicate manager;
- merged post-processing queue into main download queue;
- changing the order of (pp-queued) items in the download queue now also means changing the order of post-processing jobs;
- priorities of downloads are now respected when picking the next queued post-processing job;
- the moving of download items in web-interface is now allowed for downloads queued for post-processing;
- removed actions of remote command --edit/-E and of RPC-method editqueue used to move post-processing jobs in the post-processing queue (the moving of download items should be used instead);
- remote command -E/--edit and RPC-method editqueue now use NZBIDs of groups to edit groups (instead of using ID of any file in the group as in older versions);
- remote command -L/--list for groups (G) and group-view in curses-frontend now print NZBIDs instead of FirstID-LastID;
- RPC-method listgroups returns NZBIDs in fields FirstID and LastID, which are usually used as arguments to editqueue (for compatibility with existing third-party software);
- items queued for post-processing and not having any remaining files now can be edited (to cancel post-processing), which was not possibly before due to lack of LastID in empty groups;
- edit commands for download queue and post-processing queue are now both use the same IDs (NZBIDs);
- merged url queue into main download queue;
- urls added to queue are now immediately shown in web-interface;
- urls can be reordered and deleted;
- when urls are fetched the downloaded nzb-files are put into queue at the positions of their urls;
- this solves the problem with fetched nzb-files ordered differently than the urls if the fetching of upper (position wise) urls were completed after the lower urls;
- removed options ReloadUrlQueue and ReloadPostQueue since there are no separate url- and post-queues anymore;
- nzb-files added via urls have new field URL which can be accessed via RPC-methods listgroups and history;
- new env. var. NZBNP_URL, NZBNA_URL and NZBPP_URL passed to scan-, queue- and pp-scripts;
- removed remote command --list U, urls are now shown as groups by command --list G;
- RPC-method urlqueue is still supported for compatibility but should not be used since the urls are now returned by method listgroups, the entries have new field Kind which can be NZB or URL;
- added collecting of download volume statistics data per news server:
- in web-interface the data is shown as chart in Statistics and Status dialog;
- new RPC-method servervolumes returns the collected data;
- new RPC-method resetservervolume to reset the custom counter;
- fast par-renamer now automatically detects and renames misnamed (obfuscated) par2-files;
- for downloads not having any (obviously named) par2-files the critical health is assumed 85% instead of 100% as the absense of par2-files suggests:
- this avoids the possibly false triggering of health-check action (delete or pause) for downloads having misnamed (obfuscated) par2-files;
- combined with improved fast par-renamer this provides proper processing of downloads with misnamed (obfuscated) par2-files;
- fast par-renamer now detects missing files (files listed in par2-files but not present on disk): - when checking for missing files the files whose extensions match with option ExtCleanupDisk are ignored now (to avoid time consuming restoring of files which will be deleted later anyway);
- added option ParIgnoreExt which lists files which do not trigger par-repair if they are missing (similar to option ExtCleanupDisk but those files are not deleted during cleanup);
- added new choice Always for option ParCheck:
- it forces the par-check for every (even undamaged) download but in contrast to choice Force only one par2-file is downloaded first;
- additional files are downloaded if needed;
- improved par-check for damaged collections with multiple par-sets and having missing files:
- only orphaned files (not belonging to any par-set) are scanned when looking for missing files;
- this greatly decrease the par-check time for big collections;
- eliminated the distinction between manual pause and soft-pause:
- there is only one pause register now;
- options ParPauseQueue, UnpackPauseQueue and ScriptPauseQueue do not change the state of the pause but instead are respected directly;
- RPC-methods pausedownload2 and resumedownload2 are aliases to pausedownload and resumedownload (kept for compatibility);
- field Download2Paused of RPC-method status is an alias to DownloadPaused (kept for compatibility);
- action D2 of remote commands --pause/-P and --unpause/-U is not supported anymore;
- implemented general scripts concept:
- the concept is a logical extension of the post-processing scripts concept initially introduced in v11;
- the general scripts concept applies to all scripts used in the program: scan-script, queue-script and scheduler-script (in addition to post-processing scripts);
- option NzbProcess renamed to ScanScript;
- option NzbAddedProcess renamed to QueueScript;
- option DefScript and CategoryX.DefScript renamed to PostScript and CategoryX.PostScript (options with old names are recognized and automatically converted on first settings saving);
- new option TaskX.Script;
- old option TaskX.Process kept for scheduling of external programs not related to nzbget (to avoid writing of intermediate proxy scripts);
- scan-script, queue-script and scheduler-script now work similar to post-processing scripts:
- scripts must be put into scripts-directory;
- scripts can be configured via web-interface and can have options;
- multiple scripts can be chosen for each scripts-option, all chosen scripts are executed;
- program and script options are passed to the script as env. variables;
- renamed default directory with scripts from ppscripts to scripts;
- script signature indicates the type of script (post-processing, scan, queue or scheduler);
- one script can have mixed signature allowing it to be used for multiple purposes (for example a notification script can send a notification on both events: after adding to queue and after post-processing);
- result of RPC-method configtemplates has new fields PostScript, ScanScript, QueueScript, SchedulerScript to indicate the purpose of the script;
- queue-script (formerly NzbAddedProcess) has new parameter NZBNA_EVENT indicating the reason of calling the script; currently the script is called only after adding of files to download queue and therefore the parameter is always set to NZB_ADDED but the queue-script can be called on other events in the future too;
- post-processing scripts now have two new parameters:
- env. var NZBPP_STATUS indicates the status of download including the total status (SUCCESS, FAILURE, etc.) and the detail field (for example in case of failures: PAR, UNPACK, etc.);
- env. var NZBPP_TOTALSTATUS is equal to the total status of parameter NZBPP_STATUS and is provided for convenience (to avoid parsing of NZBPP_STATUS);
- the new parameters provide a simple way for pp-scripts to determine download status without a guess work needed in previous versions;
- parameters NZBPP_PARSTATUS and NZBPP_UNPACKSTATUS are now considered deprecated (still passed for compatibility);
- updated script EMail.py to use new parameters NZBPP_TOTALSTATUS and NZBPP_STATUS instead of NZBPP_PARSTATUS and NZBPP_UNPACKSTATUS;
- when changing category in web-interface the post-processing parameters are now automatically updated according to new category settings:
- only parameters which are different in old and new category are changed;
- parameters which present in both or in neither categories are not changed;
- that ensures that only the relevant parameters are updated and parameters which were manually changed by user remain they settings when it make sense;
- in the download details dialog the new parameters are updated on the postprocess-tab directly after changing of category and can be controlled before saving;
- in the edit multiple downloads dialog the parameters are updated individually for each download on saving;
- new action CP of remote command --edit/-E for groups to set category and apply parameters;
- new action GroupApplyCategory of RPC-method editqueue** for the same purpose;
- changed the way option ContinuePartial works:
- now the information about completed articles is stored in a special file in QueueDir;
- when option DirectWrite is active no separate flag-files per article are created in TempDir;
- the file contains additional information, which were not stored/available before;
- improved per-server/per-nzb article completion statistics:
- the statistics are now available for active downloads in details dialog (not only for history);
- the info on that page is constantly updated as long as the page is active (unless refresh is disabled);
- download age info removed from details dialog to save place (it is shown in the download list anyway);
- if backup news-servers start to be used for nzb-file a badge appears in the download list showing the percentage of articles downloaded from backup servers;
- click on the badge opens download details dialog directly on the completion page;
- per-server/per-nzb article completion statistics are now available via RPC-method listgroups for active downloads (not only for history);
- improved RPC-API:
- RPC-method listgroups now returns info about post-processing similar to info returned by method postqueue;
- RPC-method postqueue is obsolete now;
- web-interface requires less requests to NZBGet on each page update and it is now easier for third-party developers to obtain the info about download and post-processing status (no need to merge download queue and post queue);
- RPC-method listgroups now returns new field Status making it easier for third-party apps to determine the status of download entry;
- new field Status in RPC-method history to allow third-party apps easier determine the status of an item without inspecting status-fields of every processing step;
- changed web-interface to use new field Status;
- method append now returns id of added nzb-file or 0 on an error;
- this makes it easier for third-party apps to track added nzb-files;
- for backward compatibility with older software expecting a boolean result the old version of method append is still supported;
- the new version of method append has a different signature (order of parameters);
- parameter content can now be either nzb-file content (encoded in base 64) or an URL;
- this makes the method appendurl obsolete (still supported for compatibility);
- if an URL was added to queue the queue entry created for fetched nzb-file has the same NZBID for easier tracking;
- history items now preserve NZBID from queue items; that makes the tracking of items across queue and history easier for third-party apps;
- field NZBID returned by RPC-method history is now available for history items of all kinds (NZB, URL, DUP); field ID is deprecated and should not be used;
- added force-priorities:
- downloads with priorities equal to or greater than 900 are downloaded and post-processed even if the program is in paused state (force mode);
- in web-interface the combo for choosing priority has new entry force (priority value 900);
- new fields ForcedSizeLo, ForcedSizeHi and ForcedSizeMB returned by RPC-method status;
- post-processing scripts which move the whole download into a new location can inform the program about new location using command [NZB] DIRECTORY=/new/path, allowing other scripts to process files further;
- added support for power management on windows to avoid pc going into sleep mode during download or post-processing;
- apostrophe is not considered an invalid file name character anymore;
- adjusted modules initialization to avoid possible bugs due to delayed thread starts;
- reorganized source code directory structure: created directory daemon with several subdirectories and put all source code files there;
- added new option PropagationDelay, which sets the minimum post age to download; newer posts are kept on hold in download queue until they get older than the defined delay, after that they are downloaded;
- download speeds above 1024 KB/s are now indicated in MB/s;
- data sizes above 1000 GB are now shown as TB in web-interface (instead of GB);
- splitted files are now joined automatically (again);
- adjusted modules initialization to avoid possible bugs due to delayed thread starts;
- extended info printed by remote command nzbget -B dump (for debug purposes);
- eliminated loop waiting time in queue coordinator on certain conditions - may improve performance on very high speed connections;
- increased few wait intervals which were unnecessary too small;
- improved error reporting: added error check when closing article file for writing and when deleting files or directories;
- when building nzbget if both OpenSSL and GnuTLS are available now using OpenSSL by default (the preferred library can still be selected with configure-parameter --with-tlslib=OpenSSL/GnuTLS);
- windows version is now configured to use OpenSSL instead of GnuTLS; windows binaries provided on download page now use OpenSSL;
- column age in web-interface now shows minutes for recent posts (instead of 0 h);
- remote command -B dump now can be used also in release (non-debug) versions and prints useful debug data as INFO instead of DEBUG;
- to detect daylight saving activation/deactivation the time zone information is now checked every minute if a download is active or once in 3 hours if the program is in stand-by; these delays should work well with hibernation mode on synology);
- pp-script EMail.py now takes the status of previous pp-scripts into account and report a failure if any of the scripts has failed;
- updated all links to go to new domain (nzbget.net);
- impoved error reporting if unpacker or par-renamer fail to move files;
- removed libpar2-patches from NZBGet source tree; the documentation now suggests to use the libpar2 version maintained by Debian/Ubuntu team, which already includes all necessary patches;
- removed patches to create libpar2 and libsigc++ project files for Visual Studio on Windows, no one needed them anyway;
- fixed: the program could crash during cleanup if files with invalid timestamps were found in the directory (windows only);
- fixed: RSS feed preview dialog displayed slightly incorrect post ages because of the wrong time zone conversion;
- fixed: sometimes URLs were removed too early from the feed history causing them to be detected as new and fetched again; if duplicate check was not active the same nzb-files could be downloaded again;
- fixed: strange (damaged?) par2-files could cause a crash during par-renaming;
- fixed: damaged nzb-files containing multiple par-sets and not having enough par-blocks could cause a crash during par-check;
- fixed: if during par-repair the downloaded extra par-files were damaged and the repair was terminated with failure status the post-processing scripts were executed twice sometimes;
- fixed: post-processing scripts were not executed in standalone mode (nzbget /path/to/file.nzb);
- fixed: renaming or deleting of temporary files could fail, especially when options UnpackPauseQueue and ScriptPauseQueue were not active (windows only);
- fixed: per-server/per-nzb article completion statistics could be inaccurate for nzb-files whose download were interrupted by reload/restart;
- fixed: after deleting servers from config file the program could crash on start when loading server volume statistics data from disk;
- fixed: download speeds above approx. 70 MB/s were not indicated correctly in web-interface and by RPC-method status;
- fixed: cancelling of active par-job sometimes didn't work;
- fixed: par-check could hang on renamed and splitted files;
- fixed: the program could crash during parsing of malformed nzb-files;
- fixed: errors during loading of queue from disk state may render the already loaded parts useless too; now at least these parts of queue are used;
- fixed: queue was not locked during loading on program start and that could cause problems;
- fixed: data sizes exactly equal to 10, 100, 1000 MB or GB were formatted using 4 digits instead of 3 (one digit after decimal point too much);
- fixed: if post-processing step move failed, the command post-process again did not try to move again;
- fixed: nzb-files were sometimes not deleted from NzbDir (option NzbCleanupDisk);
- fixed: scheduler command FetchFeed did not work properly with parameter 0 (fetch all feeds).
- fixed: port number was not sent in headers when downloading from URLs which could cause issues with RSS for web-sites using non-standard http ports;
- fixed: queued nzb-files was not deleted from disk when deleting download without history tracking.
12.0 • 21 Jan 2014
- added RSS feeds support:
- new options FeedX.Name, FeedX.URL, FeedX.Filter, FeedX.Interval, FeedX.PauseNzb, FeedX.Category, FeedX.Priority (section Rss Feeds);
- new option FeedHistory (section Download Queue);
- button Preview Feed on settings tab near each feed definition;
- new toolbar button Feeds on downloads tab with menu to view feeds or fetch new nzbs from all feeds (the button is visible only if there are feeds defined in settings);
- new dialog to see feed content showing status of each item (new, fetched, backlog) with ability to manually fetch selected items;
- powerful filters for RSS feeds;
- new dialog to build filters in web-interface with instant preview;
- added download health monitoring:
- health indicates download status, whether the file is damaged and how much;
- 100% health means no download errors occurred; 0% means all articles failed;
- there is also a critical health which is calculated for each nzb-file based on number and size of par-files;
- if during download the health goes down below 100% a health badge appears near download name indicating the necessity of par-repair; the indicator can be orange (repair may be possible) or red (unrepairable) if the health goes down below critical health;
- new option HealthCheck to define what to do with unhealthy (unrepairable) downloads (pause, delete, none);
- health and critical health are displayed in download-edit dialog; health is displayed in history dialog; if download was aborted (HealthCheck=delete) this is indicated in history dialog;
- health allows to determine download status for downloads which have unpack and/or par-check disabled; for such downloads the status in history is shown based on health: success (health=100%), damaged (health critical) or failure (health critical);
- par-check is now automatically started for downloads having health below 100%; this works independently of unpack (even if unpack is disabled);
- for downloads having health less than critical health no par-check is performed (it would fail); Instead the par-check status is set to failure automatically saving time of actual par-check;
- new fields Health and CriticalHealth are returned by RPC-Method listgroups;
- new fields Health, CriticalHealth, Deleted and HealthDeleted are returned by RPC-Method history;
- new parameters NZBPP_HEALTH and NZBPP_CRITICALHEALTH are passed to pp-scripts;
- added collecting of server usage statistical data for each download:
- number of successful and failed article downloads per news server;
- new page in history dialog shows collected statistics;
- new fields in RPC-method history: ServerStats (array), TotalArticles, SuccessArticles, FailedArticles;
- new env. vars passed to pp-scripts: NZBPP_TOTALARTICLES, NZBPP_SUCCESSARTICLES, NZBPP_FAILEDARTICLES and per used news server: NZBPP_SERVERX_SUCCESSARTICLES, NZBPP_SERVERX_FAILEDARTICLES;
- also new env.var HEALTHDELETED;
- added smart duplicates feature:
- mostly for use with RSS feeds;
- automatic detection of duplicate nzb-files to avoid download of duplicates;
- nzb-files can be also manually marked as duplicates;
- if download fails - automatically choose another release (duplicate);
- if download succeeds all remaining duplicates are skipped (not downloaded);
- download items have new properties to tune duplicate handling behavior: duplicate key, duplicate score and duplicate mode;
- if download was deleted by duplicate check its status in the history is shown as DUPE;
- new actions GroupSetDupeKey, GroupSetDupeScore, GroupSetDupeMode, HistorySetDupeKey, HistorySetDupeScore, HistorySetDupeMode, HistoryMarkBad and HistoryMarkGood of RPC-command editqueue; new actions B and G of command --edit/-E for history items (subcommand H);
- when deleting downloads from queue there are three options now: move to history, move to history as duplicate and delete without history tracking;
- new actions GroupDupeDelete, GroupFinalDelete and HistorySetDupeBackup in RPC-method editqueue;
- RPC-commands listgroups, postqueue and history now return more info about nzb-item (many new fields);
- removed option MergeNzb because it conflicts with duplicate handling, items can be merged manually if necessary;
- automatic detection of exactly same nzb-files (same content) coming from different sources (different RSS feeds etc.); individual files (inside nzb-file) having extensions listed in option ExtCleanupDisk are excluded from content comparison (unless these are par2-files, which are never excluded);
- when history item expires (as defined by option KeepHistory) and the duplicate check is active (option DupeCheck) the item is not completely deleted from history; instead the amount of stored data reduces to minimum required for duplicate check (about 200 bytes vs 2000 bytes for full history item);
- such old history items are not shown in web-interface by default (to avoid transferring of large amount of history items);
- new button Hidden in web-interface to show hidden history items; the items are marked with badge hidden;
- RPC-method editqueue has now two actions to delete history records: HistoryDelete, HistoryFinal; action HistoryDelete which has existed before now hides records, already hidden records are ignored;
- added functions Mark as Bad and Mark as Good for history items;
- duplicate properties (dupekey, dupescore and dupemode) can now be viewed and changed in download-edit-dialog and history-edit-dialog via new button Dupe;
- for full documentation see [[RSS#Duplicates]];
- created NZBGet.app - NZBGet is now a user friendly Mac OSX application with easy installation and seamless integration into OS UI: works in background, is controlled from a web-browser, few important functions are accessible via menubar icon;
- better Windows package:
- unrar is included;
- several options are set to better defaults;
- all paths are set as relative paths to program directory; the program can be started after installation without editing anything in config;
- included two new batch-files:
- nzbget-start.bat - starts program in normal mode (dos box);
- nzbget-recovery-mode.bat - starts with empty password (dos box);
- both batch files open browser window with correct address;
- config-file template is stored in nzbget.conf.template;
- nzbget.conf is not included in the package. When the program is started for the first time (using one of batch files) the template config file is copied into nzbget.conf;
- updates will be easy in the future: to update the program all files from newer archive must be extracted over old files. Since the archive doesn't have nzbget.conf, the existing config is kept unmodified. The template config file will be updated;
- added file README-WINDOWS.txt with small instructions;
- version string now includes revision number (like r789);
- added automatic updates:
- new button Check for updates on settings tab of web-interface, in section SYSTEM, initiates check and shows dialog allowing to install new version;
- it is possible to choose between stable, testing and development branches;
- this feature is for end-users using binary packages created and updated by maintainers, who need to write an update script specific for platform;
- the script is then called by NZBGet when user clicks on install-button;
- the script must download and install new version;
- for more info visit [[Packaging]];
- news servers can now be temporarily disabled via speed limit dialog without reloading of the program:
- new option ServerX.Active to disable servers via settings;
- new option ServerX.Name to use for logging and in UI;
- changed the way how option Unpack works:
- instead of enabling/disabling the unpacker as a whole, it now defines the initial value of post-processing parameter Unpack for nzb-file when it is added to queue;
- this makes it now possible to disable Unpack globally but still enable it for selected nzb-files;
- new option CategoryX.Unpack to set unpack on a per category basis;
- combined all footer buttons into one button Actions with menu:
- in download-edit-dialog: Pause/Resume, Delete and Cancel Post-Processing;
- in history-dialog: Delete, Post-Process Again and Download Remaining Files (Return to Queue);
- DirectNZB headers X-DNZB-MoreInfo and X-DNZB-Details are now processed when downloading URLs and the links More Info and Details are shown in download-edit-dialog and in history-dialog in Actions menu;
- program can now be stopped via web-interface: new button shutdown in section SYSTEM;
- added menu View to settings page which allows to switch to Compact Mode when option descriptions are hidden;
- added confirmation dialog by leaving settings page if there are unsaved changes;
- downloads manually deleted from queue are shown with status deleted in the history (instead of unknown);
- all table columns except Name now have fixed widths to avoid annoying layout changes especially during post-processing when long status messages are displayed in the name-column;
- added filter buttons to messages tab (info, warning, etc.);
- added automatic par-renaming of extracted files if archive includes par-files;
- added support for http redirects when fetching URLs;
- added new command Download again for history items; new action HistoryRedownload of RPC-method editqueue; for controlling via command line: new action A of subcommand H of command --edit/-E;
- download queue is now saved in a more safe way to avoid potential loss of queue if the program crashes during saving of queue;
- destination directory for option CategoryX.DestDir is not checked/created on program start anymore (only when a download starts for that category); this helps when certain categories are configured for external disks, which are not always connected;
- added new option CategoryX.Aliases to configure category name matching with nzb-sites; especially useful with rss feeds;
- in RPC-Method appendurl parameter addtop adds nzb to the top of the main download queue (not only to the top of the URL queue);
- new logo (thanks to dogzipp for the logo);
- added support for metatag password in nzb-files;
- pp-scripts which move files can now inform the program about new location by printing text [NZB] FINALDIR=/path/to/files; the final path is then shown in history dialog instead of download path;
- new env-var NZBPP_FINALDIR passed to pp-scripts;
- pp-scripts can now set post-processing parameters by printing command [NZB] NZBPR_varname=value; this allows scripts which are executed sooner to pass data for scripts executed later;
- added new option AuthorizedIP to set the list of IP-addresses which may connect without authorization;
- new option ParRename to force par-renaming as a first post-processing step (active by default); this saves an unpack attempt and is even more useful if unpack is disabled;
- post-processing progress label is now automatically trimmed if it doesn't fill into one line; this avoids layout breaking if the text is too long;
- reversed the order of priorities in comboboxes in dialogs: the highest priority - at the top, the lowest - at the bottom;
- small changes in button captions: edit dialogs called from settings page (choose script, choose order, build rss filter) now have buttons Discard/Apply instead of Close/Save; in all other dialogs button Close renamed to Cancel unless it was the only button in dialog;
- small change in css: slightly reduced the max height of modal dialogs to better work on notebooks;
- options DeleteCleanupDisk and NzbCleanupDisk are now active by default (in the example config file);
- extended add-dialog with options Add paused and Disable duplicate check;
- source nzb-files are now deleted when download-item leaves queue and history (option NzbCleanupDisk);
- when deleting downloads from queue the messages about deleted individual files are now printed as detail instead of info;
- failed article downloads are now logged as detail instead of warning to reduce number of warnings for downloads removed from server (DMCA); one warning is printed for a file with a summary of number of failed downloads for the file;
- tuned algorithm calculating maximum threads limit to allow more threads for backup server connections (related to option TreadLimit removed in v11); this may sometimes increase speed when backup servers were used;
- by adding nzb-file to queue via RPC-methods append and appendurl the actual format of the file is checked and if nzb-format is detected the file is added even if it does not have .nzb extension;
- added new option UrlForce to allow URL-downloads (including fetching of RSS feeds and nzb-files from feeds) even if download is paused; the option is active by default;
- destination directory for option DestDir is not checked/created on program start anymore (only when a download starts); this helps when DestDir is mounted to a network drive which is not available on program start;
- added special handling for files .AppleDouble and .DS_Store during unpack to avoid problems on NAS having support for AFP protocol (used on Mac OSX);
- history records with failed script status are now shown as PP-FAILURE in history list (instead of just FAILURE);
- option DiskSpace now checks space on InterDir in addition to DestDir;
- support for rar-archives with non-standard extensions is now limited to file extensions consisting of digits; this is to avoid extracting of rar-archives having non-rar extensions on purpose (example: .cbr);
- if option ParRename is disabled (not recommended) unpacker does not initiate par-rename anymore, instead the full par-verify is performed then;
- for external script the exec-permissions are now added automatically; this makes the installation of pp-scripts and other scripts easier;
- option InterDir is now active by default;
- when option InterDir is used the intermediate destination directory names now include unique numbers to avoid several downloads with same name to use the same directory and interfere with each other;
- when option UnpackCleanupDisk is active all archive files are now deleted from download directory without relying on output printed by unrar; this solves issues with non-ascii-characters in archive file names on some platforms and especially in combination with rar5;
- improved handling of non-ascii characters in file names on windows;
- added support for rar5-format when checking signatures of archives with non-standard file extensions;
- small restructure in settings order:
- combined sections REMOTE CONTROL and PERMISSIONS into one section with name SECURITY;
- moved sections CATEGORIES and RSS FEEDS higher in the section list;
- improved par-check: if main par2-file is corrupted and can not be loaded other par2-files are downloaded and then used as replacement for main par2-file;
- if unpack did not find archive files the par-check is not requested anymore if par-rename was already done;
- better handling of obfuscated nzb-files containing multiple files with same names; removed option StrictParName which was not working good with obfuscated files; if more par-files are required for repair the files with strict names are tried first and then other par-files;
- added new scheduler commands ActivateServer, DeactivateServer and FetchFeed; combined options TaskX.DownloadRate and TaskX.Process into one option TaskX.Param, also used by new commands;
- added status filter buttons to history page;
- if unpack fails with write error (usually because of not enough space on disk) this is shown as status Unpack: space in web-interface; this unpack-status is handled as success by duplicate handling (no download of other duplicate); also added new unpack-status wrong password (only for rar5-archives); env.var. NZBPP_UNPACKSTATUS has two new possible values: 3 (write error) and 4 (wrong password); updated pp-script EMail.py to support new unpack-statuses;
- fixed a potential seg. fault in a commonly used function;
- added new option TimeCorrection to adjust conversion from system time to local time (solves issues with scheduler when using a binary compiled for other platform);
- NZBIDs are now generated with more care avoiding numbering holes possible in previous versions;
- fixed: invalid Offset passed to RPC-method editqueue or command line action -E/--edit could crash the program;
- fixed: crash after downloading of an URL (happen only on certain systems);
- fixed: restoring of settings didn't work for multi-sections (servers, categories, etc.) if they were empty;
- fixed: choosing local files didn't work in Opera;
- fixed: certain characters printed by pp-scripts could crash the program;
- fixed: malformed nzb-file could cause a memory leak;
- fixed: when a duplicate file was detected in collection it was automatically deleted (if option DupeCheck is active) but the total size of collection was not updated;
- when deleting individual files the total count of files in collection was not updated;
- fixed: when multiple nzb-files were added via URL (rss including) at the same time the info about category and priority could get lost for some of files;
- fixed: if unpack fails the created destination directory was not automatically removed (only if option InterDir was active);
- fixed scrolling to the top of page happening by clicking on items in downloads/history lists and on action-buttons in edit-download and history dialogs;
- fixed potential buffer overflow in remote client;
- improved error reporting when creation of temporary output file fails;
- fixed: when deleting download, if all remaining queued files are par2-files the disk cleanup should not be performed, but it was sometimes;
- fixed a potential problem in incorrect using of one library function.
11.0 • 1 Jul 2013
- reworked concept of post-processing scripts:
- multiple scripts can be assigned to each nzb-file;
- all assigned scripts are executed after the nzb-file is downloaded and internally processed (unpack, repair);
- option PostProcess is obsolete;
- new option ScriptDir sets directory where all pp-scripts must be stored;
- new option DefScript sets the default list of pp-scripts to be assigned to nzb-file when it's added to queue;
- new option CategoryX.DefScript to set the default list of pp-scripts on a category basis;
- the execution order of pp-scripts can be set using new option ScriptOrder;
- there are no separate configuration files for pp-scripts;
- configuration options and pp-parameters are defined in the pp-scripts;
- script configuration options are saved in nzbget configuration file (nzbget.conf);
- changed parameters list of RPC-methods loadconfig and saveconfig;
- new RPC-method configtemplates returns configuration descriptions for the program and for all pp-scripts;
- configuration of all scripts can be done in web-interface;
- the pp-scripts assigned to a particular nzb-file can be viewed and changed in web-interface on page pp-parameters in the edit download dialog;
- option PostPauseQueue renamed to ScriptPauseQueue (the old name is still recognized);
- new option ConfigTemplate to define the location of template configuration file (in previous versions it must be always stored in WebDir);
- history dialog shows status of every script;
- the old example post-processing script replaced with two new scripts:
- EMail.py - sends E-Mail notification;
- Logger.py - saves the full post-processing log of the job into file _postprocesslog.txt;
- both pp-scripts are written in python and work on Windows too (in addition to Linux, Mac, etc.);
- added possibility to set post-processing parameters for history items:
- pp-parameters can now be viewed and changed in history dialog in web-interface;
- useful before post-processing again;
- new action HistorySetParameter in RPC-method editqueue;
- new action O in remote command --edit/-E for history items (subcommand H);
- added new feature split download which creates new download from selected files of source download;
- new command Split in web-interface in edit download dialog on page Files;
- new action S in remote command --edit/-E;
- new action FileSplit in JSON-/XML-RPC method editqueue;
- added support for manual par-check:
- if option ParCheck is set to Manual and a damaged download is detected the program downloads all par2-files but doesn't perform par-check; the user must perform par-check/repair manually then (possibly on another, faster computer);
- old values yes/no of option ParCheck renamed to Force and Auto respectively;
- when set to Force all par2-files are always downloaded;
- removed option LoadPars since its functionality is now covered by option ParCheck;
- result of par-check can now have new value Manual repair necessary;
- field ParStatus in RPC-method history can have new value MANUAL;
- parameter NZBPP_PARSTATUS for pp-script can have new value 4 = manual repair necessary;
- when download is resumed in web-interface the option ParCheck=Force is respected and all par2-files are resumed (not only main par2-file);
- automatic deletion of backup-source files after successful par-repair; important when repairing renamed rar-files since this could cause failure during unpack;
- par-checker and renamer now add messages into the log of pp-item (like unpack- and pp-scripts-messages); these message now appear in the log created by scripts Logger.py and EMail.py;
- when a nzb-file is added via web-interface or via remote call the file is now put into incoming nzb-directory (option NzbDir) and then scanned; this has two advantages over the old behavior when the file was parsed directly in memory:
- the file serves as a backup for troubleshootings;
- the file is processed by nzbprocess-script (if defined in option NzbProcess) making the pre-processing much easier;
- new env-var parameters are passed to NzbProcess-script: NZBNP_NZBNAME, NZBNP_CATEGORY, NZBNP_PRIORITY, NZBNP_TOP, NZBNP_PAUSED;
- new commands for use in NzbProcess-scripts: [NZB] TOP=1 to add nzb to the top of queue and [NZB] PAUSED=1 to add nzb-file in paused state;
- reworked post-processor queue:
- only one job is created for each nzb-file; no more separate jobs are created for par-collections within one nzb-file;
- option AllowReProcess removed; a post-processing script is called only once per nzb-file, this behavior cannot be altered anymore;
- with a new feature Split individual par-collections can be processed separately in a more effective way than before;
- improved unicode (utf8) support:
- non-ascii characters are now correctly transferred via JSON-RPC;
- correct displaying of nzb-names and paths in web-interface;
- it is now possible to use non-ascii characters on settings page for option values (such as paths or category names);
- improved unicode support in XML-RPC and JSON-RPC;
- if username and password are defined for a news-server the authentication is now forced (in previous versions the authentication was performed only if requested by server); needed for servers supporting both anonymous (restricted) and authorized (full access) accounts;
- added option ExtCleanupDisk to automatically delete unwanted files (with specified extensions or names) after successful par-check or unpack;
- improvement in JSON-/XML-RPC:
- all ID fields including NZBID are now persistent and remain their values after restart;
- this allows for third-party software to identify nzb-files by ID;
- method history now returns ID of NZB-file in the field NZBID;
- in versions up to 0.8.0 the field NZBID was used to identify history items in the edit-commands HistoryDelete, HistoryReturn, HistoryProcess; since version 9 field ID is used for this purpose; in versions 9-10 field NZBID still existed and had the same value as field ID for compatibility with version 0.8.0; the compatibility is not provided anymore; this change was needed to provide a consistent using of field NZBID across all RPC-methods;
- added support for rar-files with non-standard extensions (such as .001, etc.);
- added functions to backup and restore settings from web-interface; when restoring it's possible to choose what sections to restore (for example only news servers settings or only settings of a certain pp-script) or restore the whole configuration;
- new option ControlUsername to define login user name (if you don't like default username nzbget);
- if a communication error occurs in web-interface, it retries multiple times before giving up with an error message;
- the maximum number of download threads are now managed automatically taking into account the number of allowed connections to news servers; removed option ThreadLimit;
- pp-scripts terminated with unknown status are now considered failed (status=FAILURE instead of status=UNKNOWN);
- new parameter (env. var) NZBPP_NZBID is passed to pp_scripts and contains an internal ID of NZB-file;
- improved thread synchronisation to avoid (short-time) lockings of the program during creation of destination files;
- more detailed error message if a directory could not be created (DstDir, NzbDir, etc.); the message includes error text reported by OS such as permission denied or similar;
- when unpacking the unpack start time is now measured after receiving of unrar copyright message; this provides better unpack time estimation in a case when user uses unpack-script to do some things before executing unrar (for example sending Wake-On-Lan message to the destination NAS); it works with unrar only, it's not possible with 7-Zip because it buffers printed messages;
- when the program is reloaded, a message with version number is printed like on start;
- configuration can now be saved in web-interface even if there were no changes made but if obsolete or invalid options were detected in the config file; the saving removes invalid entries from config file;
- option ControlPassword can now be set to en empty value to disable authentication; useful if nzbget works behind other web-server with its own authentication;
- when deleting downloads via web-interface a proper hint regarding deleting of already downloaded files from disk depending on option DeleteCleanupDisk is displayed;
- if a news-server returns empty or bad article (this may be caused by errors on the news server), the program tries again from the same or other servers (in previous versions the article was marked as failed without other download attempts);
- when a nzb-file whose name ends with .queued is added via web-interface the .queued-part is automatically removed;
- small improvement in multithread synchronization of download queue;
- added link to catalog of pp-scripts to web-interface;
- updated forum URL in about dialog in web-interface;
- small correction in a log-message: removed Request: from message Request: Queue collection...;
- removed option ProcessLogKind; scripts should use prefixes ([INFO], [DETAIL], etc); messages printed without prefixes are added as [INFO];
- removed option AppendNzbDir; if it was disabled that caused problems in par-checker and unpacker; the option is now assumed always active;
- removed option RenameBroken; it caused problems in par-checker (the option existed since early program versions before the par-check was added);
- configure-script now defines SIGCHLD_HANDLER by default on all systems including BSD; this eliminates the need of configure-parameter --enable-sigchld-handler on 64-Bit BSD; the trade-off: 32-Bit BSD now requires --disable-sigchld-handler;
- improved configure-script: defining of symbol FILE_OFFSET_BITS=64, required on some systems, is not necessary anymore;
- fixed: in the option NzbAddedProcess the env-var parameter with nzb-name was passed in NZBNA_NAME, should be NZBNA_NZBNAME; the old parameter name NZBNA_NAME is still supported for compatibility;
- fixed: download time in statistics were incorrect if the computer was put into standby (thanks Frank Kuypers for the patch);
- fixed: when option InterDir was active and the download after unpack contained rar-file with the same name as one of original files (sometimes happen with included subtitles) the original rar-file was kept with name .rar_duplicate1 even if the option UnpackCleanupDisk was active;
- fixed: failed to read download queue from disk if post-processing queue was not empty;
- fixed: when a duplicate file was detected during download the program could hang;
- fixed: symbol DISABLE_TLS must be defined in project settings; defining it in win32.h didn't work properly (Windows only);
- fixed: crash when adding malformed nzb-files with certain structure (Windows only);
- fixed: by deleting of a partially downloaded nzb-file from queue, when the option DeleteCleanupDisk was active, the file _brokenlog.txt was not deleted preventing the directory from automatic deletion;
- fixed: if an error occurs when a RPC-client or web-browser communicates with nzbget the program could crash;
- fixed: if the last file of collection was detected as duplicate after the download of the first article the file was deleted from queue (that's OK) but the post-processing was not triggered (that's a bug);
- fixed: support for splitted files (.001, .002, etc.) were broken.
10.2 • 30 Jun 2013
- fixed potential segfault which could happen with file paths longer than 1024 characters;
- fixed: when options DirectWrite and ContinuePartial were both active, a restart or reload of the program during download may cause damaged files in the active download;
- increased width of speed indication ui-element to avoid layout breaking on some linux-browsers;
- fixed a race condition in unpacker which could lead to a segfault (although the chances were low because the code wasn't executed often).
10.1 • 31 Mar 2013
- fixed: articles with decoding errors (incomplete or damaged posts) caused infinite retry-loop in downloader.