refactor:减少一次接口查询

This commit is contained in:
jxxghp
2025-04-03 10:43:31 +08:00
parent 439b834aa8
commit 21e120a4f8
4 changed files with 25 additions and 16 deletions
+7
View File
@@ -264,6 +264,8 @@ class MediaInfo:
next_episode_to_air: dict = field(default_factory=dict) next_episode_to_air: dict = field(default_factory=dict)
# 内容分级 # 内容分级
content_rating: str = None content_rating: str = None
# 剧集组
episode_groups: List[dict] = field(default_factory=list)
def __post_init__(self): def __post_init__(self):
# 设置媒体信息 # 设置媒体信息
@@ -454,6 +456,10 @@ class MediaInfo:
air_date = seainfo.get("air_date") air_date = seainfo.get("air_date")
if air_date: if air_date:
self.season_years[season] = air_date[:4] self.season_years[season] = air_date[:4]
# 剧集组
if info.get("episode_groups"):
self.episode_groups = info["episode_groups"].get("results") or []
# 海报 # 海报
if info.get('poster_path'): if info.get('poster_path'):
self.poster_path = f"https://{settings.TMDB_IMAGE_DOMAIN}/t/p/original{info.get('poster_path')}" self.poster_path = f"https://{settings.TMDB_IMAGE_DOMAIN}/t/p/original{info.get('poster_path')}"
@@ -773,6 +779,7 @@ class MediaInfo:
self.spoken_languages = [] self.spoken_languages = []
self.networks = [] self.networks = []
self.next_episode_to_air = {} self.next_episode_to_air = {}
self.episode_groups = []
@dataclass @dataclass
+3 -3
View File
@@ -207,9 +207,9 @@ class TheMovieDbModule(_ModuleBase):
logger.info(f"{tmdbid} TMDB识别结果:{mediainfo.type.value} " logger.info(f"{tmdbid} TMDB识别结果:{mediainfo.type.value} "
f"{mediainfo.title_year}") f"{mediainfo.title_year}")
# 补充剧集年份 # 补充剧集年份为季年份
if mediainfo.type == MediaType.TV: if mediainfo.type == MediaType.TV and mediainfo.episode_groups:
episode_years = self.tmdb.get_tv_episode_years(info.get("id")) episode_years = self.tmdb.get_tv_episode_years(mediainfo.episode_groups)
if episode_years: if episode_years:
mediainfo.season_years = episode_years mediainfo.season_years = episode_years
return mediainfo return mediainfo
+13 -13
View File
@@ -768,11 +768,11 @@ class TmdbApi:
def __get_movie_detail(self, def __get_movie_detail(self,
tmdbid: int, tmdbid: int,
append_to_response: Optional[str] = "images," append_to_response: Optional[str] = "images,"
"credits," "credits,"
"alternative_titles," "alternative_titles,"
"translations," "translations,"
"release_dates," "release_dates,"
"external_ids") -> Optional[dict]: "external_ids") -> Optional[dict]:
""" """
获取电影的详情 获取电影的详情
:param tmdbid: TMDB ID :param tmdbid: TMDB ID
@@ -881,11 +881,12 @@ class TmdbApi:
def __get_tv_detail(self, def __get_tv_detail(self,
tmdbid: int, tmdbid: int,
append_to_response: Optional[str] = "images," append_to_response: Optional[str] = "images,"
"credits," "credits,"
"alternative_titles," "alternative_titles,"
"translations," "translations,"
"content_ratings," "content_ratings,"
"external_ids") -> Optional[dict]: "external_ids,"
"episode_groups") -> Optional[dict]:
""" """
获取电视剧的详情 获取电视剧的详情
:param tmdbid: TMDB ID :param tmdbid: TMDB ID
@@ -1376,20 +1377,19 @@ class TmdbApi:
""" """
self.tmdb.cache_clear() self.tmdb.cache_clear()
def get_tv_episode_years(self, tv_id: int) -> dict: def get_tv_episode_years(self, episode_groups: List[dict]) -> dict:
""" """
查询剧集组年份 查询剧集组年份
""" """
try: try:
episode_groups = self.tv.episode_groups(tv_id)
if not episode_groups: if not episode_groups:
return {} return {}
episode_years = {} episode_years = {}
for episode_group in episode_groups: for episode_group in episode_groups:
logger.debug(f"正在获取剧集组年份:{episode_group.get('id')}...")
if episode_group.get('type') != 6: if episode_group.get('type') != 6:
# 只处理剧集部分 # 只处理剧集部分
continue continue
logger.debug(f"正在获取剧集组年份:{episode_group.get('id')}...")
group_episodes = self.tv.group_episodes(episode_group.get('id')) group_episodes = self.tv.group_episodes(episode_group.get('id'))
if not group_episodes: if not group_episodes:
continue continue
+2
View File
@@ -170,6 +170,8 @@ class MediaInfo(BaseModel):
runtime: Optional[int] = None runtime: Optional[int] = None
# 下一集 # 下一集
next_episode_to_air: Optional[dict] = Field(default_factory=dict) next_episode_to_air: Optional[dict] = Field(default_factory=dict)
# 剧集组
episode_groups: Optional[list] = Field(default_factory=list)
class TorrentInfo(BaseModel): class TorrentInfo(BaseModel):