From b23083faa025bcf60fb9cf19b06ea77cae1b9d32 Mon Sep 17 00:00:00 2001 From: thsrite Date: Fri, 22 Nov 2024 11:09:56 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E4=B8=BB=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E4=BF=AE=E6=94=B9=E4=BA=8B=E4=BB=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E6=94=B6=E5=88=B0=E9=80=9A=E7=9F=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- package.v2.json | 3 ++- plugins.v2/mediasyncdel/__init__.py | 35 +++++++++++++++++++++++++- plugins/cloudsyncdel/__init__.py | 38 ++++++++++++++--------------- 4 files changed, 57 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 519695c..bd149dd 100644 --- a/package.json +++ b/package.json @@ -631,12 +631,13 @@ "name": "云盘同步删除", "description": "媒体库删除软连接文件后,同步删除云盘文件。", "labels": "云盘", - "version": "1.5.8", + "version": "1.5.9", "icon": "clouddisk.png", "author": "thsrite", "level": 2, "v2": true, "history": { + "v1.5.9": "修复主程序修改事件任务后,同步删除未收到通知的问题", "v1.5.8": "修复删除strm后删除本地文件", "v1.5.6": "修复媒体库路径映射", "v1.5.5": "兼容strm删除", diff --git a/package.v2.json b/package.v2.json index 444dfbf..0768dd8 100644 --- a/package.v2.json +++ b/package.v2.json @@ -178,11 +178,12 @@ "name": "媒体文件同步删除", "description": "同步删除历史记录、源文件和下载任务。", "labels": "媒体库,文件整理", - "version": "1.8.6", + "version": "1.8.7", "icon": "mediasyncdel.png", "author": "thsrite", "level": 1, "history": { + "v1.8.7": "修复主程序修改事件任务后,同步删除未收到通知的问题", "v1.8.6": "修复删除源文件", "v1.8.4": "修复暂停种子失败", "v1.8.3": "修复源文件删除", diff --git a/plugins.v2/mediasyncdel/__init__.py b/plugins.v2/mediasyncdel/__init__.py index 3171ac6..5b880f1 100644 --- a/plugins.v2/mediasyncdel/__init__.py +++ b/plugins.v2/mediasyncdel/__init__.py @@ -25,7 +25,7 @@ class MediaSyncDel(_PluginBase): # 插件图标 plugin_icon = "mediasyncdel.png" # 插件版本 - plugin_version = "1.8.6" + plugin_version = "1.8.7" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -709,6 +709,39 @@ class MediaSyncDel(_PluginBase): season_num=season_num, episode_num=episode_num) + @eventmanager.register(EventType.PluginAction) + def sync_del(self, event: Event = None): + """ + 扫描 + """ + if not self._enabled or not event: + return + + event_data = event.event_data + if not event_data or event_data.get("action") != "media_sync_del": + return + + logger.info(f"收到媒体同步删除请求:{event_data}") + # 媒体类型 + media_type = event_data.get("media_type") + # 媒体名称 + media_name = event_data.get("media_name") + # 媒体路径 + media_path = event_data.get("media_path") + # tmdb_id + tmdb_id = event_data.get("tmdb_id") + # 季数 + season_num = event_data.get("season_num") + # 集数 + episode_num = event_data.get("episode_num") + + self.__sync_del(media_type=media_type, + media_name=media_name, + media_path=media_path, + tmdb_id=tmdb_id, + season_num=season_num, + episode_num=episode_num) + def __sync_del(self, media_type: str, media_name: str, media_path: str, tmdb_id: int, season_num: str, episode_num: str): if not media_type: diff --git a/plugins/cloudsyncdel/__init__.py b/plugins/cloudsyncdel/__init__.py index 0e8b491..a47ebb2 100644 --- a/plugins/cloudsyncdel/__init__.py +++ b/plugins/cloudsyncdel/__init__.py @@ -21,7 +21,7 @@ class CloudSyncDel(_PluginBase): # 插件图标 plugin_icon = "clouddisk.png" # 插件版本 - plugin_version = "1.5.8" + plugin_version = "1.5.9" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -109,15 +109,15 @@ class CloudSyncDel(_PluginBase): elif Path(local_path).is_file(): Path(local_path).unlink() # 删除文件 logger.info(f"获取到本地路径 {local_path}, 通知媒体库同步删除插件删除") - eventItem = schemas.WebhookEventInfo(event="media_del", channel="emby") - eventItem.item_type = media_type - eventItem.item_name = media_name - eventItem.item_path = local_path - eventItem.tmdb_id = tmdb_id - eventItem.season_id = season_num - eventItem.episode_id = episode_num - eventItem.item_isvirtual = "False" - self.eventmanager.send_event(EventType.WebhookMessage, eventItem) + self.eventmanager.send_event(EventType.PluginAction, { + 'media_type': media_type, + 'media_name': media_name, + 'media_path': local_path, + 'tmdb_id': tmdb_id, + 'season_num': season_num, + 'episode_num': episode_num, + 'action': 'media_sync_del' + }) is_local = True else: if Path(local_path).parent.exists(): @@ -135,15 +135,15 @@ class CloudSyncDel(_PluginBase): logger.info(f"本地文件 {file} 已删除") if Path(file).suffix in settings.RMT_MEDIAEXT: logger.info(f"获取到本地路径 {file}, 通知媒体库同步删除插件删除") - eventItem = schemas.WebhookEventInfo(event="media_del", channel="emby") - eventItem.item_type = media_type - eventItem.item_name = media_name - eventItem.item_path = file - eventItem.tmdb_id = tmdb_id - eventItem.season_id = season_num - eventItem.episode_id = episode_num - eventItem.item_isvirtual = "False" - self.eventmanager.send_event(EventType.WebhookMessage, eventItem) + self.eventmanager.send_event(EventType.PluginAction, { + 'media_type': media_type, + 'media_name': media_name, + 'media_path': str(file), + 'tmdb_id': tmdb_id, + 'season_num': season_num, + 'episode_num': episode_num, + 'action': 'media_sync_del' + }) # 删除thumb图片 thumb_file = Path(local_path).parent / (Path(local_path).stem + "-thumb.jpg")