From f8d5e3f438c3b8a2d5aada48dea044e7ff1b33f3 Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 26 Aug 2023 10:51:12 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=9B=AE=E5=BD=95=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5=E5=89=A7=E9=9B=86=E9=9B=86?= =?UTF-8?q?=E6=95=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/transfer.py | 5 +++-- app/plugins/dirmonitor/__init__.py | 34 +++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 6baf7e7e..39339705 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -396,11 +396,12 @@ class TransferChain(ChainBase): ) return his - def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo, transferinfo: TransferInfo): + def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo, transferinfo: TransferInfo, + season_episode: str = None): """ 发送入库成功的消息 """ - msg_title = f"{mediainfo.title_year} {meta.season_episode} 已入库" + msg_title = f"{mediainfo.title_year} {meta.season_episode if not season_episode else season_episode} 已入库" if mediainfo.vote_average: msg_str = f"评分:{mediainfo.vote_average},类型:{mediainfo.type.value}" else: diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 79180ef7..e27dfa24 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -423,22 +423,50 @@ class DirMonitor(_PluginBase): # 汇总处理文件总大小 total_size = 0 file_count = 0 + + # 剧集汇总 + episodes = [] for file in media_files: transferinfo = file.get("transferinfo") total_size += transferinfo.total_size file_count += 1 + + file_meta = file.get("file_meta") + if file_meta and file_meta.begin_episode: + episodes.append(file_meta.begin_episode) + transferinfo.total_size = total_size # 汇总处理文件数量 transferinfo.file_count = file_count + # 剧集季集信息 S01 E01-E04 || S01 E01、E02、E04 + season_episode = None # 处理文件多,说明是剧集,显示季入库消息 if mediainfo.type == MediaType.TV and file_count > 1: - file_meta.begin_episode = file_meta.begin_episode - file_meta.end_episode = media_files[-1].get("file_meta").begin_episode + # 剧集季 + season = file_meta.begin_season + + # 剧集按照升序排序 + episodes.sort() + # 开始、结束index + start = int(episodes[0][-1:]) + end = int(episodes[len(episodes) - 1][-1:]) + + # 开始结束间所有的元素 1,2,3,4 + all_ele = [i for i in range(start, end + 1)] + # 本次剧集组所有的元素 1,2,4 + episode_ele = [int(e.replace("E", "")) for e in episodes] + + # 如果本次剧集组所有元素=开始结束间所有元素,则表示区间内 S01 E01-E04 + if all_ele == episode_ele: + season_episode = f"{season} {episodes[start - 1]}-{episodes[end - 1]}" + else: + # 否则所有剧集组逗号分隔显示 S01 E01、E02、E04 + season_episode = f"{season} {'、'.join(episodes)}" self.transferchian.send_transfer_message(meta=file_meta, mediainfo=mediainfo, - transferinfo=transferinfo) + season_episode=season_episode) # 发送完消息,移出key del self._medias[medis_title_year_season] continue