diff --git a/README.md b/README.md index fe93cbb..a33a7eb 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ MoviePilot三方插件市场:https://github.com/thsrite/MoviePilot-Plugins/ 27. 日程提醒 v1.0 `自定义提醒事项、提醒时间。` 28. 订阅提醒 v1.1 `推送当天订阅更新内容。` 29. [Emby观影报告 v1.6](docs%2FEmbyReporter.md) `推送Emby观影报告,需Emby安装Playback Report 插件。` -30. 演员订阅 v2.1 `自动订阅指定演员热映电影、电视剧。` +30. 演员订阅 v2.1.1 `自动订阅指定演员热映电影、电视剧。` 31. [短剧刮削 v3.2](docs%2FShortPlayMonitor.md) `监控视频短剧创建,刮削。` 32. 云盘实时监控 v2.4.6 `监控云盘目录文件变化,自动转移链接。` 33. 源文件恢复 v1.2 `根据MoviePilot的转移记录中的硬链文件恢复源文件。` diff --git a/package.json b/package.json index 03dd6bc..96fbe29 100644 --- a/package.json +++ b/package.json @@ -222,11 +222,12 @@ "name": "演员订阅", "description": "自动订阅指定演员热映电影、电视剧。", "labels": "订阅", - "version": "2.1", + "version": "2.1.1", "icon": "Mdcng_A.png", "author": "thsrite", "level": 2, "history": { + "v2.1.1": "尝试修复未匹配到演员的bug", "v2.1": "逻辑优化", "v2.0": "修复订阅", "v1.8": "支持自定义订阅username,默认`演员订阅`", diff --git a/plugins/actorsubscribe/__init__.py b/plugins/actorsubscribe/__init__.py index 4b1f64c..d0967f9 100644 --- a/plugins/actorsubscribe/__init__.py +++ b/plugins/actorsubscribe/__init__.py @@ -1,22 +1,22 @@ import time from datetime import datetime, timedelta +from typing import Any, List, Dict, Tuple, Optional import pytz +from apscheduler.schedulers.background import BackgroundScheduler +from apscheduler.triggers.cron import CronTrigger from app import schemas from app.chain.douban import DoubanChain -from app.chain.tmdb import TmdbChain from app.chain.download import DownloadChain from app.chain.subscribe import SubscribeChain +from app.chain.tmdb import TmdbChain from app.core.config import settings from app.core.context import MediaInfo from app.core.metainfo import MetaInfo -from app.schemas import MediaType -from app.plugins import _PluginBase -from typing import Any, List, Dict, Tuple, Optional from app.log import logger -from apscheduler.schedulers.background import BackgroundScheduler -from apscheduler.triggers.cron import CronTrigger +from app.plugins import _PluginBase +from app.schemas import MediaType class ActorSubscribe(_PluginBase): @@ -27,7 +27,7 @@ class ActorSubscribe(_PluginBase): # 插件图标 plugin_icon = "Mdcng_A.png" # 插件版本 - plugin_version = "2.1" + plugin_version = "2.1.1" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -193,7 +193,7 @@ class ActorSubscribe(_PluginBase): logger.warn(f"未知的订阅源:{source}") # 检查订阅 - subscribe_actors = str(self._actors).split(",") + subscribe_actors = [actor.strip() for actor in self._actors.split(",")] for mediainfo in medias: if mediainfo.title_year in already_handle: logger.warn(f"{mediainfo.type.value} {mediainfo.title_year} 已被处理,跳过") @@ -232,54 +232,53 @@ class ActorSubscribe(_PluginBase): logger.info(f'获取到 {mediainfo.title} 演员:{mediainfo_actors}') - # 查询缺失的媒体信息 - exist_flag, _ = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo) - if exist_flag: - logger.warn(f'{mediainfo.title_year} 媒体库中已存在') - continue + is_subscribe = False + for actor in mediainfo_actors: + logger.debug(f'正在处理 {mediainfo.title_year} 演员 {actor}') + if actor and str(actor).strip() in subscribe_actors: + # 查询缺失的媒体信息 + exist_flag, _ = self.downloadchain.get_no_exists_info(meta=meta, mediainfo=mediainfo) + if exist_flag: + logger.warn(f'{mediainfo.title_year} 媒体库中已存在') + continue - # 判断用户是否已经添加订阅 - if self.subscribechain.exists(mediainfo=mediainfo): - logger.warn(f'{mediainfo.title_year} 订阅已存在') - continue + # 判断用户是否已经添加订阅 + if self.subscribechain.exists(mediainfo=mediainfo): + logger.warn(f'{mediainfo.title_year} 订阅已存在') + continue - if mediainfo_actors: - is_subscribe = False - for actor in mediainfo_actors: - # logger.info(f'正在处理 {mediainfo.title_year} 演员 {actor}') - if actor and actor in subscribe_actors: - # 开始订阅 - logger.info( - f"{mediainfo.type.value} {mediainfo.title_year} TMDBID {mediainfo.tmdb_id} DOUBANID {mediainfo.douban_id} 命中订阅演员 {actor}," - f"开始订阅。订阅规则:{self._quality} {self._resolution} {self._effect} {self._username}") - is_subscribe = True - # 添加订阅 - 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=self._username) - # 存储历史记录 - 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"), - "unique": f"actorsubscribe: {mediainfo.title} (DB:{mediainfo.tmdb_id})" - }) - - if not is_subscribe: + # 开始订阅 logger.info( - f"{mediainfo.type.value} {mediainfo.title_year} TMDBID {mediainfo.tmdb_id} DOUBANID {mediainfo.douban_id} 未命中订阅演员,跳过") + f"{mediainfo.type.value} {mediainfo.title_year} TMDBID {mediainfo.tmdb_id} DOUBANID {mediainfo.douban_id} 命中订阅演员 {actor}," + f"开始订阅。订阅规则:{self._quality} {self._resolution} {self._effect} {self._username}") + is_subscribe = True + # 添加订阅 + 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=self._username) + # 存储历史记录 + 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"), + "unique": f"actorsubscribe: {mediainfo.title} (DB:{mediainfo.tmdb_id})" + }) + + if not is_subscribe: + logger.info( + f"{mediainfo.type.value} {mediainfo.title_year} TMDBID {mediainfo.tmdb_id} DOUBANID {mediainfo.douban_id} 未命中订阅演员,跳过") # 保存历史记录 self.save_data('history', history)