feat:中英文名依次匹配
This commit is contained in:
		| @@ -65,44 +65,51 @@ class DoubanModule(_ModuleBase): | ||||
|             return None | ||||
|  | ||||
|         if not meta: | ||||
|             # 未提供元数据时,直接查询豆瓣信息,不使用缓存 | ||||
|             cache_info = {} | ||||
|         elif not meta.name: | ||||
|             logger.error("识别媒体信息时未提供元数据名称") | ||||
|             return None | ||||
|         else: | ||||
|             # 读取缓存 | ||||
|             if mtype: | ||||
|                 meta.type = mtype | ||||
|             if doubanid: | ||||
|                 meta.doubanid = doubanid | ||||
|             # 读取缓存 | ||||
|             cache_info = self.cache.get(meta) | ||||
|  | ||||
|         # 识别豆瓣信息 | ||||
|         if not cache_info or not cache: | ||||
|             # 缓存没有或者强制不使用缓存 | ||||
|             if doubanid: | ||||
|                 # 直接查询详情 | ||||
|                 info = self.douban_info(doubanid=doubanid, mtype=mtype or meta.type) | ||||
|             elif meta: | ||||
|                 if meta.begin_season: | ||||
|                     logger.info(f"正在识别 {meta.name} 第{meta.begin_season}季 ...") | ||||
|                 else: | ||||
|                     logger.info(f"正在识别 {meta.name} ...") | ||||
|                 # 匹配豆瓣信息 | ||||
|                 match_info = self.match_doubaninfo(name=meta.name, | ||||
|                                                    mtype=mtype or meta.type, | ||||
|                                                    year=meta.year, | ||||
|                                                    season=meta.begin_season) | ||||
|                 if match_info: | ||||
|                     # 匹配到豆瓣信息 | ||||
|                     info = self.douban_info( | ||||
|                         doubanid=match_info.get("id"), | ||||
|                         mtype=mtype or meta.type | ||||
|                     ) | ||||
|                 else: | ||||
|                     logger.info(f"{meta.name if meta else doubanid} 未匹配到豆瓣媒体信息") | ||||
|                     return None | ||||
|                 info = {} | ||||
|                 # 使用中英文名分别识别 | ||||
|                 names = {meta.cn_name, meta.en_name} - {None} | ||||
|                 for name in names: | ||||
|                     if meta.begin_season: | ||||
|                         logger.info(f"正在识别 {name} 第{meta.begin_season}季 ...") | ||||
|                     else: | ||||
|                         logger.info(f"正在识别 {name} ...") | ||||
|                     # 匹配豆瓣信息 | ||||
|                     match_info = self.match_doubaninfo(name=name, | ||||
|                                                        mtype=mtype or meta.type, | ||||
|                                                        year=meta.year, | ||||
|                                                        season=meta.begin_season) | ||||
|                     if match_info: | ||||
|                         # 匹配到豆瓣信息 | ||||
|                         info = self.douban_info( | ||||
|                             doubanid=match_info.get("id"), | ||||
|                             mtype=mtype or meta.type | ||||
|                         ) | ||||
|                         if info: | ||||
|                             break | ||||
|             else: | ||||
|                 logger.error("识别媒体信息时未提供元数据或豆瓣ID") | ||||
|                 return None | ||||
|  | ||||
|             # 保存到缓存 | ||||
|             if meta and cache: | ||||
|                 self.cache.update(meta, info) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user