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,
contexts: List[Context],
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: 资源上下文列表

View File

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