fix:#4876

This commit is contained in:
jxxghp
2025-09-02 12:45:44 +08:00
parent d7e2633a92
commit 36a6802439
+25 -15
View File
@@ -310,6 +310,21 @@ class MediaChain(ChainBase):
) )
return None return None
@staticmethod
def is_bluray_folder(fileitem: schemas.FileItem) -> bool:
"""
判断是否为原盘目录
"""
if not fileitem or fileitem.type != "dir":
return False
# 蓝光原盘目录必备的文件或文件夹
required_files = ['BDMV', 'CERTIFICATE']
# 检查目录下是否存在所需文件或文件夹
for item in StorageChain().list_files(fileitem):
if item.name in required_files:
return True
return False
@eventmanager.register(EventType.MetadataScrape) @eventmanager.register(EventType.MetadataScrape)
def scrape_metadata_event(self, event: Event): def scrape_metadata_event(self, event: Event):
""" """
@@ -349,6 +364,15 @@ class MediaChain(ChainBase):
overwrite=overwrite) overwrite=overwrite)
else: else:
if file_list: if file_list:
# 如果是BDMV原盘目录,只对根目录进行刮削,不处理子目录
if self.is_bluray_folder(fileitem):
logger.info(f"检测到BDMV原盘目录,只对根目录进行刮削:{fileitem.path}")
self.scrape_metadata(fileitem=fileitem,
mediainfo=mediainfo,
init_folder=True,
recursive=False,
overwrite=overwrite)
else:
# 1. 收集fileitem和file_list中每个文件之间所有子目录 # 1. 收集fileitem和file_list中每个文件之间所有子目录
all_dirs = set() all_dirs = set()
root_path = Path(fileitem.path) root_path = Path(fileitem.path)
@@ -417,20 +441,6 @@ class MediaChain(ChainBase):
storagechain = StorageChain() storagechain = StorageChain()
def is_bluray_folder(_fileitem: schemas.FileItem) -> bool:
"""
判断是否为原盘目录
"""
if not _fileitem or _fileitem.type != "dir":
return False
# 蓝光原盘目录必备的文件或文件夹
required_files = ['BDMV', 'CERTIFICATE']
# 检查目录下是否存在所需文件或文件夹
for item in storagechain.list_files(_fileitem):
if item.name in required_files:
return True
return False
def __list_files(_fileitem: schemas.FileItem): def __list_files(_fileitem: schemas.FileItem):
""" """
列出下级文件 列出下级文件
@@ -521,7 +531,7 @@ class MediaChain(ChainBase):
# 电影目录 # 电影目录
if recursive: if recursive:
# 处理文件 # 处理文件
if is_bluray_folder(fileitem): if self.is_bluray_folder(fileitem):
# 原盘目录 # 原盘目录
if scraping_switchs.get('movie_nfo', True): if scraping_switchs.get('movie_nfo', True):
nfo_path = filepath / (filepath.name + ".nfo") nfo_path = filepath / (filepath.name + ".nfo")