Skip to content

Instantly share code, notes, and snippets.

@kieraneglin
Created February 26, 2024 01:40
Show Gist options
  • Save kieraneglin/944572302e8be1a38507d9e86583ab7c to your computer and use it in GitHub Desktop.
Save kieraneglin/944572302e8be1a38507d9e86583ab7c to your computer and use it in GitHub Desktop.
Retry stalled fresh torrents from Autobrr/autodl-irssi in Deluge 2.x
#!/bin/bash
daemon_port=58846
# The Daemon username and password may not be the same as the web UI.
# Google "deluge daemon username password" for more info.
username=deluge
password=deluge
# If you want to only retry stalled torrents that were
# added by autobrr/autodl-irssi/etc, set `auto_dl_only` to 1
# and set `auto_dl_label` to whatever you've set up for your auto-downloader.
auto_dl_only=0
auto_dl_label="autobrr"
# Set to 1 if you need to troubleshoot
debug=0
torrentid=$1
# These two aren't used but are here for reference
torrentname=$2
torrentpath=$3
# Sleep to ensure the torrent has enough time to attempt start
# Can possibly be removed or lowered (esp. if you have a delay configured elsewhere),
# but this produced the best results.
sleep 5
x=1
while [ $x -le 20 ]; do
echo "Checking tracker status for $torrentid"
torrent_info=$(deluge-console "connect 127.0.0.1:$daemon_port $username $password; info -v '$torrentid'")
tracker_status=$(echo "$torrent_info" | grep "Tracker status")
label=$(echo "$torrent_info" | grep "Label")
if [[ $debug -eq 1 ]]; then
echo "-----------"
echo "Torrent info: $torrent_info"
echo "-----------"
echo "Tracker status: $tracker_status"
echo "Label: $label"
echo "-----------"
fi
if [[ $auto_dl_only -eq 1 ]]; then
if [[ ! $label == *"$auto_dl_label"* ]]; then
echo "Label does not contain '$auto_dl_label'. Taking no action."
break
else
echo "Label contains '$auto_dl_label'. Continuing."
fi
fi
case "$tracker_status" in
*error* | *Error* | *Sent* | *End*of*file* | *Bad*Gateway*)
echo "Tracker status error, pausing and resuming torrent. Attempt: $x"
deluge-console "connect 127.0.0.1:$daemon_port $username $password; pause '$torrentid'"
sleep 5
deluge-console "connect 127.0.0.1:$daemon_port $username $password; resume '$torrentid'"
;;
*)
echo "Tracker status is good. Exiting"
printf -- "-----------\n\n\n"
break
;;
esac
x=$(($x + 1))
sleep 2
done
  • Copy and modify the script as needed - check the comments for the first few lines
  • Place the script where Deluge can access it
  • Make it executable (chmod +x /path/to/retry-stalled-autodl-torrents.sh)
  • Enable the Execute plugin in deluge
  • Create a new executable entry with the event being Torrent Added and the command being ./path/to/retry-stalled-autodl-torrents.sh
    • Notice the ./ at the beginning
  • If you want, you can test it manually with ./path/to/retry-stalled-autodl-torrents.sh abc123 (replacing abc123 with the actual torrent hash)
@postn
Copy link

postn commented Jan 24, 2025

Is there anyway you can modify this to work with qbit. Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment