From 30c9c66087503b65979de2126b8f1dddcf00c196 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 12 Oct 2023 19:59:47 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=B1=86=E7=93=A3=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E8=AE=A2=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/subscribe.py | 41 +++++++++++++++++++----------- app/core/meta/words.py | 3 +-- app/modules/themoviedb/__init__.py | 2 ++ 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index 66c743fc..1811a8f0 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -6,6 +6,7 @@ from typing import Dict, List, Optional, Union, Tuple from sqlalchemy.orm import Session from app.chain import ChainBase +from app.chain.douban import DoubanChain from app.chain.download import DownloadChain from app.chain.search import SearchChain from app.chain.torrents import TorrentsChain @@ -50,18 +51,28 @@ class SubscribeChain(ChainBase): 识别媒体信息并添加订阅 """ logger.info(f'开始添加订阅,标题:{title} ...') - # 识别元数据 - metainfo = MetaInfo(title) - if year: - metainfo.year = year - if mtype: - metainfo.type = mtype - if season: - metainfo.type = MediaType.TV - metainfo.begin_season = season - # 识别媒体信息 - mediainfo: MediaInfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid) - if not mediainfo: + metainfo = None + mediainfo = None + if not tmdbid and doubanid: + # 将豆瓣信息转换为TMDB信息 + context = DoubanChain().recognize_by_doubanid(doubanid) + if context: + metainfo = context.meta_info + mediainfo = context.media_info + else: + # 识别元数据 + metainfo = MetaInfo(title) + if year: + metainfo.year = year + if mtype: + metainfo.type = mtype + if season: + metainfo.type = MediaType.TV + metainfo.begin_season = season + # 识别媒体信息 + mediainfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid) + # 识别失败 + if not mediainfo or not metainfo or not mediainfo.tmdb_id: logger.warn(f'未识别到媒体信息,标题:{title},tmdbid:{tmdbid}') return None, "未识别到媒体信息" # 更新媒体图片 @@ -74,8 +85,8 @@ class SubscribeChain(ChainBase): if not kwargs.get('total_episode'): if not mediainfo.seasons: # 补充媒体信息 - mediainfo: MediaInfo = self.recognize_media(mtype=mediainfo.type, - tmdbid=mediainfo.tmdb_id) + mediainfo = self.recognize_media(mtype=mediainfo.type, + tmdbid=mediainfo.tmdb_id) if not mediainfo: logger.error(f"媒体信息识别失败!") return None, "媒体信息识别失败" @@ -85,7 +96,7 @@ class SubscribeChain(ChainBase): total_episode = len(mediainfo.seasons.get(season) or []) if not total_episode: logger.error(f'未获取到总集数,标题:{title},tmdbid:{tmdbid}') - return None, "未获取到总集数" + return None, f"未获取到第 {season} 季的总集数" kwargs.update({ 'total_episode': total_episode }) diff --git a/app/core/meta/words.py b/app/core/meta/words.py index 3bc7ece4..c58266a0 100644 --- a/app/core/meta/words.py +++ b/app/core/meta/words.py @@ -61,8 +61,7 @@ class WordsMatcher(metaclass=Singleton): if state: appley_words.append(word) - else: - logger.debug(f"自定义识别词替换失败:{message}") + except Exception as err: print(str(err)) diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 6bbeb896..87f7a7f4 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -283,6 +283,8 @@ class TheMovieDbModule(_ModuleBase): :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 """ + if not mediainfo.tmdb_id: + return mediainfo if mediainfo.logo_path \ and mediainfo.poster_path \ and mediainfo.backdrop_path: