From 70ea398f148b4b04839b8b853bb2bb26c33eca4a Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 11 Oct 2023 16:32:34 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E8=B1=86=E7=93=A3?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/douban.py | 25 ++++++++++++++++++++----- app/modules/themoviedb/__init__.py | 5 ++++- 2 files changed, 24 insertions(+), 6 deletions(-) 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: