diff --git a/modules/core/remove_unregistered.py b/modules/core/remove_unregistered.py index ae1ef79..40d283d 100644 --- a/modules/core/remove_unregistered.py +++ b/modules/core/remove_unregistered.py @@ -1,4 +1,5 @@ from qbittorrentapi import NotFound404Error +from qbittorrentapi import TrackerStatus from modules import util from modules.util import list_in_text @@ -65,6 +66,21 @@ class RemoveUnregistered: } self.config.send_notifications(attr) + def check_for_unregistered_torrents_using_bhd_api(self, tracker, msg_up, torrent_hash): + """ + Checks if a torrent is unregistered using the BHD API if the tracker is BHD. + """ + if ( + "tracker.beyond-hd.me" in tracker["url"] + and self.config.beyond_hd is not None + and not list_in_text(msg_up, TorrentMessages.IGNORE_MSGS) + ): + json = {"info_hash": torrent_hash} + response = self.config.beyond_hd.search(json) + if response["total_results"] == 0: + return True + return False + def process_torrent_issues(self): for torrent in self.qbt.torrentissue: self.t_name = torrent.name @@ -78,36 +94,22 @@ class RemoveUnregistered: tracker = self.qbt.get_tags([trk]) msg_up = trk.msg.upper() msg = trk.msg - # Tag any error torrents - if self.cfg_tag_error: - if trk.status == TorrentMessages.TORRENT_STATUS_NOT_WORKING and self.tag_error not in check_tags: + if TrackerStatus(trk.status) == TrackerStatus.NOT_WORKING: + # Tag any error torrents + if self.cfg_tag_error and self.tag_error not in check_tags: self.tag_tracker_error(msg, tracker, torrent) - if self.cfg_rem_unregistered: - # Tag any error torrents that are not unregistered - if ( - not list_in_text(msg_up, TorrentMessages.UNREGISTERED_MSGS) - and trk.status == TorrentMessages.TORRENT_STATUS_NOT_WORKING - and self.tag_error not in check_tags - ): - # Check for unregistered torrents using BHD API if the tracker is BHD - if ( - "tracker.beyond-hd.me" in tracker["url"] - and self.config.beyond_hd is not None - and not list_in_text(msg_up, TorrentMessages.IGNORE_MSGS) + # Check for unregistered torrents + if self.cfg_rem_unregistered: + if list_in_text(msg_up, TorrentMessages.UNREGISTERED_MSGS) and not list_in_text( + msg_up, TorrentMessages.IGNORE_MSGS ): - json = {"info_hash": torrent.hash} - response = self.config.beyond_hd.search(json) - if response["total_results"] == 0: + self.del_unregistered(msg, tracker, torrent) + break + else: + if self.check_for_unregistered_torrents_using_bhd_api(tracker, msg_up, torrent.hash): self.del_unregistered(msg, tracker, torrent) break - self.tag_tracker_error(msg, tracker, torrent) - if ( - list_in_text(msg_up, TorrentMessages.UNREGISTERED_MSGS) - and not list_in_text(msg_up, TorrentMessages.IGNORE_MSGS) - and trk.status == TorrentMessages.TORRENT_STATUS_NOT_WORKING - ): - self.del_unregistered(msg, tracker, torrent) - break + except NotFound404Error: continue except Exception as ex: diff --git a/modules/qbittorrent.py b/modules/qbittorrent.py index 9cce1f5..1ca73fa 100755 --- a/modules/qbittorrent.py +++ b/modules/qbittorrent.py @@ -7,6 +7,7 @@ from qbittorrentapi import APIConnectionError from qbittorrentapi import Client from qbittorrentapi import LoginFailed from qbittorrentapi import NotFound404Error +from qbittorrentapi import TrackerStatus from qbittorrentapi import Version from modules import util @@ -158,11 +159,11 @@ class Qbt: if trk.url.startswith("http"): status = trk.status msg = trk.msg.upper() - if trk.status == TorrentMessages.TORRENT_STATUS_WORKING: + if TrackerStatus(trk.status) == TrackerStatus.WORKING: working_tracker = True break # Add any potential unregistered torrents to a list - if trk.status == TorrentMessages.TORRENT_STATUS_NOT_WORKING and not list_in_text( + if TrackerStatus(trk.status) == TrackerStatus.NOT_WORKING and not list_in_text( msg, TorrentMessages.EXCEPTIONS_MSGS ): issue["potential"] = True diff --git a/modules/util.py b/modules/util.py index 05e39b3..0aa1732 100755 --- a/modules/util.py +++ b/modules/util.py @@ -70,12 +70,6 @@ class TorrentMessages: "TRACKER UNAVAILABLE", ] - TORRENT_STATUS_DISABLED = 0 # Tracker is disabled (used for DHT, PeX, and LSD) - TORRENT_STATUS_NOT_CONTACTED = 1 # Tracker has not been contacted yet - TORRENT_STATUS_WORKING = 2 # Tracker has been contacted and is working - TORRENT_STATUS_UPDATING = 3 # Tracker is updating - TORRENT_STATUS_NOT_WORKING = 4 # Tracker has been contacted, but it is not working (or doesn't send proper replies) - class check: """Check for attributes in config."""