From 7565bdf947a3b6118d627666ed697cfc1a9e9d70 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 26 Feb 2024 19:28:11 +0800 Subject: [PATCH] add RemoteIdentifiers --- icons/words.png | Bin 0 -> 49892 bytes package.json | 10 +- plugins/remoteidentifiers/__init__.py | 327 ++++++++++++++++++++++++++ 3 files changed, 336 insertions(+), 1 deletion(-) create mode 100644 icons/words.png create mode 100644 plugins/remoteidentifiers/__init__.py diff --git a/icons/words.png b/icons/words.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6a85b7a87d4b8bed2a4c2c7e330859c95a64c2 GIT binary patch literal 49892 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 List[str]: + ret: List[str] = ['#========以下识别词由 RemoteIdentifiers 插件添加========#'] + for file_url in file_urls: + # https://movie-pilot.org/etherpad/p/MoviePilot_TV_Words + if file_url.find("etherpad") and file_url.find("export") < 0: + real_url = file_url + "/export/txt" + else: + real_url = file_url + response = RequestUtils(proxies=settings.PROXY, + headers=settings.GITHUB_HEADERS if real_url.find("git") else None, + timeout=15).get_res(real_url) + if not response: + raise Exception(f"文件 {file_url} 下载失败!") + elif response.status_code != 200: + raise Exception(f"下载文件 {file_url} 失败:{response.status_code} - {response.reason}") + text = response.content.decode('utf-8') + if text.find("doctype html") > 0: + raise Exception(f"下载文件 {file_url} 失败:{response.status_code} - {response.reason}") + if "try again later" in text: + raise Exception(f"下载文件 {file_url} 失败:{text}") + identifiers: List[str] = text.split('\n') + ret += identifiers + # flitter 过滤空行 + if self._flitter: + filtered_ret = [] + for item in ret: + if item != '': + filtered_ret.append(item) + ret = filtered_ret + logger.info(f"获取到远端识别词{len(ret) - 1}条: {ret[1:]}") + return ret + + def __task(self): + words: List[str] = self.systemconfig.get(SystemConfigKey.CustomIdentifiers) or [] + file_urls: list = self._file_urls.split('\n') if self._file_urls else [] + remote_words: list = self.get_file_content(file_urls) + # 找出用户自己加的 + cnt = 0 + for word in words: + if "RemoteIdentifiers" in word: + break + else: + cnt += 1 + words = words[:cnt] + words += remote_words + self.systemconfig.set(SystemConfigKey.CustomIdentifiers, words) + logger.info("远端识别词添加成功") + + def get_form(self) -> Tuple[List[dict], Dict[str, Any]]: + return [ + { + 'component': 'VForm', + 'content': [ + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 3 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'enable', + 'label': '启用插件', + } + } + ] + }, { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 3 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'flitter', + 'label': '过滤空白行', + } + } + ] + }, { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 3 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'onlyonce', + 'label': '立即运行一次', + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 4 + }, + 'content': [ + { + 'component': 'VTextField', + 'props': { + 'model': 'cron', + 'label': '定时任务周期', + 'placeholder': '30 4 * * *', + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 12 + }, + 'content': [ + { + 'component': 'VTextarea', + 'props': { + 'model': 'file_urls', + 'rows': 6, + 'label': '远程文件地址(一行一个)', + 'placeholder': '如果是Github文件地址请注意填写包含raw的! 这个才是文件地址,其他的是这个文件的页面地址', + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'success', + 'variant': 'tonal', + 'text': '以下为官方共享识别词维护地址,欢迎大家共同维护,也可以自己创建分享地址(支持Github及Etherpad),Github需要raw的源文件地址,文件格式与系统中配置格式一致即可。' + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '电视剧:https://movie-pilot.org/etherpad/p/MoviePilot_TV_Words,' + '番剧:https://movie-pilot.org/etherpad/p/MoviePilot_Anime_Words' + } + } + ] + } + ] + } + ] + } + ], { + "enable": False, + "onlyonce": False, + "flitter": True, + "cron": '30 4 * * *', + "file_urls": "https://movie-pilot.org/etherpad/p/MoviePilot_TV_Words\n" + "https://movie-pilot.org/etherpad/p/MoviePilot_Anime_Words", + } + + def __update_config(self): + self.update_config({ + "onlyonce": self._onlyonce, + "cron": self._cron, + "enable": self._enable, + "flitter": self._flitter, + "file_urls": self._file_urls, + }) + + 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)) + + def get_page(self) -> List[dict]: + pass + + def get_state(self) -> bool: + return self._enable + + @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._enable and self._cron: + return [{ + "id": "RemoteIdentifiers", + "name": "获取远端识别词", + "trigger": CronTrigger.from_crontab(self._cron), + "func": self.__task, + "kwargs": {} + }]