mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
refactor:减少一次接口查询
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user