Merge pull request #1034 from thsrite/main

This commit is contained in:
jxxghp 2023-11-01 12:08:53 +08:00 committed by GitHub
commit 271b33ecdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 9 deletions

View File

@ -158,6 +158,13 @@ class TransferHistory(Base):
# 电视剧所有季集
result = db.query(TransferHistory).filter(TransferHistory.title == title,
TransferHistory.year == year).all()
# 类型 + 转移路径emby webhook season无tmdbid场景
elif mtype and season and dest:
# 电视剧某季
result = db.query(TransferHistory).filter(TransferHistory.type == mtype,
TransferHistory.seasons == season,
TransferHistory.dest.like(f"{dest}%")).all()
if result:
return list(result)
return []

View File

@ -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':

View File

@ -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":

View File

@ -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,
@ -604,9 +613,6 @@ class MediaSyncDel(_PluginBase):
if not media_type:
logger.error(f"{media_name} 同步删除失败,未获取到媒体类型,请检查媒体是否刮削")
return
if not tmdb_id or not str(tmdb_id).isdigit():
logger.error(f"{media_name} 同步删除失败未获取到TMDB ID请检查媒体是否刮削")
return
# 查询转移记录
msg, transfer_history = self.__get_transfer_his(media_type=media_type,
@ -714,8 +720,8 @@ class MediaSyncDel(_PluginBase):
"title": media_name,
"year": year,
"path": media_path,
"season": season_num,
"episode": episode_num,
"season": season_num if season_num and str(season_num).isdigit() else None,
"episode": episode_num if episode_num and str(episode_num).isdigit() else None,
"image": poster_image,
"del_time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
})
@ -768,9 +774,16 @@ class MediaSyncDel(_PluginBase):
logger.error(f"{media_name} 季同步删除失败,未获取到具体季")
return
msg = f'剧集 {media_name} S{season_num} {tmdb_id}'
if tmdb_id and str(tmdb_id).isdigit():
# 根据tmdb_id查询转移记录
transfer_history: List[TransferHistory] = self._transferhis.get_by(tmdbid=tmdb_id,
mtype=mtype.value,
season=f'S{season_num}')
else:
# 兼容emby webhook不发送tmdb场景
transfer_history: List[TransferHistory] = self._transferhis.get_by(mtype=mtype.value,
season=f'S{season_num}',
dest=media_path)
# 删除剧集S02E02
elif mtype == MediaType.TV and season_num and episode_num:
if not season_num or not str(season_num).isdigit() or not episode_num or not str(episode_num).isdigit():

View File

@ -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