-
-
Save paul-chambers/71ef48e40449ec73eef95430b9e4e6c7 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Helper script for the Deluge torrent client | |
# Intended to be run at torrent completion, using the 'torrent complete' event in the 'Execute' plugin. | |
# | |
# The basic idea is to hardlink the files that deluge has just finished downloading to a second directory. | |
# This allows you to configure deluge to automatically pause or delete torrents when they reach a given seed ratio, | |
# while also keeping a copy around for other reasons. For example, SyncThing could be used to propagate new downloads | |
# to a remote machine to be processed further. When processing has finished, and the file is deleted/moved out of the | |
# Syncthing folder, the remote Syncthing will propagate a deletion back to the original Synchting (on the machine | |
# running deluge). | |
# | |
# The end result is that the lifetime of files involved both in deluge's seeding process and the 'forward to somewhere | |
# else' process (e.g. via Syncthing) are decoupled, and can safely execute in parallel without needing to be aware of | |
# what the other is doing. And yet the net result is that the files will still be cleaned up automagically when both | |
# have finished their respective tasks. | |
# | |
# Paul Chambers, Copyright (c) 2019. | |
# | |
# Made available under the Creative Commons 'BY' license | |
# https://creativecommons.org/licenses/by/4.0/ | |
# | |
# set -x | |
torrentId=$1 | |
torrentName=$2 | |
torrentPath=$3 | |
# echo "$torrentId $torrentName $torrentPath" >> /tmp/torrent-complete.log | |
srcDir="/home/user/files/downloads/seeding" | |
destDir="/home/user/files/downloads/complete" | |
label="${torrentPath#$srcDir}" | |
# note that srcPath may be a file, not necessarily a directory. | |
# Which means the same is true for destPath. | |
srcPath="${torrentPath}/${torrentName}" | |
destPath="${destDir}${label}/${torrentName}" | |
# echo "hardlink ${srcPath} to ${destPath}" >> /tmp/torrent-complete.log | |
if [ -d "${srcPath}" ] | |
then | |
# srcPath is a directory, so make sure destPath exists and is a directory, | |
# then recursively link the *contents* of the srcPath directory into destPath | |
mkdir -p "${destPath}" | |
cp -la "${srcPath}/"* "${destPath}" | |
else | |
# srcPath is a file, so just link it | |
cp -la "${srcPath}" "${destPath}" | |
fi | |
# | |
# if there are .rar files, unpack them | |
# usually there is only one, but nothing prevents more than one.. | |
# | |
for rarFile in `find "${destPath}" -name "*.rar"` | |
do | |
# echo "unrar ${rarFile}" >> /tmp/torrent-complete.log | |
# if the unrar completes without error, unlink the .rar file and its companions. | |
# the originals will live on in srcDir and continue to be seeded. | |
cd "$(dirname ${rarFile})" \ | |
&& unrar e -inul -o+ "${rarFile}" \ | |
&& find . -type f \( -regex '.*\.r[0-9][0-9]' -o -name '*.rar' \) -delete | |
done | |
# could unpack other archives here too, but it's preferable to decompress | |
# any already-compressed archives at the remote machine, not here. |
Glad you found it useful :)
How can all this b integrated on sonarr radarr? I used to use copy completed and unrar plugin to do this but copy completed not working now. Also how can it workd with labels so it copy to /LABEL/*
Thats no what I mean. Deluge use label and copy movies tvshows to different folder base on label when they r done. I want to know how to move the different files base on label with your script
It already supports labels. I use labels myself. See lines 35 and 40.
I see, but the label in the script is a variable that you created it is not? label="${torrentPath#$srcDir}"
Or would that get the label assigned on the torrent using the label or label plus plugin?
Hi mate, complete beginner - Deluge -> Plugins -> Execute. Select Add, Event=Torrent Completed and what do I put in the command?
Do I need to transfer this .sh file over to my Deluge FTP and then type the file name into that?
OR do I copy and paste everything in the .sh file?
Cheers Paul
Haven't been able to get this running for some reason. Perms are correct etc etc.. But just isn't executing...
I was tired of the plugin solutions and was hoping to find an alternative. This is it. Unrar/Copy/Clean This works fantastic!
Thank you.