This commit is contained in:
jxxghp 2023-07-30 11:13:53 +08:00
parent 4ab54b7672
commit df05c46a5b
5 changed files with 30 additions and 19 deletions

View File

@ -67,15 +67,16 @@ def tmdb_recommend(tmdbid: int,
@router.get("/credits/{tmdbid}/{type_name}", summary="演员阵容", response_model=List[schemas.TmdbPerson])
def tmdb_credits(tmdbid: int,
type_name: str,
page: int = 1,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
根据TMDBID查询演员阵容type_name: 电影/电视剧
"""
mediatype = MediaType(type_name)
if mediatype == MediaType.MOVIE:
tmdbinfos = TmdbChain().movie_credits(tmdbid=tmdbid)
tmdbinfos = TmdbChain().movie_credits(tmdbid=tmdbid, page=page)
elif mediatype == MediaType.TV:
tmdbinfos = TmdbChain().tv_credits(tmdbid=tmdbid)
tmdbinfos = TmdbChain().tv_credits(tmdbid=tmdbid, page=page)
else:
return []
if not tmdbinfos:

View File

@ -76,19 +76,21 @@ class TmdbChain(ChainBase):
"""
return self.run_module("tv_recommend", tmdbid=tmdbid)
def movie_credits(self, tmdbid: int) -> List[dict]:
def movie_credits(self, tmdbid: int, page: int = 1) -> List[dict]:
"""
根据TMDBID查询电影演职人员
:param tmdbid: TMDBID
:param page: 页码
"""
return self.run_module("movie_credits", tmdbid=tmdbid)
return self.run_module("movie_credits", tmdbid=tmdbid, page=page)
def tv_credits(self, tmdbid: int) -> List[dict]:
def tv_credits(self, tmdbid: int, page: int = 1) -> List[dict]:
"""
根据TMDBID查询电视剧演职人员
:param tmdbid: TMDBID
:param page: 页码
"""
return self.run_module("tv_credits", tmdbid=tmdbid)
return self.run_module("tv_credits", tmdbid=tmdbid, page=page)
def person_detail(self, person_id: int) -> dict:
"""

View File

@ -359,19 +359,21 @@ class TheMovieDbModule(_ModuleBase):
"""
return self.tmdb.get_tv_recommend(tmdbid=tmdbid)
def movie_credits(self, tmdbid: int) -> List[dict]:
def movie_credits(self, tmdbid: int, page: int = 1) -> List[dict]:
"""
根据TMDBID查询电影演职员表
:param tmdbid: TMDBID
:param page: 页码
"""
return self.tmdb.get_movie_credits(tmdbid=tmdbid)
return self.tmdb.get_movie_credits(tmdbid=tmdbid, page=page)
def tv_credits(self, tmdbid: int) -> List[dict]:
def tv_credits(self, tmdbid: int, page: int = 1) -> List[dict]:
"""
根据TMDBID查询电视剧演职员表
:param tmdbid: TMDBID
:param page: 页码
"""
return self.tmdb.get_tv_credits(tmdbid=tmdbid)
return self.tmdb.get_tv_credits(tmdbid=tmdbid, page=page)
def person_detail(self, person_id: int) -> dict:
"""

View File

@ -1094,30 +1094,36 @@ class TmdbHelper:
print(str(e))
return []
def get_movie_credits(self, tmdbid: int) -> List[dict]:
def get_movie_credits(self, tmdbid: int, page: int = 1, count: int = 24) -> List[dict]:
"""
获取电影的演职员列表
"""
if not self.movie:
return []
try:
logger.info(f"正在获取电影演职员:{tmdbid}...")
logger.info(f"正在获取电影演职员:{tmdbid}...")
info = self.movie.credits(movie_id=tmdbid) or {}
return info.get('cast') or []
cast = info.get('cast') or []
if cast:
return [c.to_dict() for c in cast][(page - 1) * count: page * count]
return []
except Exception as e:
print(str(e))
return []
def get_tv_credits(self, tmdbid: int) -> List[dict]:
def get_tv_credits(self, tmdbid: int, page: int = 1, count: int = 24) -> List[dict]:
"""
获取电视剧的演职员列表
"""
if not self.tv:
return []
try:
logger.info(f"正在获取电视剧演职员:{tmdbid}...")
logger.info(f"正在获取电视剧演职员:{tmdbid}...")
info = self.tv.credits(tv_id=tmdbid) or {}
return info.get('cast') or []
cast = info.get('cast') or []
if cast:
return [c.to_dict() for c in cast][(page - 1) * count: page * count]
return []
except Exception as e:
print(str(e))
return []

View File

@ -29,7 +29,7 @@ class TMDb(object):
def __init__(self, obj_cached=True, session=None):
if self.__class__._session is None or session is not None:
self.__class__._session = requests.Session() if session is None else session
self._base = "https://api.themoviedb.org/3"
self.domain = "api.themoviedb.org"
self._remaining = 40
self._reset = None
self.obj_cached = obj_cached
@ -143,8 +143,8 @@ class TMDb(object):
if self.api_key is None or self.api_key == "":
raise TMDbException("No API key found.")
url = "%s%s?api_key=%s&%s&language=%s" % (
self._base,
url = "https://%s/3%s?api_key=%s&%s&language=%s" % (
self.domain,
action,
self.api_key,
params,