Merge pull request #955 from Seed680/main

This commit is contained in:
jxxghp
2025-12-23 08:43:19 +08:00
committed by GitHub
2 changed files with 41 additions and 7 deletions

View File

@@ -93,11 +93,12 @@
"name": "媒体库服务器通知",
"description": "发送Emby/Jellyfin/Plex服务器的播放、入库等通知消息。",
"labels": "消息通知,媒体库",
"version": "1.8",
"version": "1.8.1",
"icon": "mediaplay.png",
"author": "jxxghp",
"level": 1,
"history": {
"v1.8.1": "修复单集剧情信息有概率获取失败的问题",
"v1.8": "当整理路径中没有tmdbid时会尝试从媒体服务器中获取",
"v1.7.1": "未获取到tmdb信息则按原有逻辑发送电影显示海报",
"v1.7": "对TV剧集入库事件进行聚合避免消息轰炸。更新后如果打不开插件请重置插件",

View File

@@ -37,7 +37,7 @@ class MediaServerMsg(_PluginBase):
# 插件图标
plugin_icon = "mediaplay.png"
# 插件版本
plugin_version = "1.8"
plugin_version = "1.8.1"
# 插件作者
plugin_author = "jxxghp"
# 作者主页
@@ -761,29 +761,62 @@ class MediaServerMsg(_PluginBase):
# 安全地获取概述信息
def safe_get_overview(tmdb_data, event_data, multiple_eps):
"""安全地获取剧集概述"""
"""
安全地获取剧集概述信息
该函数按照以下优先级获取剧情概述:
1. 首先尝试使用来自webhook事件的overviewevent_data.overview
2. 如果webhook事件中没有overview则从TMDB数据中获取
- 如果是多集入库multiple_eps=True则返回剧集整体概述
- 如果是单集入库multiple_eps=False则优先返回该集的概述
如果该集概述为空,则回退到剧集整体概述
Args:
tmdb_data (dict): TMDB API返回的剧集数据
event_data (WebhookEventInfo): Webhook事件数据
multiple_eps (bool): 是否为多集入库多个episode聚合发送
Returns:
str: 剧情概述信息,如果无法获取则返回空字符串
"""
# 优先使用来自webhook事件的概述信息
if event_data.overview:
return event_data.overview
# 如果webhook事件中没有概述则尝试从TMDB数据中获取
elif tmdb_data:
# 多集入库情况下,返回剧集整体概述
if multiple_eps:
return tmdb_data.get('overview', '')
else:
# 单集情况下尝试获取具体集数的概述
# 单集入库情况下,优先获取具体集数的概述
episodes = tmdb_data.get('episodes', [])
# 检查是否有episode_id并且episodes数据存在
if (episodes and
hasattr(event_data, 'episode_id') and
event_data.episode_id is not None):
try:
# 将episode_id转换为数组索引集数从1开始数组从0开始
ep_index = int(event_data.episode_id) - 1
# 确保索引在有效范围内
if 0 <= ep_index < len(episodes):
episode_info = episodes[ep_index]
return episode_info.get('overview', tmdb_data.get('overview', ''))
episode_overview = episode_info.get('overview', '')
# 如果该集的概述存在且非空,则返回该集概述
if episode_overview:
return episode_overview
except (ValueError, TypeError):
# 如果转换episode_id为整数失败跳过异常回退到剧集整体概述
pass
# 如果无法获取单集概述,回退到剧集整体概述
# 如果无法获取该集概述或episode_id不存在回退到剧集整体概述
return tmdb_data.get('overview', '')
# 如果以上都失败,返回空字符串
return ''
try:
if not first_event.tmdb_id:
logger.debug("tmdb_id为空使用原有逻辑发送消息")