fix 通知标题计算方法

This commit is contained in:
jxxghp 2023-09-01 07:29:49 +08:00
parent 8eab38c91e
commit 7cfd05a7a5
2 changed files with 32 additions and 34 deletions

View File

@ -2,7 +2,7 @@ import json
import shutil import shutil
import threading import threading
from pathlib import Path from pathlib import Path
from typing import List, Optional, Tuple, Union from typing import List, Optional, Tuple, Union, Dict
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@ -115,13 +115,15 @@ class TransferChain(ChainBase):
return False, f"{path.name} 没有找到可转移的媒体文件" return False, f"{path.name} 没有找到可转移的媒体文件"
# 汇总错误信息 # 汇总错误信息
err_msgs = [] err_msgs: List[str] = []
# 汇总季集清单
season_episodes: Dict[Tuple, List[int]] = []
# 汇总元数据 # 汇总元数据
metas = {} metas: Dict[Tuple, MetaBase] = {}
# 汇总媒体信息 # 汇总媒体信息
medias = {} medias: Dict[Tuple, MediaInfo] = {}
# 汇总转移信息 # 汇总转移信息
transfers = {} transfers: Dict[Tuple, TransferInfo] = {}
# 有集自定义格式 # 有集自定义格式
formaterHandler = FormatParser(eformat=epformat.format, formaterHandler = FormatParser(eformat=epformat.format,
@ -250,30 +252,22 @@ class TransferChain(ChainBase):
continue continue
# 汇总信息 # 汇总信息
if file_mediainfo.tmdb_id not in medias: mkey = (file_mediainfo.tmdb_id, meta.begin_season)
if mkey not in medias:
# 新增信息 # 新增信息
metas[file_mediainfo.tmdb_id] = file_meta metas[mkey] = file_meta
medias[file_mediainfo.tmdb_id] = file_mediainfo medias[mkey] = file_mediainfo
transfers[file_mediainfo.tmdb_id] = transferinfo season_episodes[mkey] = file_meta.episode_list
transfers[mkey] = transferinfo
else: else:
# 合并元数据集 # 合并季集清单
if (metas[file_mediainfo.tmdb_id].begin_episode or 0) > (file_meta.begin_episode or 0): season_episodes[mkey] = list(set(season_episodes[mkey] + file_meta.episode_list))
metas[file_mediainfo.tmdb_id].begin_episode = file_meta.begin_episode
if (metas[file_mediainfo.tmdb_id].end_episode or 0) < (file_meta.end_episode or 0):
metas[file_mediainfo.tmdb_id].end_episode = file_meta.end_episode
metas[file_mediainfo.tmdb_id].total_episode += file_meta.total_episode
# 合并元数据季
if (metas[file_mediainfo.tmdb_id].begin_season or 0) > (file_meta.begin_season or 0):
metas[file_mediainfo.tmdb_id].begin_season = file_meta.begin_season
if (metas[file_mediainfo.tmdb_id].end_season or 0) < (file_meta.end_season or 0):
metas[file_mediainfo.tmdb_id].end_season = file_meta.end_season
metas[file_mediainfo.tmdb_id].total_season += file_meta.total_season
# 合并转移数据 # 合并转移数据
transfers[file_mediainfo.tmdb_id].file_count += transferinfo.file_count transfers[mkey].file_count += transferinfo.file_count
transfers[file_mediainfo.tmdb_id].file_list.extend(transferinfo.file_list) transfers[mkey].total_size += transferinfo.total_size
transfers[file_mediainfo.tmdb_id].file_list_new.extend(transferinfo.file_list_new) transfers[mkey].file_list.extend(transferinfo.file_list)
transfers[file_mediainfo.tmdb_id].fail_list.extend(transferinfo.fail_list) transfers[mkey].file_list_new.extend(transferinfo.file_list_new)
transfers[file_mediainfo.tmdb_id].total_size += transferinfo.total_size transfers[mkey].fail_list.extend(transferinfo.fail_list)
# 新增转移成功历史记录 # 新增转移成功历史记录
self.__insert_sucess_history( self.__insert_sucess_history(
@ -297,15 +291,21 @@ class TransferChain(ChainBase):
key=ProgressKey.FileTransfer) key=ProgressKey.FileTransfer)
# 目录或文件转移完成 # 目录或文件转移完成
for tmdbid, media in medias.items(): for mkey, media in medias.items():
meta = metas[mkey]
transferinfo = transfers[mkey]
# 刷新媒体库 # 刷新媒体库
self.refresh_mediaserver(mediainfo=media, file_path=transfers[tmdbid].target_path) self.refresh_mediaserver(mediainfo=media, file_path=transferinfo.target_path)
# 刮削 # 刮削
self.scrape_metadata(path=transfers[tmdbid].target_path, mediainfo=media) self.scrape_metadata(path=transferinfo.target_path, mediainfo=media)
# 发送通知 # 发送通知
self.send_transfer_message(meta=metas[tmdbid], se_str = None
if mediainfo.type == MediaType.TV:
se_str = f"{meta.season} {StringUtils.format_ep(season_episodes[mkey])}"
self.send_transfer_message(meta=meta,
mediainfo=media, mediainfo=media,
transferinfo=transfers[tmdbid]) transferinfo=transferinfo,
season_episode=se_str)
# 结束进度 # 结束进度
logger.info(f"{path} 转移完成,共 {total_num} 个文件," logger.info(f"{path} 转移完成,共 {total_num} 个文件,"
f"成功 {total_num - len(err_msgs)} 个,失败 {len(err_msgs)}") f"成功 {total_num - len(err_msgs)} 个,失败 {len(err_msgs)}")

View File

@ -452,10 +452,8 @@ class DirMonitor(_PluginBase):
season_episode = None season_episode = None
# 处理文件多,说明是剧集,显示季入库消息 # 处理文件多,说明是剧集,显示季入库消息
if mediainfo.type == MediaType.TV and len(episodes) > 1: if mediainfo.type == MediaType.TV and len(episodes) > 1:
# 剧集季
season = "S%s" % str(file_meta.begin_season).rjust(2, "0")
# 季集文本 # 季集文本
season_episode = f"{season} {StringUtils.format_ep(episodes)}" season_episode = f"{file_meta.season} {StringUtils.format_ep(episodes)}"
# 发送消息 # 发送消息
self.transferchian.send_transfer_message(meta=file_meta, self.transferchian.send_transfer_message(meta=file_meta,
mediainfo=mediainfo, mediainfo=mediainfo,