Incorrect or missing information? Pre-queue scripts
You can choose to let SABnzbd run a script just before an NZB enters the queue. This script determines whether the NZB should be accepted and can modify a number of job parameters.
Scripts may use any scripting language available on your system; common choices are Python, Unix shell, and Windows batch scripts. All scripts must be located in the Scripts-directory, specified in Config->Folders and must be executable. On Unix-like operating systems (Linux, BSD, etc.) this means the x-bit must be on. On Windows, the requirement is that the script's extension is listed in your system's
PATHEXT environment variable. Once everything is in place, the Pre-Queue Script can be set in Config->Switches.
The script must write results to the console.
0 will make SABnzbd inspect the returned output.
If the script has an exit code other than
0, script failure is assumed and the NZB accepted without changes.
All parameters (except 1) can be empty, meaning a default value. Use
%1 in Windows scripts and
$1 in Unix scripts. Note that on Windows the input parameters are surrounded by quotes (e.g.
NOTE Much more information is available to scripts via environment variables, see below!
|1||Clean version of the job name (no path info and
|2||Post Processing (PP) flags:
|4||Script (no path)|
|6||Size of the download (in bytes)|
|7||Group list (separated by spaces)|
|12||Tagged as Proper (True or False)|
|18||Job type (tv, date, movie, or unknown)|
The script can refuse or accept the NZB and it can also return alternative parameters. These parameters should be written to the console, each parameter on a separate line. SABnzbd uses the first 7 lines of output, so they should only contain proper data (or be empty). Anything after line 7 is ignored.
To manipulate the show/season/episode parameters, you should assemble a new name and return a recognized format.
|2||Clean version of the job name (no path info and
|3||Post Processing (PP) flags:
|5||Script (no path)|
|7||Group to be used (in case your provider doesn't carry all groups and there are multiple groups in the NZB)|
Your script can get extra information via environment variables (return information should still be sent as plain output):
|SAB_SCRIPT||The name of the current script|
|SAB_FINAL_NAME||The name of the job in the queue and of the final folder|
|SAB_FILENAME||The NZB filename (after grabbing from the URL)|
|SAB_CAT||What category was assigned|
|SAB_BYTES||Total number of bytes|
|SAB_DUPLICATE||Was it detected as duplicate|
|SAB_PASSWORD||What was the password supplied by the NZB or the user|
|SAB_STATUS||Current status (completed/failed/running)|
|SAB_PP||What post-processing was activated (download/repair/unpack/delete)|
|SAB_REPAIR||Was repair selected by user|
|SAB_UNPACK||Was unpack selected by user|
|SAB_PRIORITY||Priority set by user|
|SAB_GROUPS||Newsgroups listed in the NZB|
|SAB_VERSION||The version of SABnzbd used|
|SAB_PROGRAM_DIR||The directory where the current SABnzbd instance is located|
|SAB_PAR2_COMMAND||The path to the
|SAB_MULTIPAR_COMMAND||Windows-only (empty on other systems). The path to the MultiPar command on the system that SABnzbd uses|
|SAB_RAR_COMMAND||The path to the
|SAB_ZIP_COMMAND||The path to the
|SAB_7ZIP_COMMAND||The path to the
|SAB_PROPER||Tagged as Proper (True or False)|
|SAB_TYPE||Job type (tv, date, movie, or unknown)|
Example Script 1
Example of a Windows batch file that forces high priority on anything smaller than 2GB.
Save it as file
size-checker.cmd and put in the scripts folder.
Example Script 2
A python script to set prio to Force on downloads smaller than 50MB: