This commit is contained in:
jxxghp
2024-11-21 13:50:49 +08:00
parent 23c5982f5a
commit 84897aa592
4 changed files with 46 additions and 21 deletions
+11 -3
View File
@@ -135,9 +135,17 @@ class StorageChain(ChainBase):
if not self.delete_file(fileitem): if not self.delete_file(fileitem):
logger.warn(f"{fileitem.storage}{fileitem.path} 删除失败") logger.warn(f"{fileitem.storage}{fileitem.path} 删除失败")
return False return False
# 处理上级目录 if mtype:
if mtype and mtype == MediaType.TV: # 重命名格式
dir_item = self.get_file_item(storage=fileitem.storage, path=Path(fileitem.path).parent.parent) rename_format = settings.TV_RENAME_FORMAT \
if mtype == MediaType.TV else settings.MOVIE_RENAME_FORMAT
# 计算重命名中的文件夹层数
rename_format_level = len(rename_format.split("/")) - 1
if rename_format_level < 1:
return True
# 处理上级目录
dir_item = self.get_file_item(storage=fileitem.storage,
path=Path(fileitem.path).parents[rename_format_level - 1])
else: else:
dir_item = self.get_parent_item(fileitem) dir_item = self.get_parent_item(fileitem)
if dir_item and len(Path(dir_item.path).parts) > 2: if dir_item and len(Path(dir_item.path).parts) > 2:
+11 -12
View File
@@ -10,7 +10,7 @@ from app.chain.tmdb import TmdbChain
from app.core.config import settings, global_vars from app.core.config import settings, global_vars
from app.core.context import MediaInfo from app.core.context import MediaInfo
from app.core.meta import MetaBase from app.core.meta import MetaBase
from app.core.metainfo import MetaInfoPath from app.core.metainfo import MetaInfoPath, MetaInfo
from app.db.downloadhistory_oper import DownloadHistoryOper from app.db.downloadhistory_oper import DownloadHistoryOper
from app.db.models.downloadhistory import DownloadHistory from app.db.models.downloadhistory import DownloadHistory
from app.db.models.transferhistory import TransferHistory from app.db.models.transferhistory import TransferHistory
@@ -184,8 +184,6 @@ class TransferChain(ChainBase):
# 汇总季集清单 # 汇总季集清单
season_episodes: Dict[Tuple, List[int]] = {} season_episodes: Dict[Tuple, List[int]] = {}
# 汇总元数据
metas: Dict[Tuple, MetaBase] = {}
# 汇总媒体信息 # 汇总媒体信息
medias: Dict[Tuple, MediaInfo] = {} medias: Dict[Tuple, MediaInfo] = {}
# 汇总整理信息 # 汇总整理信息
@@ -447,7 +445,6 @@ class TransferChain(ChainBase):
mkey = (file_mediainfo.tmdb_id, file_meta.begin_season) mkey = (file_mediainfo.tmdb_id, file_meta.begin_season)
if mkey not in medias: if mkey not in medias:
# 新增信息 # 新增信息
metas[mkey] = file_meta
medias[mkey] = file_mediainfo medias[mkey] = file_mediainfo
season_episodes[mkey] = file_meta.episode_list season_episodes[mkey] = file_meta.episode_list
transfers[mkey] = transferinfo transfers[mkey] = transferinfo
@@ -471,6 +468,14 @@ class TransferChain(ChainBase):
transferinfo=transferinfo transferinfo=transferinfo
) )
# 整理完成事件
self.eventmanager.send_event(EventType.TransferComplete, {
'meta': file_meta,
'mediainfo': file_mediainfo,
'transferinfo': transferinfo,
'download_hash': download_hash,
})
# 更新进度 # 更新进度
processed_num += 1 processed_num += 1
self.progress.update(value=processed_num / total_num * 100, self.progress.update(value=processed_num / total_num * 100,
@@ -483,8 +488,9 @@ class TransferChain(ChainBase):
# 执行后续处理 # 执行后续处理
for mkey, media in medias.items(): for mkey, media in medias.items():
transfer_meta = metas[mkey]
transfer_info = transfers[mkey] transfer_info = transfers[mkey]
transfer_meta = MetaInfo(transfer_info.target_diritem.name)
transfer_meta.begin_season = mkey[1]
# 发送通知 # 发送通知
if transfer_info.need_notify: if transfer_info.need_notify:
se_str = None se_str = None
@@ -501,13 +507,6 @@ class TransferChain(ChainBase):
'mediainfo': media, 'mediainfo': media,
'fileitem': transfer_info.target_diritem 'fileitem': transfer_info.target_diritem
}) })
# 整理完成事件
self.eventmanager.send_event(EventType.TransferComplete, {
'meta': transfer_meta,
'mediainfo': media,
'transferinfo': transfer_info,
'download_hash': download_hash,
})
# 移动模式处理 # 移动模式处理
if all_success and current_transfer_type in ["move"]: if all_success and current_transfer_type in ["move"]:
+21 -3
View File
@@ -884,6 +884,18 @@ class FileManagerModule(_ModuleBase):
rename_format = settings.TV_RENAME_FORMAT \ rename_format = settings.TV_RENAME_FORMAT \
if mediainfo.type == MediaType.TV else settings.MOVIE_RENAME_FORMAT if mediainfo.type == MediaType.TV else settings.MOVIE_RENAME_FORMAT
# 计算重命名中的文件夹层数
rename_format_level = len(rename_format.split("/")) - 1
if rename_format_level < 1:
# 重命名格式不合法
logger.error(f"重命名格式不合法:{rename_format}")
return TransferInfo(success=False,
message=f"重命名格式不合法",
fileitem=fileitem,
transfer_type=transfer_type,
need_notify=need_notify)
# 判断是否为文件夹 # 判断是否为文件夹
if fileitem.type == "dir": if fileitem.type == "dir":
# 整理整个目录,一般为蓝光原盘 # 整理整个目录,一般为蓝光原盘
@@ -964,9 +976,15 @@ class FileManagerModule(_ModuleBase):
# 目的操作对象 # 目的操作对象
target_oper: StorageBase = self.__get_storage_oper(target_storage) target_oper: StorageBase = self.__get_storage_oper(target_storage)
# 目标目录 # 目标目录
target_diritem = target_oper.get_folder( target_diritem = target_oper.get_folder(new_file.parents[rename_format_level - 1])
new_file.parent) if mediainfo.type == MediaType.MOVIE else target_oper.get_folder( if not target_diritem:
new_file.parent.parent) logger.error(f"目标目录 {new_file.parents[rename_format_level - 1]} 获取失败")
return TransferInfo(success=False,
message=f"目标目录 {new_file.parents[rename_format_level - 1]} 获取失败",
fileitem=fileitem,
fail_list=[fileitem.path],
transfer_type=transfer_type,
need_notify=need_notify)
# 目标文件 # 目标文件
target_item = target_oper.get_item(new_file) target_item = target_oper.get_item(new_file)
if target_item: if target_item:
+3 -3
View File
@@ -280,9 +280,9 @@ class Monitor(metaclass=Singleton):
""" """
获取BDMV目录的上级目录 获取BDMV目录的上级目录
""" """
for parent in _path.parents: for p in _path.parents:
if parent.name == "BDMV": if p.name == "BDMV":
return parent.parent return p.parent
return None return None
# 全程加锁 # 全程加锁