fix 刮削

This commit is contained in:
jxxghp
2024-09-24 12:16:49 +08:00
parent 4bf7e05a3d
commit 8612127161
9 changed files with 109 additions and 77 deletions
+3 -2
View File
@@ -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
View File
@@ -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)
# 保存图片文件到当前目录
+8 -8
View File
@@ -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}")