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

View File

@@ -264,6 +264,8 @@ class MediaInfo:
next_episode_to_air: dict = field(default_factory=dict)
# 内容分级
content_rating: str = None
# 剧集组
episode_groups: List[dict] = field(default_factory=list)
def __post_init__(self):
# 设置媒体信息
@@ -454,6 +456,10 @@ class MediaInfo:
air_date = seainfo.get("air_date")
if air_date:
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'):
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.networks = []
self.next_episode_to_air = {}
self.episode_groups = []
@dataclass

View File

@@ -207,9 +207,9 @@ class TheMovieDbModule(_ModuleBase):
logger.info(f"{tmdbid} TMDB识别结果{mediainfo.type.value} "
f"{mediainfo.title_year}")
# 补充剧集年份
if mediainfo.type == MediaType.TV:
episode_years = self.tmdb.get_tv_episode_years(info.get("id"))
# 补充剧集年份为季年份
if mediainfo.type == MediaType.TV and mediainfo.episode_groups:
episode_years = self.tmdb.get_tv_episode_years(mediainfo.episode_groups)
if episode_years:
mediainfo.season_years = episode_years
return mediainfo

View File

@@ -768,11 +768,11 @@ class TmdbApi:
def __get_movie_detail(self,
tmdbid: int,
append_to_response: Optional[str] = "images,"
"credits,"
"alternative_titles,"
"translations,"
"release_dates,"
"external_ids") -> Optional[dict]:
"credits,"
"alternative_titles,"
"translations,"
"release_dates,"
"external_ids") -> Optional[dict]:
"""
获取电影的详情
:param tmdbid: TMDB ID
@@ -881,11 +881,12 @@ class TmdbApi:
def __get_tv_detail(self,
tmdbid: int,
append_to_response: Optional[str] = "images,"
"credits,"
"alternative_titles,"
"translations,"
"content_ratings,"
"external_ids") -> Optional[dict]:
"credits,"
"alternative_titles,"
"translations,"
"content_ratings,"
"external_ids,"
"episode_groups") -> Optional[dict]:
"""
获取电视剧的详情
:param tmdbid: TMDB ID
@@ -1376,20 +1377,19 @@ class TmdbApi:
"""
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:
episode_groups = self.tv.episode_groups(tv_id)
if not episode_groups:
return {}
episode_years = {}
for episode_group in episode_groups:
logger.debug(f"正在获取剧集组年份:{episode_group.get('id')}...")
if episode_group.get('type') != 6:
# 只处理剧集部分
continue
logger.debug(f"正在获取剧集组年份:{episode_group.get('id')}...")
group_episodes = self.tv.group_episodes(episode_group.get('id'))
if not group_episodes:
continue

View File

@@ -170,6 +170,8 @@ class MediaInfo(BaseModel):
runtime: Optional[int] = None
# 下一集
next_episode_to_air: Optional[dict] = Field(default_factory=dict)
# 剧集组
episode_groups: Optional[list] = Field(default_factory=list)
class TorrentInfo(BaseModel):