fix(subscribe): prioritize update state when fininsh subscribe

This commit is contained in:
InfinityPacer
2024-12-11 16:18:03 +08:00
parent 2217583052
commit fa45dea1aa
+30 -30
View File
@@ -465,18 +465,18 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
no_lefts = not lefts or not lefts.get(mediakey) no_lefts = not lefts or not lefts.get(mediakey)
# 是否完成订阅 # 是否完成订阅
if not subscribe.best_version: if not subscribe.best_version:
# 非洗板 # 订阅存在待定策略,不管是否已完成,均需更新订阅信息
if ((no_lefts and meta.type == MediaType.TV) if downloads and meta.type == MediaType.TV:
or (downloads and meta.type == MediaType.MOVIE)
or force):
# 完成订阅
self.__finish_subscribe(subscribe=subscribe, meta=meta, mediainfo=mediainfo)
elif downloads and meta.type == MediaType.TV:
# 电视剧更新已下载集数 # 电视剧更新已下载集数
self.__update_subscribe_note(subscribe=subscribe, downloads=downloads) self.__update_subscribe_note(subscribe=subscribe, downloads=downloads)
# 更新订阅剩余集数和时间 # 更新订阅剩余集数和时间
self.__update_lack_episodes(lefts=lefts, subscribe=subscribe, self.__update_lack_episodes(lefts=lefts, subscribe=subscribe,
mediainfo=mediainfo, update_date=True) mediainfo=mediainfo, update_date=True)
# 判断是否需要完成订阅
if ((no_lefts and meta.type == MediaType.TV)
or (downloads and meta.type == MediaType.MOVIE)
or force):
self.__finish_subscribe(subscribe=subscribe, meta=meta, mediainfo=mediainfo)
else: else:
# 未下载到内容且不完整 # 未下载到内容且不完整
logger.info(f'{mediainfo.title_year} 未下载完整,继续订阅 ...') logger.info(f'{mediainfo.title_year} 未下载完整,继续订阅 ...')
@@ -928,29 +928,29 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
更新订阅剩余集数 更新订阅剩余集数
""" """
if not lefts: if not lefts:
return # 如果 lefts 为空,表示没有缺失集数,直接设置 lack_episode 为 0
mediakey = subscribe.tmdbid or subscribe.doubanid lack_episode = 0
left_seasons = lefts.get(mediakey) logger.info(f'{mediainfo.title_year} 没有缺失集数,直接更新为 0 ...')
if left_seasons: else:
for season_info in left_seasons.values(): mediakey = subscribe.tmdbid or subscribe.doubanid
season = season_info.season left_seasons = lefts.get(mediakey)
if season == subscribe.season: lack_episode = 0
left_episodes = season_info.episodes if left_seasons:
if not left_episodes: for season_info in left_seasons.values():
lack_episode = season_info.total_episode season = season_info.season
else: if season == subscribe.season:
lack_episode = len(left_episodes) left_episodes = season_info.episodes
logger.info(f'{mediainfo.title_year}{season} 更新缺失集数为{lack_episode} ...') if not left_episodes:
if update_date: lack_episode = season_info.total_episode
# 同时更新最后时间 else:
self.subscribeoper.update(subscribe.id, { lack_episode = len(left_episodes)
"lack_episode": lack_episode, logger.info(f"{mediainfo.title_year}{season} 更新缺失集数为{lack_episode} ...")
"last_update": datetime.now().strftime('%Y-%m-%d %H:%M:%S') break
}) # 更新数据库
else: update_data = {"lack_episode": lack_episode}
self.subscribeoper.update(subscribe.id, { if update_date:
"lack_episode": lack_episode update_data["last_update"] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}) self.subscribeoper.update(subscribe.id, update_data)
def __finish_subscribe(self, subscribe: Subscribe, mediainfo: MediaInfo, def __finish_subscribe(self, subscribe: Subscribe, mediainfo: MediaInfo,
meta: MetaBase, bestversion: bool = False): meta: MetaBase, bestversion: bool = False):