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()