add tmdb person api

This commit is contained in:
jxxghp 2023-07-30 08:40:30 +08:00
parent f6978b916b
commit 4ab54b7672
4 changed files with 44 additions and 45 deletions

View File

@ -84,19 +84,6 @@ def tmdb_credits(tmdbid: int,
return [schemas.TmdbPerson(**tmdbinfo) for tmdbinfo in tmdbinfos]
@router.get("/credit/details/{credit_id}", summary="演员参演作品", response_model=List[schemas.MediaInfo])
def tmdb_credit_details(credit_id: str,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
根据演员ID查询演员参演作品
"""
tmdbinfos = TmdbChain().credit_details(credit_id=credit_id)
if not tmdbinfos:
return []
else:
return [MediaInfo(tmdb_info=tmdbinfo).to_dict() for tmdbinfo in tmdbinfos]
@router.get("/person/{person_id}", summary="人物详情", response_model=schemas.TmdbPerson)
def tmdb_person(person_id: int,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
@ -110,6 +97,19 @@ def tmdb_person(person_id: int,
return schemas.TmdbPerson(**tmdbinfo)
@router.get("/person/credits/{person_id}", summary="人物参演作品", response_model=List[schemas.MediaInfo])
def tmdb_person_credits(person_id: int,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
根据人物ID查询人物参演作品
"""
tmdbinfo = TmdbChain().person_credits(person_id=person_id)
if not tmdbinfo:
return []
else:
return [MediaInfo(tmdb_info=tmdbinfo).to_dict() for tmdbinfo in tmdbinfo]
@router.get("/movies", summary="TMDB电影", response_model=List[schemas.MediaInfo])
def tmdb_movies(sort_by: str = "popularity.desc",
with_genres: str = "",

View File

@ -90,16 +90,16 @@ class TmdbChain(ChainBase):
"""
return self.run_module("tv_credits", tmdbid=tmdbid)
def credit_details(self, credit_id: str) -> List[dict]:
"""
根据TMDBID查询演职员详情
:param credit_id: 人物ID
"""
return self.run_module("credit_details", credit_id=credit_id)
def person_detail(self, person_id: int) -> dict:
"""
根据TMDBID查询演职员详情
:param person_id: 人物ID
"""
return self.run_module("person_detail", person_id=person_id)
def person_credits(self, person_id: int) -> List[dict]:
"""
根据人物ID查询人物参演作品
:param person_id: 人物ID
"""
return self.run_module("person_credits", person_id=person_id)

View File

@ -373,16 +373,16 @@ class TheMovieDbModule(_ModuleBase):
"""
return self.tmdb.get_tv_credits(tmdbid=tmdbid)
def credit_details(self, credit_id: str) -> List[dict]:
"""
根据TMDBID查询演职员详情
:param credit_id: 人物ID
"""
return self.tmdb.get_credit_details(credit_id=credit_id)
def person_detail(self, person_id: int) -> dict:
"""
根据TMDBID查询人物详情
:param person_id: 人物ID
"""
return self.tmdb.get_person_detail(person_id=person_id)
def person_credits(self, person_id: int) -> dict:
"""
根据TMDBID查询人物参演详情
:param person_id: 人物ID
"""
return self.tmdb.get_person_credits(person_id=person_id)

View File

@ -5,14 +5,14 @@ from urllib.parse import quote
import zhconv
from lxml import etree
from .tmdbv3api import TMDb, Search, Movie, TV, Season, Episode, Discover, Trending, Credit, Person
from .tmdbv3api.exceptions import TMDbException
from app.core.config import settings
from app.log import logger
from app.schemas.types import MediaType
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
from app.schemas.types import MediaType
from .tmdbv3api import TMDb, Search, Movie, TV, Season, Episode, Discover, Trending, Person
from .tmdbv3api.exceptions import TMDbException
class TmdbHelper:
@ -45,7 +45,6 @@ class TmdbHelper:
self.episode = Episode()
self.discover = Discover()
self.trending = Trending()
self.credit = Credit()
self.person = Person()
def search_multiis(self, title: str) -> List[dict]:
@ -1123,20 +1122,6 @@ class TmdbHelper:
print(str(e))
return []
def get_credit_details(self, credit_id: str) -> List[dict]:
"""
获取演职员的详情
"""
if not self.credit:
return []
try:
logger.info(f"正在获取演职员参演作品:{credit_id}...")
info = self.credit.details(credit_id=credit_id) or {}
return info
except Exception as e:
print(str(e))
return []
def get_person_detail(self, person_id: int) -> dict:
"""
获取人物详情
@ -1150,3 +1135,17 @@ class TmdbHelper:
except Exception as e:
print(str(e))
return {}
def get_person_credits(self, person_id: int) -> dict:
"""
获取人物参演作品
"""
if not self.person:
return {}
try:
logger.info(f"正在获取人物参演作品:{person_id}...")
info = self.person.movie_credits(person_id=person_id) or {}
return info.get('cast') or []
except Exception as e:
print(str(e))
return {}