From 3c753686c671b0becb41b0a5639c564f96b80527 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 2 Sep 2023 07:33:27 +0800 Subject: [PATCH] =?UTF-8?q?fix=20#359=20=E5=AE=9A=E6=9C=9F=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=B7=E6=96=B0=E8=AE=A2=E9=98=85=E7=9A=84TMDB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/subscribe.py | 49 ++++++++++++++++++++++++++++++++++++++++++ app/scheduler.py | 3 +++ 2 files changed, 52 insertions(+) diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index 3e109b09..c28af710 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -564,6 +564,55 @@ class SubscribeChain(ChainBase): # 未搜索到资源,但本地缺失可能有变化,更新订阅剩余集数 self.__upate_lack_episodes(lefts=no_exists, subscribe=subscribe, mediainfo=mediainfo) + def check(self): + """ + 定时检查订阅,更新订阅信息 + """ + # 查询所有订阅 + subscribes = self.subscribeoper.list() + if not subscribes: + # 没有订阅不运行 + return + # 遍历订阅 + for subscribe in subscribes: + logger.info(f'开始检查订阅:{subscribe.name} ...') + # 生成元数据 + meta = MetaInfo(subscribe.name) + meta.year = subscribe.year + meta.begin_season = subscribe.season or None + meta.type = MediaType(subscribe.type) + # 识别媒体信息 + mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type, tmdbid=subscribe.tmdbid) + if not mediainfo: + logger.warn(f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid}') + continue + if not mediainfo.seasons: + continue + # 获取当前季的总集数 + episodes = mediainfo.seasons.get(subscribe.season) or [] + if len(episodes) > subscribe.total_episode or 0: + total_episode = len(episodes) + lack_episode = subscribe.lack_episode + (total_episode - subscribe.total_episode) + logger.info(f'订阅 {subscribe.name} 总集数变化,更新总集数为{total_episode},缺失集数为{lack_episode} ...') + else: + total_episode = subscribe.total_episode + lack_episode = subscribe.lack_episode + logger.info(f'订阅 {subscribe.name} 总集数未变化') + # 更新TMDB信息 + self.subscribeoper.update(subscribe.id, { + "name": mediainfo.title, + "year": mediainfo.year, + "vote": mediainfo.vote_average, + "poster": mediainfo.get_poster_image(), + "backdrop": mediainfo.get_backdrop_image(), + "description": mediainfo.overview, + "imdbid": mediainfo.imdb_id, + "tvdbid": mediainfo.tvdb_id, + "total_episode": total_episode, + "lack_episode": lack_episode + }) + logger.info(f'订阅 {subscribe.name} 更新完成') + def __update_subscribe_note(self, subscribe: Subscribe, downloads: List[Context]): """ 更新已下载集数到note字段 diff --git a/app/scheduler.py b/app/scheduler.py index 06d1f078..c7e7ea2d 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -63,6 +63,9 @@ class Scheduler(metaclass=Singleton): self._scheduler.add_job(SubscribeChain(self._db).search, "interval", minutes=5, kwargs={'state': 'N'}) + # 检查更新订阅TMDB数据(每隔24小时) + self._scheduler.add_job(SubscribeChain(self._db).check, "interval", hours=24) + # 订阅状态每隔24小时搜索一次 if settings.SUBSCRIBE_SEARCH: self._scheduler.add_job(SubscribeChain(self._db).search, "interval",