From edb7a014c49791554aa9449b4a350c1458842562 Mon Sep 17 00:00:00 2001 From: thsrite Date: Tue, 21 Nov 2023 18:22:30 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=AA=92=E4=BD=93=E5=BA=93=E5=88=AE?= =?UTF-8?q?=E5=89=8A1.1=E5=A2=9E=E5=8A=A0=E5=BC=BA=E5=88=B6=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E8=B7=AF=E5=BE=84=E5=AA=92=E4=BD=93=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- plugins/libraryscraper/__init__.py | 68 +++++++++++++++++++++++++++--- 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index ce7bd03..6450c47 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "LibraryScraper": { "name": "媒体库刮削", "description": "定时对媒体库进行刮削,补齐缺失元数据和图片。", - "version": "1.0", + "version": "1.1", "icon": "scraper.png", "color": "#FF7D00", "author": "jxxghp", diff --git a/plugins/libraryscraper/__init__.py b/plugins/libraryscraper/__init__.py index 6a638bc..4034236 100644 --- a/plugins/libraryscraper/__init__.py +++ b/plugins/libraryscraper/__init__.py @@ -19,7 +19,6 @@ from app.utils.system import SystemUtils class LibraryScraper(_PluginBase): - # 插件名称 plugin_name = "媒体库刮削" # 插件描述 @@ -29,7 +28,7 @@ class LibraryScraper(_PluginBase): # 主题色 plugin_color = "#FF7D00" # 插件版本 - plugin_version = "1.0" + plugin_version = "1.1" # 插件作者 plugin_author = "jxxghp" # 作者主页 @@ -54,7 +53,7 @@ class LibraryScraper(_PluginBase): _exclude_paths = "" # 退出事件 _event = Event() - + def init_plugin(self, config: dict = None): # 读取配置 if config: @@ -90,7 +89,7 @@ class LibraryScraper(_PluginBase): logger.info(f"媒体库刮削服务,立即运行一次") self._scheduler.add_job(func=self.__libraryscraper, trigger='date', run_date=datetime.now(tz=pytz.timezone(settings.TZ)) + timedelta(seconds=3), - name="Cloudflare优选") + name="媒体库刮削") # 关闭一次性开关 self._onlyonce = False self.update_config({ @@ -245,6 +244,49 @@ class LibraryScraper(_PluginBase): ] } ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '刮削路径要配置到二级分类路径。(如果配置了LIBRARY_CATEGORY=true)' + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '刮削路径后拼接#电视剧/电影,强制指定该媒体路径媒体类型。' + '不加默认根据文件名自动识别媒体类型。' + } + } + ] + } + ] } ] } @@ -272,11 +314,19 @@ class LibraryScraper(_PluginBase): for path in paths: if not path: continue + # 强制指定该路径媒体类型 + mtype = None + if str(path).count("#") == 1: + mtype = next( + (mediaType for mediaType in MediaType.__members__.values() if + mediaType.value == str(str(path).split("#")[1])), + None) + path = str(path).split("#")[0] scraper_path = Path(path) if not scraper_path.exists(): logger.warning(f"媒体库刮削路径不存在:{path}") continue - logger.info(f"开始刮削媒体库:{path} ...") + logger.info(f"开始刮削媒体库:{path} {mtype} ...") # 遍历一层文件夹 for sub_path in scraper_path.iterdir(): if self._event.is_set(): @@ -302,11 +352,11 @@ class LibraryScraper(_PluginBase): logger.warn(f"{sub_path} 可能不是媒体目录,请检查刮削目录配置,跳过 ...") continue logger.info(f"开始刮削目录:{sub_path} ...") - self.__scrape_dir(path=sub_path, dir_meta=dir_meta) + self.__scrape_dir(path=sub_path, dir_meta=dir_meta, mtype=mtype) logger.info(f"目录 {sub_path} 刮削完成") logger.info(f"媒体库 {path} 刮削完成") - def __scrape_dir(self, path: Path, dir_meta: MetaBase): + def __scrape_dir(self, path: Path, dir_meta: MetaBase, mtype: MediaType = None): """ 削刮一个目录,该目录必须是媒体文件目录 """ @@ -325,6 +375,10 @@ class LibraryScraper(_PluginBase): meta_info = MetaInfo(file.stem) # 合并 meta_info.merge(dir_meta) + # 强制指定类型 + if mtype: + meta_info.type = mtype + # 是否刮削 scrap_metadata = settings.SCRAP_METADATA