-
-
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/seeding" | |
destDir="/home/user/files/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 | |
# We may be given a file or a directory. If it's a directory, it may contain a rar file, | |
# in which case we should unpack the rar file (and its suplemental files) directly into | |
# the destination. Non-rar files are always hardlinked to the destination. | |
if [ -d "${srcPath}" ] | |
then | |
mkdir -p "${destPath}" | |
# search for rar files, and unrar any we find into the destination directory | |
find "${srcPath}" -name "*.rar" -execdir unrar e -inul -o+ "{}" "${destPath}" ';' | |
# hardlink everything in the source directory that's not a rar file to the destination directory | |
find "${srcPath}" -mindepth 1 ! -regex '.*\.r[a0-9][r0-9]' -execdir cp -la "{}" "${destPath}" ';' | |
else | |
# we were passed a file, not a directory | |
cp -la "${srcPath}" "${destPath}" | |
fi | |
# 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.