From 8968e0474806c716eeb7241989f5e0a1851a8a67 Mon Sep 17 00:00:00 2001 From: xuzhi Date: Mon, 13 May 2024 11:56:03 +0000 Subject: [PATCH] Initial plugin cleaninvalidseeds --- icons/clean_a.png | Bin 0 -> 83488 bytes package.json | 16 +- plugins/cleaninvalidseed/__init__.py | 486 +++++++++++++++++++++++++++ 3 files changed, 500 insertions(+), 2 deletions(-) create mode 100755 icons/clean_a.png create mode 100644 plugins/cleaninvalidseed/__init__.py diff --git a/icons/clean_a.png b/icons/clean_a.png new file mode 100755 index 0000000000000000000000000000000000000000..58877211ac7f7aec7666fe6b7cf2ccd6208c7477 GIT binary patch literal 83488 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

dw@Qxy+!gTtE2nE?MMf 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 z bool: + return self._enabled + + @staticmethod + def get_command() -> List[Dict[str, Any]]: + pass + + def get_api(self) -> List[Dict[str, Any]]: + pass + + def get_service(self) -> List[Dict[str, Any]]: + """ + 注册插件公共服务 + [{ + "id": "服务ID", + "name": "服务名称", + "trigger": "触发器:cron/interval/date/CronTrigger.from_crontab()", + "func": self.xxx, + "kwargs": {} # 定时器参数 + }] + """ + if self._enabled and self._cron: + return [ + { + "id": "CleanInvalidSeed", + "name": "清理QB无效做种", + "trigger": CronTrigger.from_crontab(self._cron), + "func": self.clean_invalid_seed, + "kwargs": {}, + } + ] + + + def get_all_torrents(self): + all_torrents, error = self._qb.get_torrents() + if error: + logger.error(f"获取QB种子失败: {error}") + if self._notify: + self.post_message( + mtype=NotificationType.SiteMessage, + title=f"【清理QB无效做种】", + text=f"获取QB种子失败,请检查QB配置", + ) + return [] + + if not all_torrents: + logger.warning("QB没有种子") + if self._notify: + self.post_message( + mtype=NotificationType.SiteMessage, + title=f"【清理QB无效做种】", + text=f"QB中没有种子", + ) + return [] + return all_torrents + + def clean_invalid_seed(self): + all_torrents = self.get_all_torrents() + temp_invalid_torrents = [] + working_tracker_set = set() + # 第一轮筛选出所有未工作的种子 + for torrent in all_torrents: + trackers = torrent.trackers + is_invalid = True + for tracker in trackers: + if tracker.get('tier') == -1: + continue + if not (tracker.get('status') == 4): + is_invalid = False + tracker_domian = StringUtils.get_url_netloc((tracker.get('url')))[1] + working_tracker_set.add(tracker_domian) + if is_invalid: + temp_invalid_torrents.append(torrent) + logger.info(f"初筛共有{len(temp_invalid_torrents)}个无效做种") + # 第二轮筛选出tracker有正常工作种子而当前种子未工作的,避免因临时关站或tracker失效导致误删的问题 + invalid_torrents = [] + message = "检测到失效种子\n" + for torrent in temp_invalid_torrents: + trackers = torrent.trackers + is_invalid = False + for tracker in trackers: + if tracker.get('tier') == -1: + continue + tracker_domian = StringUtils.get_url_netloc((tracker.get('url')))[1] + if tracker_domian in working_tracker_set: + # tracker是正常的,说明该种子是无效的 + is_invalid = True + message += f'失效种子:{torrent.name},Tracker: {tracker_domian},大小:{StringUtils.str_filesize(torrent.size)},原因:{tracker.msg}\n' + if self._delete_invalid_torrents: + # 只删除种子不删除文件,以防其它站点辅种 + self._qb.delete_torrents(False, torrent.get('hash')) + break + if is_invalid: + invalid_torrents.append(torrent) + message += f'共筛选出{len(invalid_torrents)}个无效种子\n' + if self._delete_invalid_torrents: + message += f'***已成功清理!***\n' + logger.info(message) + if self._notify and len(invalid_torrents) != 0: + self.post_message( + mtype=NotificationType.SiteMessage, + title=f"【清理无效做种】", + text=message, + ) + if self._detect_invalid_files: + self.detect_invalid_files() + + def detect_invalid_files(self): + logger.info("开始检测未做种的无效源文件") + all_torrents = self.get_all_torrents() + source_path_map = {} + source_paths = [] + total_size = 0 + deleted_file_cnt = 0 + exclude_key_words = self._exclude_keywords.split("\n") + for path in self._download_dirs.split("\n"): + mp_path, qb_path = path.split(":") + source_path_map[mp_path] = qb_path + source_paths.append(mp_path) + # 所有做种源文件路径 + content_path_set = set() + for torrent in all_torrents: + content_path_set.add(torrent.content_path) + + message = '检测到未做种无效源文件:\n' + for source_path_str in source_paths: + source_path = Path(source_path_str) + source_files = [] + # 获取source_path下的所有文件包括文件夹 + for file in source_path.iterdir(): + source_files.append(file) + for source_file in source_files: + skip = False + for key_word in exclude_key_words: + if key_word in source_file.name: + logger.info(f"命中关键字{key_word},跳过{str(source_file)}") + skip = True + break + if skip: + continue + # 将mp_path替换成 qb_path + qb_path = (str(source_file)).replace(source_path_str, source_path_map[source_path_str]) + # todo: 优化性能 + is_exist = False + for content_path in content_path_set: + if qb_path in content_path: + is_exist = True + break + + if not is_exist: + deleted_file_cnt += 1 + message += f'{str(source_file)}\n' + total_size += self.get_size(source_file) + if self._delete_invalid_files: + if source_file.is_file(): + source_file.unlink() + elif source_file.is_dir(): + shutil.rmtree(source_file) + + message += f'检测到{deleted_file_cnt}个未做种的无效源文件,共占用{StringUtils.str_filesize(total_size)}空间。\n' + if self._delete_invalid_files: + message += f'***已删除无效源文件,释放{StringUtils.str_filesize(total_size)}空间!***\n' + logger.info(message) + if self._notify and deleted_file_cnt != 0: + self.post_message( + mtype=NotificationType.SiteMessage, + title=f"【清理无效做种】", + text=message, + ) + + def get_size(self, path: Path): + total_size = 0 + if path.is_file(): + return path.stat().st_size + # rglob 方法用于递归遍历所有文件和目录 + for entry in path.rglob('*'): + if entry.is_file(): + total_size += entry.stat().st_size + return total_size + def get_form(self) -> Tuple[List[dict], Dict[str, Any]]: + return [ + { + "component": "VForm", + "content": [ + { + "component": "VRow", + "content": [ + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "enabled", + "label": "启用插件", + }, + } + ], + }, + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "notify", + "label": "开启通知", + }, + } + ], + }, + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "onlyonce", + "label": "立即运行一次", + }, + } + ], + }, + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "delete_invalid_torrents", + "label": "删除无效种子", + }, + } + ], + }, + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "detect_invalid_files", + "label": "检测无效源文件", + }, + } + ], + }, + { + "component": "VCol", + "props": {"cols": 12, "md": 4}, + "content": [ + { + "component": "VSwitch", + "props": { + "model": "delete_invalid_files", + "label": "删除无效源文件", + }, + } + ], + }, + ], + }, + { + "component": "VRow", + "content": [ + { + "component": "VCol", + "props": {"cols": 12, "md": 6}, + "content": [ + { + "component": "VTextField", + "props": {"model": "cron", "label": "执行周期"}, + } + ], + } + ], + }, + { + "component": "VRow", + "content": [ + { + "component": "VCol", + "props": {"cols": 12}, + "content": [ + { + "component": "VTextarea", + "props": { + "model": "download_dirs", + "label": "下载目录映射", + "rows": 5, + "placeholder": "填写要监控的源文件目录,并设置MP和QB的目录映射关系,如/mp/download:/qb/download,多个目录请换行", + }, + } + ], + } + ], + }, + { + "component": "VRow", + "content": [ + { + "component": "VCol", + "props": {"cols": 12}, + "content": [ + { + "component": "VTextarea", + "props": { + "model": "exclude_keywords", + "label": "过滤关键字", + "rows": 5, + "placeholder": "多个关键字请换行,仅针对删除源文件", + }, + } + ], + } + ], + }, + { + "component": "VRow", + "content": [ + { + "component": "VCol", + "props": { + "cols": 12, + }, + "content": [ + { + "component": "VAlert", + "props": { + "type": "info", + "variant": "tonal", + "text": "要监控的源文件目录填入源文件所在目录,并设置MP和QB的目录映射关系,如/mp/download:/qb/download,多个目录请换行。映射主要不要有多余的'/'", + }, + } + ], + }, + { + "component": "VCol", + "props": { + "cols": 12, + }, + "content": [ + { + "component": "VAlert", + "props": { + "type": "info", + "variant": "tonal", + "text": "谨慎起见删除种子/源文件功能做了开关,请确认无误后再开启删除功能", + }, + } + ], + }, + ], + }, + ], + } + ], { + "enabled": False, + "notify": False, + "download_dirs": "", + "delete_invalid_torrents": False, + "delete_invalid_files": False, + "detect_invalid_files": False, + "onlyonce": False, + "cron": "0 0 * * *", + } + + def get_page(self) -> List[dict]: + pass + + def stop_service(self): + """ + 退出插件 + """ + try: + if self._scheduler: + self._scheduler.remove_all_jobs() + if self._scheduler.running: + self._scheduler.shutdown() + self._scheduler = None + except Exception as e: + logger.error("退出插件失败:%s" % str(e))