From 00387ec33461c880501fb6971bf9843c43dadcbb Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 30 Jul 2023 12:21:23 +0800 Subject: [PATCH] fix api --- app/api/endpoints/tmdb.py | 3 ++- app/chain/tmdb.py | 5 +++-- app/core/context.py | 4 +--- app/modules/themoviedb/__init__.py | 7 ++++--- app/modules/themoviedb/tmdbapi.py | 18 ++++++++++++------ app/schemas/tmdb.py | 2 +- 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/app/api/endpoints/tmdb.py b/app/api/endpoints/tmdb.py index 3212fff2..7d039a2c 100644 --- a/app/api/endpoints/tmdb.py +++ b/app/api/endpoints/tmdb.py @@ -100,11 +100,12 @@ def tmdb_person(person_id: int, @router.get("/person/credits/{person_id}", summary="人物参演作品", response_model=List[schemas.MediaInfo]) def tmdb_person_credits(person_id: int, + page: int = 1, _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 根据人物ID查询人物参演作品 """ - tmdbinfo = TmdbChain().person_credits(person_id=person_id) + tmdbinfo = TmdbChain().person_credits(person_id=person_id, page=page) if not tmdbinfo: return [] else: diff --git a/app/chain/tmdb.py b/app/chain/tmdb.py index 2fe32982..2a7ae951 100644 --- a/app/chain/tmdb.py +++ b/app/chain/tmdb.py @@ -99,9 +99,10 @@ class TmdbChain(ChainBase): """ return self.run_module("person_detail", person_id=person_id) - def person_credits(self, person_id: int) -> List[dict]: + def person_credits(self, person_id: int, page: int = 1) -> List[dict]: """ 根据人物ID查询人物参演作品 :param person_id: 人物ID + :param page: 页码 """ - return self.run_module("person_credits", person_id=person_id) + return self.run_module("person_credits", person_id=person_id, page=page) diff --git a/app/core/context.py b/app/core/context.py index c462b5f2..78c11939 100644 --- a/app/core/context.py +++ b/app/core/context.py @@ -316,7 +316,7 @@ class MediaInfo: self.year = self.release_date[:4] # 季集信息 if info.get('seasons'): - self.season_info = info.get('seasons') + self.season_info = [s.to_dict() for s in info.get('seasons')] for seainfo in info.get('seasons'): # 季 season = seainfo.get("season_number") @@ -503,8 +503,6 @@ class MediaInfo: dicts["type"] = self.type.value if self.type else None dicts["detail_link"] = self.detail_link dicts["title_year"] = self.title_year - dicts["season_info"] = [info.to_dict() for info in self.season_info] - dicts["tmdb_info"] = self.tmdb_info.to_dict() return dicts diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 3329a6a4..52e6ac96 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -382,9 +382,10 @@ class TheMovieDbModule(_ModuleBase): """ return self.tmdb.get_person_detail(person_id=person_id) - def person_credits(self, person_id: int) -> dict: + def person_credits(self, person_id: int, page: int = 1) -> List[dict]: """ - 根据TMDBID查询人物参演详情 + 根据TMDBID查询人物参演作品 :param person_id: 人物ID + :param page: 页码 """ - return self.tmdb.get_person_credits(person_id=person_id) + return self.tmdb.get_person_credits(person_id=person_id, page=page) diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index bbec9172..dfb952a4 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -1136,22 +1136,28 @@ class TmdbHelper: return {} try: logger.info(f"正在获取人物详情:{person_id}...") - info = self.person.details(person_id=person_id) or {} - return info + info = self.person.details(person_id=person_id) + if info: + info_dict = info.to_dict() + return info_dict + return {} except Exception as e: print(str(e)) return {} - def get_person_credits(self, person_id: int) -> dict: + def get_person_credits(self, person_id: int, page: int = 1, count: int = 24) -> List[dict]: """ 获取人物参演作品 """ if not self.person: - return {} + return [] try: logger.info(f"正在获取人物参演作品:{person_id}...") info = self.person.movie_credits(person_id=person_id) 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 {} + return [] diff --git a/app/schemas/tmdb.py b/app/schemas/tmdb.py index 7c401ce5..89980e4d 100644 --- a/app/schemas/tmdb.py +++ b/app/schemas/tmdb.py @@ -40,7 +40,7 @@ class TmdbPerson(BaseModel): gender: Optional[int] = None original_name: Optional[str] = None credit_id: Optional[str] = None - also_known_as: Optional[list] = [] + also_known_as: Optional[dict] = {} birthday: Optional[str] = None deathday: Optional[str] = None imdb_id: Optional[str] = None