diff --git a/config/config_example.yaml b/config/config_example.yaml index b230d4d..9a02160 100644 --- a/config/config_example.yaml +++ b/config/config_example.yaml @@ -22,7 +22,7 @@ jobs: message_patterns: - Not a Custom Format upgrade for existing* - Not an upgrade for existing* - - \*Found potentially dangerous file with extension* + # - \*Found potentially dangerous file with extension* remove_metadata_missing: # max_strikes: 3 remove_missing_files: diff --git a/src/jobs/removal_job.py b/src/jobs/removal_job.py index 768d5e6..5268e84 100644 --- a/src/jobs/removal_job.py +++ b/src/jobs/removal_job.py @@ -23,6 +23,9 @@ class RemovalJob(ABC): self.job_name = job_name self.job = getattr(self.settings.jobs, self.job_name) self.queue_manager = QueueManager(self.arr, self.settings) + self.max_strikes = getattr(self.job, "max_strikes", None) + if self.max_strikes: + self.strikes_handler = StrikesHandler(job_name=self.job_name, arr=self.arr, max_strikes=self.max_strikes) async def run(self) -> int: @@ -52,10 +55,8 @@ class RemovalJob(ABC): return len(self.affected_downloads) def _check_strikes_handler(self): - max_strikes = getattr(self.job, "max_strikes", None) - if max_strikes: - strikes_handler = StrikesHandler(job_name=self.job_name, arr=self.arr, max_strikes=max_strikes) - self.affected_downloads = strikes_handler.check_permitted_strikes(self.affected_downloads) + if self.max_strikes: + self.affected_downloads = self.strikes_handler.check_permitted_strikes(self.affected_downloads) def _ignore_protected(self): """ diff --git a/src/jobs/remove_slow.py b/src/jobs/remove_slow.py index 73ace52..04c214d 100644 --- a/src/jobs/remove_slow.py +++ b/src/jobs/remove_slow.py @@ -126,19 +126,16 @@ class RemoveSlow(RemovalJob): def _high_bandwidth_usage(self, item): download_id = item["downloadId"] - tracker_entry = self.arr.tracker.defective[self.job_name].get(download_id) - if tracker_entry: - tracker_entry.pop("tracking_paused", None) - tracker_entry.pop("pause_reason", None) + download_client = item["download_client"] + download_client_type = item["download_client_type"] + + self.strikes_handler.unpause_entry(download_id) - download_client=item["download_client"] - download_client_type=item["download_client_type"] if download_client_type == "qbittorrent": if download_client.bandwidth_usage > DISABLE_OVER_BANDWIDTH_USAGE: - if tracker_entry: - tracker_entry["tracking_paused"] = True - tracker_entry["pause_reason"] = "High Bandwidth Usage" + self.strikes_handler.pause_entry(download_id, "High Bandwidth Usage") return True + return False async def add_download_client_to_queue_items(self): diff --git a/src/jobs/strikes_handler.py b/src/jobs/strikes_handler.py index d8b7392..7bb8dea 100644 --- a/src/jobs/strikes_handler.py +++ b/src/jobs/strikes_handler.py @@ -15,6 +15,23 @@ class StrikesHandler: self.log_change(recovered, paused, affected_downloads) return affected_downloads + def get_entry(self, download_id): + return self.tracker.defective[self.job_name].get(download_id) + + def pause_entry(self, download_id, reason): + entry = self.get_entry(download_id) + if entry: + entry["tracking_paused"] = True + entry["pause_reason"] = reason + logger.debug("strikes_handler.py/StrikesHandler/pause_entry: Paused tracking for %s due to: %s", download_id, reason) + + def unpause_entry(self, download_id): + entry = self.get_entry(download_id) + if entry: + entry.pop("tracking_paused", None) + entry.pop("pause_reason", None) + logger.debug("strikes_handler.py/StrikesHandler/unpause_entry: Unpaused tracking for %s", download_id) + def log_change(self, recovered, paused, affected_items): """ Logs changes in strike tracking: