From 4ab54b76723bf62c3dce86bb78b7ecd005c1e59f Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 30 Jul 2023 08:40:30 +0800 Subject: [PATCH] add tmdb person api --- app/api/endpoints/tmdb.py | 26 +++++++++++----------- app/chain/tmdb.py | 14 ++++++------ app/modules/themoviedb/__init__.py | 14 ++++++------ app/modules/themoviedb/tmdbapi.py | 35 +++++++++++++++--------------- 4 files changed, 44 insertions(+), 45 deletions(-) diff --git a/app/api/endpoints/tmdb.py b/app/api/endpoints/tmdb.py index c6da92fe..48a0f55e 100644 --- a/app/api/endpoints/tmdb.py +++ b/app/api/endpoints/tmdb.py @@ -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 = "", diff --git a/app/chain/tmdb.py b/app/chain/tmdb.py index 636ad550..9b53d42b 100644 --- a/app/chain/tmdb.py +++ b/app/chain/tmdb.py @@ -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) diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 712089cc..3e301d2e 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -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) diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index 77bf98ea..3d490ec0 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -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 {}