fix douban api

This commit is contained in:
jxxghp
2023-06-30 06:48:13 +08:00
parent 0c2de23735
commit f52fe549d5
3 changed files with 15 additions and 13 deletions

View File

@ -56,33 +56,35 @@ async def douban_info(doubanid: str, _: schemas.TokenPayload = Depends(verify_to
@router.get("/movies", summary="豆瓣电影", response_model=List[schemas.MediaInfo]) @router.get("/movies", summary="豆瓣电影", response_model=List[schemas.MediaInfo])
async def douban_movies(sort: str = "R", async def douban_movies(sort: str = "R",
tags: str = "", tags: str = "",
start: int = 0, page: int = 1,
count: int = 30, count: int = 30,
_: schemas.TokenPayload = Depends(verify_token)) -> Any: _: schemas.TokenPayload = Depends(verify_token)) -> Any:
""" """
浏览豆瓣电影信息 浏览豆瓣电影信息
""" """
movies = DoubanChain().douban_discover(mtype=MediaType.MOVIE, movies = DoubanChain().douban_discover(mtype=MediaType.MOVIE,
sort=sort, tags=tags, start=start, count=count) sort=sort, tags=tags, page=page, count=count)
if not movies: if not movies:
return [] return []
return [MediaInfo(douban_info=movie).to_dict() for movie in movies] medias = [MediaInfo(douban_info=movie) for movie in movies]
return [media.to_dict() for media in medias if media.poster_path]
@router.get("/tvs", summary="豆瓣剧集", response_model=List[schemas.MediaInfo]) @router.get("/tvs", summary="豆瓣剧集", response_model=List[schemas.MediaInfo])
async def douban_tvs(sort: str = "R", async def douban_tvs(sort: str = "R",
tags: str = "", tags: str = "",
start: int = 0, page: int = 1,
count: int = 30, count: int = 30,
_: schemas.TokenPayload = Depends(verify_token)) -> Any: _: schemas.TokenPayload = Depends(verify_token)) -> Any:
""" """
浏览豆瓣剧集信息 浏览豆瓣剧集信息
""" """
tvs = DoubanChain().douban_discover(mtype=MediaType.TV, tvs = DoubanChain().douban_discover(mtype=MediaType.TV,
sort=sort, tags=tags, start=start, count=count) sort=sort, tags=tags, page=page, count=count)
if not tvs: if not tvs:
return [] return []
return [MediaInfo(douban_info=tv).to_dict() for tv in tvs] medias = [MediaInfo(douban_info=tv).to_dict() for tv in tvs]
return [media.to_dict() for media in medias if media.poster_path]
@router.get("/movie_top250", summary="豆瓣电影TOP250", response_model=List[schemas.MediaInfo]) @router.get("/movie_top250", summary="豆瓣电影TOP250", response_model=List[schemas.MediaInfo])

View File

@ -78,18 +78,18 @@ class DoubanChain(ChainBase):
return self.run_module("tv_weekly_global", page=page, count=count) return self.run_module("tv_weekly_global", page=page, count=count)
def douban_discover(self, mtype: MediaType, sort: str, tags: str, def douban_discover(self, mtype: MediaType, sort: str, tags: str,
start: int = 0, count: int = 30) -> Optional[List[dict]]: page: int = 0, count: int = 30) -> Optional[List[dict]]:
""" """
发现豆瓣电影、剧集 发现豆瓣电影、剧集
:param mtype: 媒体类型 :param mtype: 媒体类型
:param sort: 排序方式 :param sort: 排序方式
:param tags: 标签 :param tags: 标签
:param start: 起始位置 :param page: 页码
:param count: 数量 :param count: 数量
:return: 媒体信息列表 :return: 媒体信息列表
""" """
return self.run_module("douban_discover", mtype=mtype, sort=sort, tags=tags, return self.run_module("douban_discover", mtype=mtype, sort=sort, tags=tags,
start=start, count=count) page=page, count=count)
def remote_sync(self, userid: Union[int, str]): def remote_sync(self, userid: Union[int, str]):
""" """

View File

@ -53,22 +53,22 @@ class DoubanModule(_ModuleBase):
return douban_info return douban_info
def douban_discover(self, mtype: MediaType, sort: str, tags: str, def douban_discover(self, mtype: MediaType, sort: str, tags: str,
start: int = 0, count: int = 30) -> Optional[List[dict]]: page: int = 1, count: int = 30) -> Optional[List[dict]]:
""" """
发现豆瓣电影、剧集 发现豆瓣电影、剧集
:param mtype: 媒体类型 :param mtype: 媒体类型
:param sort: 排序方式 :param sort: 排序方式
:param tags: 标签 :param tags: 标签
:param start: 起始位置 :param page: 页码
:param count: 数量 :param count: 数量
:return: 媒体信息列表 :return: 媒体信息列表
""" """
logger.info(f"开始发现豆瓣 {mtype.value} ...") logger.info(f"开始发现豆瓣 {mtype.value} ...")
if mtype == MediaType.MOVIE: if mtype == MediaType.MOVIE:
infos = self.doubanapi.movie_recommend(start=start, count=count, infos = self.doubanapi.movie_recommend(start=(page - 1) * count, count=count,
sort=sort, tags=tags) sort=sort, tags=tags)
else: else:
infos = self.doubanapi.tv_recommend(start=start, count=count, infos = self.doubanapi.tv_recommend(start=(page - 1) * count, count=count,
sort=sort, tags=tags) sort=sort, tags=tags)
if not infos: if not infos:
return [] return []