From 441ad0c90dc6a85bbbd65c3653d71682d3a3d5c6 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 20 Mar 2024 15:27:06 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=B1=86=E7=93=A3=E6=A6=9C=E5=8D=95=20&?= =?UTF-8?q?=20=E8=B1=86=E7=93=A3=E6=83=B3=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- plugins/doubanrank/__init__.py | 24 ++++++++++++++++++------ plugins/doubansync/__init__.py | 25 +++++++++++++++++++------ 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index d0aa368..5fd4b30 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "DoubanSync": { "name": "豆瓣想看", "description": "同步豆瓣想看数据,自动添加订阅。", - "version": "1.3", + "version": "1.4", "icon": "douban.png", "author": "jxxghp", "level": 2 @@ -58,7 +58,7 @@ "DoubanRank": { "name": "豆瓣榜单订阅", "description": "监控豆瓣热门榜单,自动添加订阅。", - "version": "1.6", + "version": "1.7", "icon": "movie.jpg", "author": "jxxghp", "level": 2 diff --git a/plugins/doubanrank/__init__.py b/plugins/doubanrank/__init__.py index 9a4cae8..c7d19fc 100644 --- a/plugins/doubanrank/__init__.py +++ b/plugins/doubanrank/__init__.py @@ -9,6 +9,7 @@ from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger from app.chain.download import DownloadChain +from app.chain.media import MediaChain from app.chain.subscribe import SubscribeChain from app.core.config import settings from app.core.context import MediaInfo @@ -27,7 +28,7 @@ class DoubanRank(_PluginBase): # 插件图标 plugin_icon = "movie.jpg" # 插件版本 - plugin_version = "1.6" + plugin_version = "1.7" # 插件作者 plugin_author = "jxxghp" # 作者主页 @@ -44,6 +45,7 @@ class DoubanRank(_PluginBase): # 私有属性 downloadchain: DownloadChain = None subscribechain: SubscribeChain = None + mediachain: MediaChain = None _scheduler = None _douban_address = { 'movie-ustop': 'https://rsshub.app/douban/movie/ustop', @@ -68,6 +70,7 @@ class DoubanRank(_PluginBase): def init_plugin(self, config: dict = None): self.downloadchain = DownloadChain() self.subscribechain = SubscribeChain() + self.mediachain = MediaChain() if config: self._enabled = config.get("enabled") @@ -514,11 +517,20 @@ class DoubanRank(_PluginBase): # 识别媒体信息 if douban_id: # 识别豆瓣信息 - mediainfo = self.chain.recognize_media(meta=meta, doubanid=douban_id) - if not mediainfo: - logger.warn(f'未识别到媒体信息,标题:{title},豆瓣ID:{douban_id}') - continue - + if settings.RECOGNIZE_SOURCE == "themoviedb": + tmdbinfo = self.mediachain.get_tmdbinfo_by_doubanid(doubanid=douban_id, mtype=meta.type) + if not tmdbinfo: + logger.warn(f'未能通过豆瓣ID {douban_id} 获取到TMDB信息,标题:{title},豆瓣ID:{douban_id}') + continue + mediainfo = self.chain.recognize_media(meta=meta, tmdbid=tmdbinfo.get("id")) + if not mediainfo: + logger.warn(f'TMDBID {tmdbinfo.get("id")} 未识别到媒体信息') + continue + else: + mediainfo = self.chain.recognize_media(meta=meta, doubanid=douban_id) + if not mediainfo: + logger.warn(f'豆瓣ID {douban_id} 未识别到媒体信息') + continue else: # 匹配媒体信息 mediainfo: MediaInfo = self.chain.recognize_media(meta=meta) diff --git a/plugins/doubansync/__init__.py b/plugins/doubansync/__init__.py index 72cde40..05b92df 100644 --- a/plugins/doubansync/__init__.py +++ b/plugins/doubansync/__init__.py @@ -6,6 +6,8 @@ from typing import Optional, Any, List, Dict, Tuple import pytz from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger + +from app.chain.media import MediaChain from app.schemas.types import MediaType from app.chain.download import DownloadChain @@ -31,7 +33,7 @@ class DoubanSync(_PluginBase): # 插件图标 plugin_icon = "douban.png" # 插件版本 - plugin_version = "1.3" + plugin_version = "1.4" # 插件作者 plugin_author = "jxxghp" # 作者主页 @@ -51,6 +53,7 @@ class DoubanSync(_PluginBase): downloadchain = None searchchain = None subscribechain = None + mediachain = None # 配置属性 _enabled: bool = False @@ -67,6 +70,7 @@ class DoubanSync(_PluginBase): self.downloadchain = DownloadChain() self.searchchain = SearchChain() self.subscribechain = SubscribeChain() + self.mediachain = MediaChain() # 停止现有任务 self.stop_service() @@ -497,12 +501,21 @@ class DoubanSync(_PluginBase): # 识别媒体信息 meta = MetaInfo(title=title) douban_info = self.chain.douban_info(doubanid=douban_id) - meta.year = douban_info.get("year") meta.type = MediaType.MOVIE if douban_info.get("type") == "movie" else MediaType.TV - mediainfo = self.chain.recognize_media(meta=meta, doubanid=douban_id) - if not mediainfo: - logger.warn(f'未识别到媒体信息,标题:{title},豆瓣ID:{douban_id}') - continue + if settings.RECOGNIZE_SOURCE == "themoviedb": + tmdbinfo = self.mediachain.get_tmdbinfo_by_doubanid(doubanid=douban_id, mtype=meta.type) + if not tmdbinfo: + logger.warn(f'未能通过豆瓣ID {douban_id} 获取到TMDB信息,标题:{title},豆瓣ID:{douban_id}') + continue + mediainfo = self.chain.recognize_media(meta=meta, tmdbid=tmdbinfo.get("id")) + if not mediainfo: + logger.warn(f'TMDBID {tmdbinfo.get("id")} 未识别到媒体信息') + continue + else: + mediainfo = self.chain.recognize_media(meta=meta, doubanid=douban_id) + if not mediainfo: + logger.warn(f'豆瓣ID {douban_id} 未识别到媒体信息') + continue # 查询缺失的媒体信息 exist_flag, no_exists = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo) if exist_flag: