From b4d07cf6ab7944ad936ee9aa7c02974afc39bccf Mon Sep 17 00:00:00 2001 From: thsrite Date: Wed, 1 Nov 2023 12:06:05 +0800 Subject: [PATCH] fix --- app/modules/emby/emby.py | 1 + app/modules/jellyfin/jellyfin.py | 1 + app/plugins/mediasyncdel/__init__.py | 17 +++++++++++++---- app/schemas/mediaserver.py | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index 4435f6c1..a867b16a 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -803,6 +803,7 @@ class Emby(metaclass=Singleton): logger.debug(f"接收到emby webhook:{message}") eventItem = schemas.WebhookEventInfo(event=eventType, channel="emby") if message.get('Item'): + eventItem.media_type = message.get('Item', {}).get('Type') if message.get('Item', {}).get('Type') == 'Episode' \ or message.get('Item', {}).get('Type') == 'Series' \ or message.get('Item', {}).get('Type') == 'Season': diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index aade1704..835c95fa 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -466,6 +466,7 @@ class Jellyfin(metaclass=Singleton): eventItem.device_name = message.get('DeviceName') eventItem.user_name = message.get('NotificationUsername') eventItem.client = message.get('ClientName') + eventItem.media_type = message.get('ItemType') if message.get("ItemType") == "Episode" \ or message.get("ItemType") == "Series" \ or message.get("ItemType") == "Season": diff --git a/app/plugins/mediasyncdel/__init__.py b/app/plugins/mediasyncdel/__init__.py index dc4f32ab..12f61e0e 100644 --- a/app/plugins/mediasyncdel/__init__.py +++ b/app/plugins/mediasyncdel/__init__.py @@ -4,7 +4,7 @@ import os import re import time from pathlib import Path -from typing import List, Tuple, Dict, Any, Optional, Union +from typing import List, Tuple, Dict, Any, Optional from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger @@ -506,7 +506,7 @@ class MediaSyncDel(_PluginBase): return # 媒体类型 - media_type = event_data.item_type + media_type = event_data.media_type # 媒体名称 media_name = event_data.item_name # 媒体路径 @@ -518,6 +518,11 @@ class MediaSyncDel(_PluginBase): # 集数 episode_num = event_data.episode_id + # 兼容emby webhook season删除没有发送tmdbid + if not tmdb_id and str(media_type) != 'Season': + logger.error(f"{media_name} 同步删除失败,未获取到TMDB ID,请检查媒体库媒体是否刮削") + return + self.__sync_del(media_type=media_type, media_name=media_name, media_path=media_path, @@ -573,6 +578,10 @@ class MediaSyncDel(_PluginBase): # 集数 episode_num = event_data.episode_id + if not tmdb_id or not str(tmdb_id).isdigit(): + logger.error(f"{media_name} 同步删除失败,未获取到TMDB ID,请检查媒体库媒体是否刮削") + return + self.__sync_del(media_type=media_type, media_name=media_name, media_path=media_path, @@ -581,7 +590,7 @@ class MediaSyncDel(_PluginBase): episode_num=episode_num) def __sync_del(self, media_type: str, media_name: str, media_path: str, - tmdb_id: Union[int, str], season_num: str, episode_num: str): + tmdb_id: int, season_num: str, episode_num: str): """ 执行删除逻辑 """ @@ -721,7 +730,7 @@ class MediaSyncDel(_PluginBase): self.save_data("history", history) def __get_transfer_his(self, media_type: str, media_name: str, media_path: str, - tmdb_id: Union[int, str], season_num: str, episode_num: str): + tmdb_id: int, season_num: str, episode_num: str): """ 查询转移记录 """ diff --git a/app/schemas/mediaserver.py b/app/schemas/mediaserver.py index 9da086d5..cad8a947 100644 --- a/app/schemas/mediaserver.py +++ b/app/schemas/mediaserver.py @@ -138,3 +138,4 @@ class WebhookEventInfo(BaseModel): item_favorite: Optional[bool] = None save_reason: Optional[str] = None item_isvirtual: Optional[bool] = None + media_type: Optional[str] = None