mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
fix apis
This commit is contained in:
@@ -21,6 +21,23 @@ def calendar(page: int = 1,
|
|||||||
return RecommendChain().bangumi_calendar(page=page, count=count)
|
return RecommendChain().bangumi_calendar(page=page, count=count)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/subjects", summary="搜索Bangumi", response_model=List[schemas.MediaInfo])
|
||||||
|
def bangumi_subjects(type: int,
|
||||||
|
cat: int,
|
||||||
|
sort: str,
|
||||||
|
year: int,
|
||||||
|
page: int = 1,
|
||||||
|
count: int = 20,
|
||||||
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
|
"""
|
||||||
|
搜索Bangumi
|
||||||
|
"""
|
||||||
|
medias = BangumiChain().bangumi_discover(type=type, cat=cat, sort=sort, year=year)
|
||||||
|
if medias:
|
||||||
|
return [media.to_dict() for media in medias[(page - 1) * count: page * count]]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
@router.get("/credits/{bangumiid}", summary="查询Bangumi演职员表", response_model=List[schemas.MediaPerson])
|
@router.get("/credits/{bangumiid}", summary="查询Bangumi演职员表", response_model=List[schemas.MediaPerson])
|
||||||
def bangumi_credits(bangumiid: int,
|
def bangumi_credits(bangumiid: int,
|
||||||
page: int = 1,
|
page: int = 1,
|
||||||
|
|||||||
@@ -118,6 +118,8 @@ def tmdb_person_credits(person_id: int,
|
|||||||
def tmdb_movies(sort_by: str = "popularity.desc",
|
def tmdb_movies(sort_by: str = "popularity.desc",
|
||||||
with_genres: str = "",
|
with_genres: str = "",
|
||||||
with_original_language: str = "",
|
with_original_language: str = "",
|
||||||
|
vote_average: float = 0,
|
||||||
|
release_date: str = "",
|
||||||
page: int = 1,
|
page: int = 1,
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
"""
|
"""
|
||||||
@@ -126,6 +128,8 @@ def tmdb_movies(sort_by: str = "popularity.desc",
|
|||||||
return RecommendChain().tmdb_movies(sort_by=sort_by,
|
return RecommendChain().tmdb_movies(sort_by=sort_by,
|
||||||
with_genres=with_genres,
|
with_genres=with_genres,
|
||||||
with_original_language=with_original_language,
|
with_original_language=with_original_language,
|
||||||
|
vote_average=vote_average,
|
||||||
|
release_date=release_date,
|
||||||
page=page)
|
page=page)
|
||||||
|
|
||||||
|
|
||||||
@@ -133,6 +137,8 @@ def tmdb_movies(sort_by: str = "popularity.desc",
|
|||||||
def tmdb_tvs(sort_by: str = "popularity.desc",
|
def tmdb_tvs(sort_by: str = "popularity.desc",
|
||||||
with_genres: str = "",
|
with_genres: str = "",
|
||||||
with_original_language: str = "",
|
with_original_language: str = "",
|
||||||
|
vote_average: float = 0,
|
||||||
|
release_date: str = "",
|
||||||
page: int = 1,
|
page: int = 1,
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
"""
|
"""
|
||||||
@@ -141,6 +147,8 @@ def tmdb_tvs(sort_by: str = "popularity.desc",
|
|||||||
return RecommendChain().tmdb_tvs(sort_by=sort_by,
|
return RecommendChain().tmdb_tvs(sort_by=sort_by,
|
||||||
with_genres=with_genres,
|
with_genres=with_genres,
|
||||||
with_original_language=with_original_language,
|
with_original_language=with_original_language,
|
||||||
|
vote_average=vote_average,
|
||||||
|
release_date=release_date,
|
||||||
page=page)
|
page=page)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ class BangumiChain(ChainBase, metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
return self.run_module("bangumi_calendar")
|
return self.run_module("bangumi_calendar")
|
||||||
|
|
||||||
|
def bangumi_discover(self, **kwargs) -> Optional[List[MediaInfo]]:
|
||||||
|
"""
|
||||||
|
发现Bangumi番剧
|
||||||
|
"""
|
||||||
|
return self.run_module("bangumi_discover", **kwargs)
|
||||||
|
|
||||||
def bangumi_info(self, bangumiid: int) -> Optional[dict]:
|
def bangumi_info(self, bangumiid: int) -> Optional[dict]:
|
||||||
"""
|
"""
|
||||||
获取Bangumi信息
|
获取Bangumi信息
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
|
|||||||
@log_execution_time(logger=logger)
|
@log_execution_time(logger=logger)
|
||||||
@cached(ttl=recommend_ttl, region=recommend_cache_region)
|
@cached(ttl=recommend_ttl, region=recommend_cache_region)
|
||||||
def tmdb_movies(self, sort_by: str = "popularity.desc", with_genres: str = "",
|
def tmdb_movies(self, sort_by: str = "popularity.desc", with_genres: str = "",
|
||||||
with_original_language: str = "", page: int = 1) -> Any:
|
with_original_language: str = "", vote_average: float = 0, page: int = 1) -> Any:
|
||||||
"""
|
"""
|
||||||
TMDB热门电影
|
TMDB热门电影
|
||||||
"""
|
"""
|
||||||
@@ -166,6 +166,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
|
|||||||
sort_by=sort_by,
|
sort_by=sort_by,
|
||||||
with_genres=with_genres,
|
with_genres=with_genres,
|
||||||
with_original_language=with_original_language,
|
with_original_language=with_original_language,
|
||||||
|
vote_average=vote_average,
|
||||||
page=page)
|
page=page)
|
||||||
return [movie.to_dict() for movie in movies] if movies else []
|
return [movie.to_dict() for movie in movies] if movies else []
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -15,18 +15,22 @@ class TmdbChain(ChainBase, metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def tmdb_discover(self, mtype: MediaType, sort_by: str, with_genres: str,
|
def tmdb_discover(self, mtype: MediaType, sort_by: str, with_genres: str,
|
||||||
with_original_language: str, page: int = 1) -> Optional[List[MediaInfo]]:
|
with_original_language: str, vote_average: float,
|
||||||
|
release_date: str, page: int = 1) -> Optional[List[MediaInfo]]:
|
||||||
"""
|
"""
|
||||||
:param mtype: 媒体类型
|
:param mtype: 媒体类型
|
||||||
:param sort_by: 排序方式
|
:param sort_by: 排序方式
|
||||||
:param with_genres: 类型
|
:param with_genres: 类型
|
||||||
:param with_original_language: 语言
|
:param with_original_language: 语言
|
||||||
|
:param vote_average: 评分
|
||||||
|
:param release_date: 上映日期
|
||||||
:param page: 页码
|
:param page: 页码
|
||||||
:return: 媒体信息列表
|
:return: 媒体信息列表
|
||||||
"""
|
"""
|
||||||
return self.run_module("tmdb_discover", mtype=mtype,
|
return self.run_module("tmdb_discover", mtype=mtype,
|
||||||
sort_by=sort_by, with_genres=with_genres,
|
sort_by=sort_by, with_genres=with_genres,
|
||||||
with_original_language=with_original_language,
|
with_original_language=with_original_language,
|
||||||
|
vote_average=vote_average, release_date=release_date,
|
||||||
page=page)
|
page=page)
|
||||||
|
|
||||||
def tmdb_trending(self, page: int = 1) -> Optional[List[MediaInfo]]:
|
def tmdb_trending(self, page: int = 1) -> Optional[List[MediaInfo]]:
|
||||||
|
|||||||
@@ -165,3 +165,12 @@ class BangumiModule(_ModuleBase):
|
|||||||
if credits_info:
|
if credits_info:
|
||||||
return [MediaInfo(bangumi_info=credit) for credit in credits_info]
|
return [MediaInfo(bangumi_info=credit) for credit in credits_info]
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def bangumi_discover(self, **kwargs) -> Optional[List[MediaInfo]]:
|
||||||
|
"""
|
||||||
|
发现Bangumi番剧
|
||||||
|
"""
|
||||||
|
infos = self.bangumiapi.discover(**kwargs)
|
||||||
|
if infos:
|
||||||
|
return [MediaInfo(bangumi_info=info) for info in infos]
|
||||||
|
return []
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class BangumiApi(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_urls = {
|
_urls = {
|
||||||
|
"discover": "v0/subjects",
|
||||||
"search": "search/subjects/%s?type=2",
|
"search": "search/subjects/%s?type=2",
|
||||||
"calendar": "calendar",
|
"calendar": "calendar",
|
||||||
"detail": "v0/subjects/%s",
|
"detail": "v0/subjects/%s",
|
||||||
@@ -194,3 +195,9 @@ class BangumiApi(object):
|
|||||||
for item in result:
|
for item in result:
|
||||||
ret_list.append(item)
|
ret_list.append(item)
|
||||||
return ret_list
|
return ret_list
|
||||||
|
|
||||||
|
def discover(self, **kwargs):
|
||||||
|
"""
|
||||||
|
发现
|
||||||
|
"""
|
||||||
|
return self.__invoke("discover", **kwargs)
|
||||||
|
|||||||
@@ -357,25 +357,35 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
return self.scraper.get_metadata_img(mediainfo=mediainfo, season=season, episode=episode)
|
return self.scraper.get_metadata_img(mediainfo=mediainfo, season=season, episode=episode)
|
||||||
|
|
||||||
def tmdb_discover(self, mtype: MediaType, sort_by: str, with_genres: str, with_original_language: str,
|
def tmdb_discover(self, mtype: MediaType, sort_by: str, with_genres: str, with_original_language: str,
|
||||||
page: int = 1) -> Optional[List[MediaInfo]]:
|
vote_average: float, release_date: str, page: int = 1) -> Optional[List[MediaInfo]]:
|
||||||
"""
|
"""
|
||||||
:param mtype: 媒体类型
|
:param mtype: 媒体类型
|
||||||
:param sort_by: 排序方式
|
:param sort_by: 排序方式
|
||||||
:param with_genres: 类型
|
:param with_genres: 类型
|
||||||
:param with_original_language: 语言
|
:param with_original_language: 语言
|
||||||
|
:param vote_average: 评分
|
||||||
|
:param release_date: 发布日期
|
||||||
:param page: 页码
|
:param page: 页码
|
||||||
:return: 媒体信息列表
|
:return: 媒体信息列表
|
||||||
"""
|
"""
|
||||||
if mtype == MediaType.MOVIE:
|
if mtype == MediaType.MOVIE:
|
||||||
infos = self.tmdb.discover_movies(sort_by=sort_by,
|
infos = self.tmdb.discover_movies({
|
||||||
with_genres=with_genres,
|
"sort_by": sort_by,
|
||||||
with_original_language=with_original_language,
|
"with_genres": with_genres,
|
||||||
page=page)
|
"with_original_language": with_original_language,
|
||||||
|
"vote_average.gte": vote_average,
|
||||||
|
"release_date.gte": release_date,
|
||||||
|
"page": page
|
||||||
|
})
|
||||||
elif mtype == MediaType.TV:
|
elif mtype == MediaType.TV:
|
||||||
infos = self.tmdb.discover_tvs(sort_by=sort_by,
|
infos = self.tmdb.discover_tvs({
|
||||||
with_genres=with_genres,
|
"sort_by": sort_by,
|
||||||
with_original_language=with_original_language,
|
"with_genres": with_genres,
|
||||||
page=page)
|
"with_original_language": with_original_language,
|
||||||
|
"vote_average.gte": vote_average,
|
||||||
|
"release_date.gte": release_date,
|
||||||
|
"page": page
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
if infos:
|
if infos:
|
||||||
|
|||||||
@@ -1080,18 +1080,17 @@ class TmdbApi:
|
|||||||
logger.error(str(e))
|
logger.error(str(e))
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def discover_movies(self, **kwargs) -> List[dict]:
|
def discover_movies(self, params: dict) -> List[dict]:
|
||||||
"""
|
"""
|
||||||
发现电影
|
发现电影
|
||||||
:param kwargs:
|
:param params: 参数
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if not self.discover:
|
if not self.discover:
|
||||||
return []
|
return []
|
||||||
try:
|
try:
|
||||||
logger.debug(f"正在发现电影:{kwargs}...")
|
logger.debug(f"正在发现电影:{params}...")
|
||||||
params_tuple = tuple(kwargs.items())
|
tmdbinfo = self.discover.discover_movies(tuple(params.items()))
|
||||||
tmdbinfo = self.discover.discover_movies(params_tuple)
|
|
||||||
if tmdbinfo:
|
if tmdbinfo:
|
||||||
for info in tmdbinfo:
|
for info in tmdbinfo:
|
||||||
info['media_type'] = MediaType.MOVIE
|
info['media_type'] = MediaType.MOVIE
|
||||||
@@ -1100,18 +1099,17 @@ class TmdbApi:
|
|||||||
logger.error(str(e))
|
logger.error(str(e))
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def discover_tvs(self, **kwargs) -> List[dict]:
|
def discover_tvs(self, params: dict) -> List[dict]:
|
||||||
"""
|
"""
|
||||||
发现电视剧
|
发现电视剧
|
||||||
:param kwargs:
|
:param params: 参数
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if not self.discover:
|
if not self.discover:
|
||||||
return []
|
return []
|
||||||
try:
|
try:
|
||||||
logger.debug(f"正在发现电视剧:{kwargs}...")
|
logger.debug(f"正在发现电视剧:{params}...")
|
||||||
params_tuple = tuple(kwargs.items())
|
tmdbinfo = self.discover.discover_tv_shows(tuple(params.items()))
|
||||||
tmdbinfo = self.discover.discover_tv_shows(params_tuple)
|
|
||||||
if tmdbinfo:
|
if tmdbinfo:
|
||||||
for info in tmdbinfo:
|
for info in tmdbinfo:
|
||||||
info['media_type'] = MediaType.TV
|
info['media_type'] = MediaType.TV
|
||||||
|
|||||||
Reference in New Issue
Block a user