fix subscribe api

This commit is contained in:
jxxghp
2023-07-03 10:42:01 +08:00
parent 4a91a43c30
commit 8adab8d645
5 changed files with 73 additions and 41 deletions

View File

@ -1,5 +1,6 @@
import re
from typing import Dict, List, Optional, Union
from datetime import datetime
from typing import Dict, List, Optional, Union, Tuple
from app.chain import ChainBase
from app.chain.download import DownloadChain
@ -38,8 +39,9 @@ class SubscribeChain(ChainBase):
season: int = None,
userid: str = None,
username: str = None,
message: bool = True,
exist_ok: bool = False,
**kwargs) -> Optional[int]:
**kwargs) -> Tuple[Optional[int], str]:
"""
识别媒体信息并添加订阅
"""
@ -61,7 +63,7 @@ class SubscribeChain(ChainBase):
mediainfo: MediaInfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid)
if not mediainfo:
logger.warn(f'未识别到媒体信息,标题:{title}tmdbid{tmdbid}')
return 0
return None, "未识别到媒体信息"
# 更新媒体图片
self.obtain_images(mediainfo=mediainfo)
# 总集数
@ -76,14 +78,14 @@ class SubscribeChain(ChainBase):
tmdbid=mediainfo.tmdb_id)
if not mediainfo:
logger.error(f"媒体信息识别失败!")
return 0
return None, "媒体信息识别失败"
if not mediainfo.seasons:
logger.error(f"媒体信息中没有季集信息,标题:{title}tmdbid{tmdbid}")
return 0
return None, "媒体信息中没有季集信息"
total_episode = len(mediainfo.seasons.get(season) or [])
if not total_episode:
logger.error(f'未获取到总集数,标题:{title}tmdbid{tmdbid}')
return 0
return None, "未获取到总集数"
kwargs.update({
'total_episode': total_episode
})
@ -96,21 +98,21 @@ class SubscribeChain(ChainBase):
sid, err_msg = self.subscribehelper.add(mediainfo, doubanid=doubanid, season=season, **kwargs)
if not sid:
logger.error(f'{mediainfo.title_year} {err_msg}')
if not exist_ok:
if not exist_ok and message:
# 发回原用户
self.post_message(title=f"{mediainfo.title_year}{metainfo.season} "
f"添加订阅失败!",
text=f"{err_msg}",
image=mediainfo.get_message_image(),
userid=userid)
else:
elif message:
logger.info(f'{mediainfo.title_year}{metainfo.season} 添加订阅成功')
# 广而告之
self.post_message(title=f"{mediainfo.title_year}{metainfo.season} 已添加订阅",
text=f"评分:{mediainfo.vote_average},来自用户:{username or userid}",
image=mediainfo.get_message_image())
# 返回结果
return sid
return sid, ""
def remote_refresh(self, userid: Union[str, int] = None):
"""
@ -228,8 +230,10 @@ class SubscribeChain(ChainBase):
else:
# 未完成下载
logger.info(f'{mediainfo.title_year} 未下载未完整,继续订阅 ...')
# 更新订阅剩余集数
self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe, mediainfo=mediainfo)
# 更新订阅剩余集数和时间
update_date = True if downloads else False
self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe,
mediainfo=mediainfo, update_date=update_date)
def refresh(self):
"""
@ -352,15 +356,18 @@ class SubscribeChain(ChainBase):
self.post_message(title=f'{mediainfo.title_year}{meta.season} 已完成订阅',
image=mediainfo.get_message_image())
else:
update_date = True if downloads else False
# 未完成下载,计算剩余集数
self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe, mediainfo=mediainfo)
self.__upate_lack_episodes(lefts=lefts, subscribe=subscribe,
mediainfo=mediainfo, update_date=update_date)
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):
mediainfo: MediaInfo,
update_date: bool = False):
"""
更新订阅剩余集数
"""
@ -371,9 +378,16 @@ class SubscribeChain(ChainBase):
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)
})
if update_date:
# 同时更新最后时间
self.subscribehelper.update(subscribe.id, {
"lack_episode": len(left_episodes),
"last_update": datetime.now().strftime('%Y-%m-%d %H:%M:%S')
})
else:
self.subscribehelper.update(subscribe.id, {
"lack_episode": len(left_episodes)
})
def remote_list(self, userid: Union[str, int] = None):
"""