Do you have a lot of downloaded material, coming from bittorrent downloads, or from a FTP-session, where the content is encapsulated in big multi-volume archives like RAR and ZIP files (a.k.a. scene releases). Unpacking those archives can take a lot of manual effort before the actual content can be consumed.
This Python script tries to ease the burden of processing this kind of material, by investigating the directory and categorize its files as one of
- archive, i.e. the files belongs to an archive, for example
file.001, etc. The archive also has a base file, that is, the first file in the archive, usually the file having the extension
.rarin case of RAR-archives.
- file, the file is an ordinary file, for example any
- ignored, extra files, not needed for consumption, like those hash files (
*.diz, etc.) used only to verify the downloaded content, and also sample, i.e a path matching
The tool automatically unpacks the archives, and copies the files, to a given destination (or the current directory if you so like). Further, the destination directory can be derived by removing a incoming base from the folder examined. The part left is appended to the destination given (or the current directory). Using this feature you can mimic your content structure within your download structure, without needing to create folders before moving the downloaded content into its final destination – all is taken care of within btpostprocess.
$ btpostprocess --process --incoming-base=/downloads/ready/pictures \ --base-path=/downloads/ready/pictures/cats \ /torrents/cats.torrent MyPictures
Finds archives and files in
/downloads/ready/pictures/cats and a sub-folder indicated by the
cats.torrent (or directly under
/downloads/ready/pictures/cats) and unpack archives and copy files
cats sub-folder under
used to construct a derived sub-folder under the destination folder.
The script was made with rtorrent in mind. By using rtorrent’s on finished capabilities the post processing can be set up using something like (version 0.8.2):
on_finished = process,"execute=btpostprocess,--incoming-base,/srv/incoming,--base-path,$d.get_base_path=,$d.get_tied_to_file=,/srv/depot"
Indicating downloads are to be found under
/srv/incoming, and a folder given by the tied torrent file. Any files downloaded are unpacked (in case of archives) and copied into a sub-folder of
In case you need to run some logic before spawning btpostprocess, for example, deciding if the download path is outside the normal download path, and in that case skip the post processing, all you need is to wrap the
btprocess in a more specific