diff --git a/app/chain/douban.py b/app/chain/douban.py index 8cce9fd4..17071245 100644 --- a/app/chain/douban.py +++ b/app/chain/douban.py @@ -29,18 +29,33 @@ class DoubanChain(ChainBase): """ 根据豆瓣信息识别媒体信息 """ - # 使用原标题匹配 - meta = MetaInfo(title=doubaninfo.get("original_title") or doubaninfo.get("title")) + # 优先使用原标题匹配 + season_meta = None + if doubaninfo.get("original_title"): + meta = MetaInfo(title=doubaninfo.get("original_title")) + season_meta = MetaInfo(title=doubaninfo.get("title")) + # 合并季 + meta.begin_season = season_meta.begin_season + else: + meta = MetaInfo(title=doubaninfo.get("title")) + # 年份 + if doubaninfo.get("year"): + meta.year = doubaninfo.get("year") # 处理类型 if isinstance(doubaninfo.get('media_type'), MediaType): meta.type = doubaninfo.get('media_type') else: meta.type = MediaType.MOVIE if doubaninfo.get("type") == "movie" else MediaType.TV - # 识别媒体信息 - mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type) + # 使用原标题识别媒体信息 + mediainfo = self.recognize_media(meta=meta, mtype=meta.type) if not mediainfo: logger.warn(f'{meta.name} 未识别到TMDB媒体信息') - return Context(meta_info=meta, media_info=MediaInfo(douban_info=doubaninfo)) + if season_meta and season_meta.name != meta.name: + # 使用主标题识别媒体信息 + mediainfo = self.recognize_media(meta=season_meta, mtype=season_meta.type) + if not mediainfo: + logger.warn(f'{season_meta.name} 未识别到TMDB媒体信息') + return Context(meta_info=season_meta, media_info=MediaInfo(douban_info=doubaninfo)) logger.info(f'识别到媒体信息:{mediainfo.type.value} {mediainfo.title_year} {meta.season}') mediainfo.set_douban_info(doubaninfo) return Context(meta_info=meta, media_info=mediainfo) diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 1ce0a82b..6bbeb896 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -63,7 +63,10 @@ class TheMovieDbModule(_ModuleBase): # 直接查询详情 info = self.tmdb.get_info(mtype=mtype, tmdbid=tmdbid) elif meta: - logger.info(f"正在识别 {meta.name} ...") + if meta.begin_season: + logger.info(f"正在识别 {meta.name} 第{meta.begin_season}季 ...") + else: + logger.info(f"正在识别 {meta.name} ...") if meta.type == MediaType.UNKNOWN and not meta.year: info = self.tmdb.match_multi(meta.name) else: