From 016b3ef8e45f57033d39b47b5e6781ed729d0cb2 Mon Sep 17 00:00:00 2001 From: thsrite Date: Wed, 20 Mar 2024 12:07:32 +0800 Subject: [PATCH] fix --- README.md | 2 +- package.json | 2 +- plugins/cloudlinkmonitor/__init__.py | 62 ++++++++++++++++++++++++---- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3371df3..d40d810 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ MoviePilot三方插件市场:https://github.com/thsrite/MoviePilot-Plugins/ - [Emby观影报告 1.5](docs%2FEmbyReporter.md) - [豆瓣明星热映订阅 1.3](docs%2FActorSubscribe.md) - [短剧刮削 3.1](docs%2FShortPlayMonitor.md) -- [云盘实时链接 1.4](docs%2FCloudLinkMonitor.md) +- [云盘实时链接 1.5](docs%2FCloudLinkMonitor.md) - [源文件恢复 1.2](docs%2FLinkToSrc.md) - [微信消息转发 1.0](docs%2FWeChatForward.md) - [订阅下载统计 1.4](docs%2FSubscribeStatistic.md) diff --git a/package.json b/package.json index d194e7f..07a5802 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "CloudLinkMonitor": { "name": "云盘实时链接", "description": "监控云盘目录文件变化,自动转移链接(不刮削)。", - "version": "1.4", + "version": "1.5", "icon": "Linkease_A.png", "author": "thsrite", "level": 1 diff --git a/plugins/cloudlinkmonitor/__init__.py b/plugins/cloudlinkmonitor/__init__.py index 7460387..b14633c 100644 --- a/plugins/cloudlinkmonitor/__init__.py +++ b/plugins/cloudlinkmonitor/__init__.py @@ -23,6 +23,7 @@ from app.core.metainfo import MetaInfoPath from app.db.downloadhistory_oper import DownloadHistoryOper from app.db.transferhistory_oper import TransferHistoryOper from app.log import logger +from app.modules.filetransfer import FileTransferModule from app.plugins import _PluginBase from app.schemas import Notification, NotificationType, TransferInfo from app.schemas.types import EventType, MediaType, SystemConfigKey @@ -55,11 +56,11 @@ class CloudLinkMonitor(_PluginBase): # 插件名称 plugin_name = "云盘实时链接" # 插件描述 - plugin_desc = "监控云盘目录文件变化,自动转移链接(不刮削)。" + plugin_desc = "监控云盘目录文件变化,自动转移链接(不刮削不生成目的二级目录)。" # 插件图标 plugin_icon = "Linkease_A.png" # 插件版本 - plugin_version = "1.4" + plugin_version = "1.5" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -82,6 +83,7 @@ class CloudLinkMonitor(_PluginBase): _notify = False _onlyonce = False _cron = None + filetransfer = None _size = 0 # 模式 compatibility/fast _mode = "compatibility" @@ -103,6 +105,7 @@ class CloudLinkMonitor(_PluginBase): self.downloadhis = DownloadHistoryOper() self.transferchian = TransferChain() self.tmdbchain = TmdbChain() + self.filetransfer = FileTransferModule() # 清空配置 self._dirconf = {} self._transferconf = {} @@ -390,13 +393,15 @@ class CloudLinkMonitor(_PluginBase): else: episodes_info = None + # 拼装媒体库一、二级子目录 + target = self.__get_dest_dir(mediainfo=mediainfo, target_dir=target) # 转移 - transferinfo: TransferInfo = self.chain.transfer(mediainfo=mediainfo, - path=file_path, - transfer_type=transfer_type, - target=target, - meta=file_meta, - episodes_info=episodes_info) + transferinfo: TransferInfo = self.filetransfer.transfer_media(in_path=file_path, + in_meta=file_meta, + mediainfo=mediainfo, + transfer_type=transfer_type, + target_dir=target, + episodes_info=episodes_info) if not transferinfo: logger.error("文件转移模块运行失败") return @@ -510,6 +515,45 @@ class CloudLinkMonitor(_PluginBase): except Exception as e: logger.error("目录监控发生错误:%s - %s" % (str(e), traceback.format_exc())) + @staticmethod + def __get_dest_dir(mediainfo: MediaInfo, target_dir: Path, typename_dir: bool = True) -> Path: + """ + 根据设置并装媒体库目录 + :param mediainfo: 媒体信息 + :target_dir: 媒体库根目录 + :typename_dir: 是否加上类型目录 + """ + if not target_dir: + return target_dir + + if mediainfo.type == MediaType.MOVIE: + # 电影 + if typename_dir: + # 目的目录加上类型和二级分类 + target_dir = target_dir / settings.LIBRARY_MOVIE_NAME / mediainfo.category + else: + # 目的目录加上二级分类 + target_dir = target_dir / mediainfo.category + + if mediainfo.type == MediaType.TV: + # 电视剧 + if mediainfo.genre_ids \ + and set(mediainfo.genre_ids).intersection(set(settings.ANIME_GENREIDS)): + # 动漫 + if typename_dir: + target_dir = target_dir / (settings.LIBRARY_ANIME_NAME + or settings.LIBRARY_TV_NAME) / mediainfo.category + else: + target_dir = target_dir / mediainfo.category + else: + # 电视剧 + if typename_dir: + target_dir = target_dir / settings.LIBRARY_TV_NAME / mediainfo.category + else: + target_dir = target_dir / mediainfo.category + + return target_dir + def send_msg(self): """ 定时检查是否有媒体处理完,发送统一消息 @@ -853,7 +897,7 @@ class CloudLinkMonitor(_PluginBase): 'props': { 'type': 'info', 'variant': 'tonal', - 'text': '监控目录不指定目的目录时,将转移到媒体库目录,并自动创建一级分类目录,同时按配置创建二级分类目录;监控目录指定了目的目录时,不会自动创建一级目录,但会根据配置创建二级分类目录。' + 'text': '按配置创建一级二级分类目录' } } ]