diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html
index a1f8ba64..f5f9ea78 100644
--- a/data/interfaces/default/config.html
+++ b/data/interfaces/default/config.html
@@ -2405,7 +2405,7 @@
}
if ($("#torrent_downloader_deluge").is(":checked"))
{
- $("#torrent_blackhole_options,#transmission_options,#utorrent_options,#qbittorent_options").hide();
+ $("#torrent_blackhole_options,#transmission_options,#utorrent_options,#qbittorrent_options").hide();
$("#deluge_options").show();
}
diff --git a/headphones/deluge.py b/headphones/deluge.py
index cfab6355..062789c6 100644
--- a/headphones/deluge.py
+++ b/headphones/deluge.py
@@ -246,18 +246,41 @@ def removeTorrent(torrentid, remove_data=False):
_get_auth()
try:
- result = False
- post_data = json.dumps({"method": "core.remove_torrent",
+ logger.debug('Deluge: Checking if torrent %s finished seeding' % str(torrentid))
+ post_data = json.dumps({"method": "web.get_torrent_status",
"params": [
torrentid,
- remove_data
- ],
- "id": 25})
+ [
+ "name",
+ "ratio",
+ "state"
+ ]
+ ],
+ "id": 26})
+
response = requests.post(delugeweb_url, data=post_data.encode('utf-8'), cookies=delugeweb_auth,
verify=deluge_verify_cert, headers=headers)
- result = json.loads(response.text)['result']
- return result
+ state = json.loads(response.text)['result']['state']
+
+ not_finished = ["queued", "seeding", "downloading", "checking", "error"]
+ result = False
+ if state.lower() in not_finished:
+ logger.debug('Deluge: Torrent %s is either queued or seeding, not removing yet' % str(torrentid))
+ return False
+ else:
+ logger.debug('Deluge: Removing torrent %s' % str(torrentid))
+ post_data = json.dumps({"method": "core.remove_torrent",
+ "params": [
+ torrentid,
+ remove_data
+ ],
+ "id": 25})
+ response = requests.post(delugeweb_url, data=post_data.encode('utf-8'), cookies=delugeweb_auth,
+ verify=deluge_verify_cert, headers=headers)
+ result = json.loads(response.text)['result']
+
+ return result
except Exception as e:
logger.error('Deluge: Removing torrent failed: %s' % str(e))
formatted_lines = traceback.format_exc().splitlines()