From 815b2f3a76ad037dc8fec67d71a090e48ab6c60d Mon Sep 17 00:00:00 2001 From: thsrite Date: Tue, 2 Jan 2024 14:34:47 +0800 Subject: [PATCH] fix bug --- README.md | 2 +- docs/ActorSubscribe.md | 1 + package.json | 2 +- plugins/actorsubscribe/__init__.py | 74 +++++++++++++++++++----------- 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 4d57e28..67736e8 100644 --- a/README.md +++ b/README.md @@ -23,5 +23,5 @@ MoviePilot三方插件市场:https://github.com/thsrite/MoviePilot-Plugins/ - [日程提醒 1.0](docs%2FScheduleReminder.md) - [订阅提醒 1.1](docs%2FSubscribeReminder.md) - [Emby观影报告 1.4](docs%2FEmbyReporter.md) -- [豆瓣明星热映订阅 1.1](docs%2FActorSubscribe.md) +- [豆瓣明星热映订阅 1.2](docs%2FActorSubscribe.md) diff --git a/docs/ActorSubscribe.md b/docs/ActorSubscribe.md index 6d1bd01..303dfb3 100644 --- a/docs/ActorSubscribe.md +++ b/docs/ActorSubscribe.md @@ -2,5 +2,6 @@ ### 更新记录 +- 1.2 修复订阅重复处理的bug - 1.1 支持自定义分辨率、质量、特效 - 1.0 自动订阅豆瓣明星最新电影 diff --git a/package.json b/package.json index c4d36b8..c58bf8e 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "ActorSubscribe": { "name": "豆瓣明星热映订阅", "description": "自动订阅豆瓣明星最新电影。", - "version": "1.1", + "version": "1.2", "icon": "Mdcng_A.png", "author": "thsrite", "level": 1 diff --git a/plugins/actorsubscribe/__init__.py b/plugins/actorsubscribe/__init__.py index b4b0817..316c384 100644 --- a/plugins/actorsubscribe/__init__.py +++ b/plugins/actorsubscribe/__init__.py @@ -3,9 +3,11 @@ from datetime import datetime, timedelta import pytz from app.chain.douban import DoubanChain +from app.chain.download import DownloadChain from app.chain.subscribe import SubscribeChain from app.core.config import settings from app.core.context import MediaInfo +from app.core.metainfo import MetaInfo from app.plugins import _PluginBase from typing import Any, List, Dict, Tuple, Optional from app.log import logger @@ -21,7 +23,7 @@ class ActorSubscribe(_PluginBase): # 插件图标 plugin_icon = "Mdcng_A.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -39,6 +41,7 @@ class ActorSubscribe(_PluginBase): _cron: str = "" _actors = None subscribechain = None + downloadchain = None _scheduler: Optional[BackgroundScheduler] = None _quality = None _resolution = None @@ -75,6 +78,7 @@ class ActorSubscribe(_PluginBase): } def init_plugin(self, config: dict = None): + self.downloadchain = DownloadChain() self.subscribechain = SubscribeChain() # 停止现有任务 self.stop_service() @@ -148,41 +152,55 @@ class ActorSubscribe(_PluginBase): for mediainfo in medias: if mediainfo.title_year in already_handle: logger.info(f"电影 {mediainfo.title_year} 已被处理,跳过") + continue already_handle.append(mediainfo.title_year) logger.info(f"开始处理电影 {mediainfo.title_year}") + + # 元数据 + meta = MetaInfo(mediainfo.title) + if not mediainfo.tmdb_id and meta.tmdbid: + mediainfo.tmdb_id = meta.tmdbid + + # 查询缺失的媒体信息 + exist_flag, _ = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo) + if exist_flag: + logger.info(f'{mediainfo.title_year} 媒体库中已存在') + continue + + # 判断用户是否已经添加订阅 + if self.subscribechain.exists(mediainfo=mediainfo, meta=meta): + logger.info(f'{mediainfo.title_year} 订阅已存在') + continue + if mediainfo.actors: for actor in mediainfo.actors: if actor in actors: # 开始订阅 logger.info(f"电影 {mediainfo.title_year} {mediainfo.tmdb_id} 命中订阅演员 {actor},开始订阅") - # 判断用户是否已经添加订阅 - if self.subscribechain.exists(mediainfo=mediainfo): - logger.info(f'{mediainfo.title_year} 订阅已存在') - continue - else: - # 添加订阅 - self.subscribechain.add(title=mediainfo.title, - year=mediainfo.year, - mtype=mediainfo.type, - tmdbid=mediainfo.tmdb_id, - doubanid=mediainfo.douban_id, - exist_ok=True, - quality=self._quality, - resolution=self._resolution, - effect=self._effect, - username=settings.SUPERUSER) - # 存储历史记录 - history.append({ - "title": mediainfo.title, - "type": mediainfo.type.value, - "year": mediainfo.year, - "poster": mediainfo.get_poster_image(), - "overview": mediainfo.overview, - "tmdbid": mediainfo.tmdb_id, - "doubanid": mediainfo.douban_id, - "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S") - }) + + # 添加订阅 + self.subscribechain.add(title=mediainfo.title, + year=mediainfo.year, + mtype=mediainfo.type, + tmdbid=mediainfo.tmdb_id, + doubanid=mediainfo.douban_id, + exist_ok=True, + quality=self._quality, + resolution=self._resolution, + effect=self._effect, + username=settings.SUPERUSER) + # 存储历史记录 + history.append({ + "title": mediainfo.title, + "type": mediainfo.type.value, + "year": mediainfo.year, + "poster": mediainfo.get_poster_image(), + "overview": mediainfo.overview, + "tmdbid": mediainfo.tmdb_id, + "doubanid": mediainfo.douban_id, + "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S") + }) # 保存历史记录 self.save_data('history', history)