mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix #3162
This commit is contained in:
+11
-3
@@ -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
@@ -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"]:
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|
||||||
# 全程加锁
|
# 全程加锁
|
||||||
|
|||||||
Reference in New Issue
Block a user