Download MCDF from here: http://www.multiupload.nl/SF6VQJNGHL (AutoIt source code included; feel free to modify as you see fit)
Changelog:
- changed MCDF so it checks every download that isn't already paused
- This was necessary because SABnzbd may be downloading more than one download at a time, making it possible for a download further down the list being completed before a download closer to the top.
Why this is necessary:
It pauses downloads when the drive(s) where your completed downloads go to is full.
Ludwig wrote:What happens when the "complete" disk is full while unpacking an archive is unpacking is aborted and the file that was being written to deleted, freeing up a bit of space. So you end up with too little disk space to fully unpack a download but still have some free space left. Sabnzbd then goes and moves files from the temp folder to the complete download folder until that folder can't store any more of the parts, but then you have your download sitting in two places. 1st part still in the temp dir on one partition, 2nd part in the complete dir on the other partition.
Sabnzbd then tries to finish the rest of the download queue. It downloads and tries to extract. Some smaller downloads might fit into the gap left by the previous bigger download. But most medium sized downloads are just split again. Sabnzbd downloads them, tries to unpack, notices there isn't enough disk space, deletes any partially written files, tries to move over parts, aborts moving as the disk becomes too full to store another part, then continues with the next download. So after one night of leaving it running you end up with 15 to 20 downloads that didn't unpack and are scattered between two locations waiting for you to piece them back together.
How MCDF does what it does:
MCDF assembles a look up table consisting of categories and their paths and puts drive letters next to the categories if these categories don't already contain drive letters. It then parses the topmost active download in your download queue and checks whether or not there's enough free space for it to unpack. If there isn't, that download is paused and the next one being checked.
Of course guessing the free space requirement a download needs for unpacking is pretty much impossible to do, so you have to specify how much more space than the download's size should be free on the completed downloads partition. E.g. your download is 3GB in size and you've set the free space multiplier to 2. That means the download is paused if there are less than 6GB of free space available for that download. Of course smaller downloads need less free space, so these are continued while bigger downloads are paused.
Quick howto:
- extract the downloaded archive to any place you like and can find easily
- copy the unzipped file(s) and folder(s) and paste them into your sabnzbd folder, the one containing the sabnzbd.exe file
- run mcdf.exe
- set free space multiplier in mcdf.ini as you like; changes are applied without having to restart the script
- you can display some status information by pressing Ctrl+Alt+D while MCDF is running; it should be working when none of the windows displayed are empty
Other important things:
MCDF makes use of GNU Wget, which is included in the archive. This was necessary to work around an issue AutoIt currently has in that it displays a "busy" mouse pointer when it shouldn't. This can be distractive if the system SABnzbd is running on is also being used by someone. GNU Wget is distributed under the GPL licence which can be found at http://www.gnu.org/copyleft/gpl.html
MCDF accesses SABnzbd via the host ip and http port as set up in SABnzbd. It currently does not support the use of secure http connections. For MCDF to work you have to set up SABnzbd accordingly or modify MCDF's source code.
Please report any issues or suggestions you might have in this thread.