mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix 刮削
This commit is contained in:
@@ -532,13 +532,14 @@ class ChainBase(metaclass=ABCMeta):
|
||||
self.messageoper.add(**message.dict(), note=note_list)
|
||||
return self.run_module("post_torrents_message", message=message, torrents=torrents)
|
||||
|
||||
def metadata_img(self, mediainfo: MediaInfo, season: int = None) -> Optional[dict]:
|
||||
def metadata_img(self, mediainfo: MediaInfo, season: int = None, episode: int = None) -> Optional[dict]:
|
||||
"""
|
||||
获取图片名称和url
|
||||
:param mediainfo: 媒体信息
|
||||
:param season: 季号
|
||||
:param episode: 集号
|
||||
"""
|
||||
return self.run_module("metadata_img", mediainfo=mediainfo, season=season)
|
||||
return self.run_module("metadata_img", mediainfo=mediainfo, season=season, episode=episode)
|
||||
|
||||
def media_category(self) -> Optional[Dict[str, list]]:
|
||||
"""
|
||||
|
||||
+22
-3
@@ -358,10 +358,17 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
"""
|
||||
return StorageChain().list_files(fileitem=_fileitem)
|
||||
|
||||
def __save_file(_fileitem: schemas.FileItem, _path: Path, _content: Union[bytes, str]):
|
||||
def __save_file(_fileitem: schemas.FileItem, _path: Path, _content: Union[bytes, str],
|
||||
overwrite: bool = False):
|
||||
"""
|
||||
保存或上传文件
|
||||
:param _fileitem: 关联的媒体文件项
|
||||
:param _path: 元数据文件路径
|
||||
:param _content: 文件内容
|
||||
:param overwrite: 是否覆盖
|
||||
"""
|
||||
if not overwrite and _path.exists():
|
||||
return
|
||||
tmp_file = settings.TEMP_PATH / _path.name
|
||||
tmp_file.write_bytes(_content)
|
||||
upload_item = copy.deepcopy(_fileitem)
|
||||
@@ -369,6 +376,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
upload_item.name = _path.name
|
||||
upload_item.basename = _path.stem
|
||||
upload_item.extension = _path.suffix
|
||||
logger.info(f"保存文件:{_path}")
|
||||
StorageChain().upload_file(fileitem=upload_item, path=tmp_file)
|
||||
if tmp_file.exists():
|
||||
tmp_file.unlink()
|
||||
@@ -431,7 +439,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
image_path = filepath / image_name
|
||||
# 下载图片
|
||||
content = __download_image(_url=attr_value)
|
||||
# 写入nfo到根目录
|
||||
# 写入图片到根目录
|
||||
__save_file(_fileitem=fileitem, _path=image_path, _content=content)
|
||||
else:
|
||||
# 电视剧
|
||||
@@ -453,6 +461,17 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
return
|
||||
# 保存或上传nfo文件
|
||||
__save_file(_fileitem=fileitem, _path=filepath.with_suffix(".nfo"), _content=episode_nfo)
|
||||
# 获取集的图片
|
||||
image_dict = self.metadata_img(mediainfo=file_mediainfo,
|
||||
season=file_meta.begin_season, episode=file_meta.begin_episode)
|
||||
if image_dict:
|
||||
for episode, image_url in image_dict.items():
|
||||
image_path = filepath.with_suffix(Path(image_url).suffix)
|
||||
# 下载图片
|
||||
content = __download_image(image_url)
|
||||
# 保存图片文件到当前目录
|
||||
__save_file(_fileitem=fileitem, _path=image_path, _content=content)
|
||||
|
||||
else:
|
||||
# 当前为目录,处理目录内的文件
|
||||
files = __list_files(_fileitem=fileitem)
|
||||
@@ -495,7 +514,7 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
||||
image_dict = self.metadata_img(mediainfo=mediainfo)
|
||||
if image_dict:
|
||||
for image_name, image_url in image_dict.items():
|
||||
image_path = filepath.parent.with_name(image_name)
|
||||
image_path = filepath / image_name
|
||||
# 下载图片
|
||||
content = __download_image(image_url)
|
||||
# 保存图片文件到当前目录
|
||||
|
||||
@@ -432,14 +432,6 @@ class TransferChain(ChainBase):
|
||||
transferinfo=transferinfo
|
||||
)
|
||||
|
||||
# 刮削元数据事件
|
||||
if scrape or transferinfo.need_scrape:
|
||||
self.eventmanager.send_event(EventType.MetadataScrape, {
|
||||
'meta': file_meta,
|
||||
'mediainfo': file_mediainfo,
|
||||
'fileitem': transferinfo.target_item
|
||||
})
|
||||
|
||||
# 更新进度
|
||||
processed_num += 1
|
||||
self.progress.update(value=processed_num / total_num * 100,
|
||||
@@ -462,12 +454,20 @@ class TransferChain(ChainBase):
|
||||
mediainfo=media,
|
||||
transferinfo=transfer_info,
|
||||
season_episode=se_str)
|
||||
# 刮削事件
|
||||
if scrape or transfer_info.need_scrape:
|
||||
self.eventmanager.send_event(EventType.MetadataScrape, {
|
||||
'meta': transfer_meta,
|
||||
'mediainfo': media,
|
||||
'fileitem': transfer_info.target_diritem
|
||||
})
|
||||
# 整理完成事件
|
||||
self.eventmanager.send_event(EventType.TransferComplete, {
|
||||
'meta': transfer_meta,
|
||||
'mediainfo': media,
|
||||
'transferinfo': transfer_info
|
||||
})
|
||||
|
||||
# 结束进度
|
||||
logger.info(f"{fileitem.path} 整理完成,共 {total_num} 个文件,"
|
||||
f"失败 {fail_num} 个,跳过 {skip_num} 个")
|
||||
|
||||
Reference in New Issue
Block a user