fix subscribe bug

This commit is contained in:
jxxghp 2023-06-27 16:08:21 +08:00
parent 03f59398f2
commit cbbec6af7d
2 changed files with 27 additions and 11 deletions

View File

@ -146,7 +146,7 @@ class DownloadChain(ChainBase):
def batch_download(self, def batch_download(self,
contexts: List[Context], contexts: List[Context],
no_exists: Dict[int, Dict[int, NotExistMediaInfo]] = None, no_exists: Dict[int, Dict[int, NotExistMediaInfo]] = None,
userid: str = None) -> Tuple[List[Context], dict]: userid: str = None) -> Tuple[List[Context], Dict[int, Dict[int, NotExistMediaInfo]]]:
""" """
根据缺失数据自动种子列表中组合择优下载 根据缺失数据自动种子列表中组合择优下载
:param contexts: 资源上下文列表 :param contexts: 资源上下文列表

View File

@ -7,6 +7,7 @@ from app.chain.search import SearchChain
from app.core.metainfo import MetaInfo from app.core.metainfo import MetaInfo
from app.core.context import TorrentInfo, Context, MediaInfo from app.core.context import TorrentInfo, Context, MediaInfo
from app.core.config import settings from app.core.config import settings
from app.db.models.subscribe import Subscribe
from app.db.subscribe_oper import SubscribeOper from app.db.subscribe_oper import SubscribeOper
from app.helper.sites import SitesHelper from app.helper.sites import SitesHelper
from app.log import logger from app.log import logger
@ -210,6 +211,8 @@ class SubscribeChain(ChainBase):
matched_contexts.append(context) matched_contexts.append(context)
if not matched_contexts: if not matched_contexts:
logger.warn(f'订阅 {subscribe.name} 没有符合过滤条件的资源') logger.warn(f'订阅 {subscribe.name} 没有符合过滤条件的资源')
# 未搜索到资源,但本地缺失可能有变化,更新订阅剩余集数
self.__upate_lack_episodes(lefts=no_exists, subscribe=subscribe, mediainfo=mediainfo)
continue continue
# 自动下载 # 自动下载
downloads, lefts = self.downloadchain.batch_download(contexts=matched_contexts, downloads, lefts = self.downloadchain.batch_download(contexts=matched_contexts,
@ -224,6 +227,8 @@ class SubscribeChain(ChainBase):
else: else:
# 未完成下载 # 未完成下载
logger.info(f'{mediainfo.title_year} 未下载未完整,继续订阅 ...') logger.info(f'{mediainfo.title_year} 未下载未完整,继续订阅 ...')
# 更新订阅剩余集数
self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe, mediainfo=mediainfo)
def refresh(self): def refresh(self):
""" """
@ -347,16 +352,27 @@ class SubscribeChain(ChainBase):
image=mediainfo.get_message_image()) image=mediainfo.get_message_image())
else: else:
# 未完成下载,计算剩余集数 # 未完成下载,计算剩余集数
left_seasons = lefts.get(mediainfo.tmdb_id) or [] self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe, mediainfo=mediainfo)
for season_info in left_seasons: else:
season = season_info.get('season') # 未搜索到资源,但本地缺失可能有变化,更新订阅剩余集数
if season == subscribe.season: self.__upate_lack_episodes(lefts=no_exists, subscribe=subscribe, mediainfo=mediainfo)
left_episodes = season_info.get('episodes')
logger.info(f'{mediainfo.title_year}{season} 未下载完整,' def __upate_lack_episodes(self, lefts: Dict[int, Dict[int, NotExistMediaInfo]],
f'更新缺失集数为{len(left_episodes)} ...') subscribe: Subscribe,
self.subscribehelper.update(subscribe.id, { mediainfo: MediaInfo):
"lack_episode": len(left_episodes) """
}) 更新订阅剩余集数
"""
left_seasons = lefts.get(mediainfo.tmdb_id) or {}
for season_info in left_seasons.values():
season = season_info.season
if season == subscribe.season:
left_episodes = season_info.episodes
logger.info(f'{mediainfo.title_year}{season} 未搜索到资源,'
f'更新缺失集数为{len(left_episodes)} ...')
self.subscribehelper.update(subscribe.id, {
"lack_episode": len(left_episodes)
})
def remote_list(self, userid: Union[str, int] = None): def remote_list(self, userid: Union[str, int] = None):
""" """