fix meta_nfo

This commit is contained in:
jxxghp
2024-06-20 17:04:47 +08:00
parent 463fd3761a
commit ef0cd7d5c5
4 changed files with 63 additions and 10 deletions

View File

@ -765,6 +765,16 @@ class DoubanModule(_ModuleBase):
logger.error(f"刮削文件 {file} 失败,原因:{str(e)}")
logger.info(f"{path} 刮削完成")
def meta_nfo(self, mediainfo: MediaInfo, season: int = None, **kwargs) -> Optional[str]:
"""
获取NFO文件内容文本
:param mediainfo: 媒体信息
:param season: 季号
"""
if settings.SCRAP_SOURCE != "douban":
return None
return self.scraper.get_meta_nfo(mediainfo=mediainfo, season=season)
def obtain_images(self, mediainfo: MediaInfo) -> Optional[MediaInfo]:
"""
补充抓取媒体信息图片

View File

@ -1,5 +1,5 @@
from pathlib import Path
from typing import Union
from typing import Union, Optional
from xml.dom import minidom
from app.core.config import settings
@ -17,6 +17,27 @@ class DoubanScraper:
_force_nfo = False
_force_img = False
def get_meta_nfo(self, mediainfo: MediaInfo, season: int = None) -> Optional[str]:
"""
获取NFO文件内容文本
:param mediainfo: 媒体信息
:param season: 季号
"""
if mediainfo.type == MediaType.MOVIE:
# 电影元数据文件
doc = self.__gen_movie_nfo_file(mediainfo=mediainfo)
else:
if season:
# 季元数据文件
doc = self.__gen_tv_season_nfo_file(mediainfo=mediainfo, season=season)
else:
# 电视剧元数据文件
doc = self.__gen_tv_nfo_file(mediainfo=mediainfo)
if doc:
return doc.toprettyxml(indent=" ", encoding="utf-8")
return None
def gen_scraper_files(self, meta: MetaBase, mediainfo: MediaInfo,
file_path: Path, transfer_type: str,
force_nfo: bool = False, force_img: bool = False):
@ -84,7 +105,7 @@ class DoubanScraper:
logger.error(f"{file_path} 刮削失败:{str(e)}")
@staticmethod
def __gen_common_nfo(mediainfo: MediaInfo, doc, root):
def __gen_common_nfo(mediainfo: MediaInfo, doc: minidom.Document, root: minidom.Node):
# 简介
xplot = DomUtils.add_node(doc, root, "plot")
xplot.appendChild(doc.createCDATASection(mediainfo.overview or ""))
@ -108,7 +129,7 @@ class DoubanScraper:
def __gen_movie_nfo_file(self,
mediainfo: MediaInfo,
file_path: Path):
file_path: Path = None) -> minidom.Document:
"""
生成电影的NFO描述文件
:param mediainfo: 豆瓣信息
@ -127,11 +148,14 @@ class DoubanScraper:
# 年份
DomUtils.add_node(doc, root, "year", mediainfo.year or "")
# 保存
if file_path:
self.__save_nfo(doc, file_path.with_suffix(".nfo"))
return doc
def __gen_tv_nfo_file(self,
mediainfo: MediaInfo,
dir_path: Path):
dir_path: Path = None) -> minidom.Document:
"""
生成电视剧的NFO描述文件
:param mediainfo: 媒体信息
@ -152,9 +176,13 @@ class DoubanScraper:
DomUtils.add_node(doc, root, "season", "-1")
DomUtils.add_node(doc, root, "episode", "-1")
# 保存
if dir_path:
self.__save_nfo(doc, dir_path.joinpath("tvshow.nfo"))
def __gen_tv_season_nfo_file(self, mediainfo: MediaInfo, season: int, season_path: Path):
return doc
def __gen_tv_season_nfo_file(self, mediainfo: MediaInfo,
season: int, season_path: Path = None) -> minidom.Document:
"""
生成电视剧季的NFO描述文件
:param mediainfo: 媒体信息
@ -179,7 +207,9 @@ class DoubanScraper:
# seasonnumber
DomUtils.add_node(doc, root, "seasonnumber", str(season))
# 保存
if season_path:
self.__save_nfo(doc, season_path.joinpath("season.nfo"))
return doc
def __save_image(self, url: str, file_path: Path):
"""

View File

@ -332,6 +332,19 @@ class TheMovieDbModule(_ModuleBase):
force_img=force_img)
logger.info(f"{path} 刮削完成")
def meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo,
season: int = None, episode: int = None) -> Optional[str]:
"""
获取NFO文件内容文本
:param meta: 元数据
:param mediainfo: 媒体信息
:param season: 季号
:param episode: 集号
"""
if settings.SCRAP_SOURCE != "themoviedb":
return None
return self.scraper.get_meta_nfo(meta=meta, mediainfo=mediainfo, season=season, episode=episode)
def tmdb_discover(self, mtype: MediaType, sort_by: str, with_genres: str, with_original_language: str,
page: int = 1) -> Optional[List[MediaInfo]]:
"""

View File

@ -26,7 +26,7 @@ class TmdbScraper:
def __init__(self, tmdb):
self.tmdb = tmdb
def meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo,
def get_meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo,
season: int = None, episode: int = None) -> Optional[str]:
"""
获取NFO文件内容文本