From f21c46edbabafb5e83afceff4b89161e18181a86 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 30 Jul 2023 13:12:17 +0800 Subject: [PATCH] fix api --- app/core/context.py | 2 +- app/modules/themoviedb/tmdbapi.py | 12 ++++-------- app/modules/themoviedb/tmdbv3api/as_obj.py | 4 ++-- app/modules/themoviedb/tmdbv3api/tmdb.py | 7 ++++--- app/schemas/context.py | 4 ++++ app/schemas/tmdb.py | 3 ++- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/core/context.py b/app/core/context.py index 78c11939..54d165f4 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 = [s.to_dict() for s in info.get('seasons')] + self.season_info = info.get('seasons') for seainfo in info.get('seasons'): # 季 season = seainfo.get("season_number") diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index dfb952a4..14d36e9a 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -1105,7 +1105,7 @@ class TmdbHelper: info = self.movie.credits(movie_id=tmdbid) or {} cast = info.get('cast') or [] if cast: - return [c.to_dict() for c in cast][(page - 1) * count: page * count] + return cast[(page - 1) * count: page * count] return [] except Exception as e: print(str(e)) @@ -1122,7 +1122,7 @@ class TmdbHelper: info = self.tv.credits(tv_id=tmdbid) or {} cast = info.get('cast') or [] if cast: - return [c.to_dict() for c in cast][(page - 1) * count: page * count] + return cast[(page - 1) * count: page * count] return [] except Exception as e: print(str(e)) @@ -1136,11 +1136,7 @@ class TmdbHelper: return {} try: logger.info(f"正在获取人物详情:{person_id}...") - info = self.person.details(person_id=person_id) - if info: - info_dict = info.to_dict() - return info_dict - return {} + return self.person.details(person_id=person_id) or {} except Exception as e: print(str(e)) return {} @@ -1156,7 +1152,7 @@ class TmdbHelper: info = self.person.movie_credits(person_id=person_id) or {} cast = info.get('cast') or [] if cast: - return [c.to_dict() for c in cast][(page - 1) * count: page * count] + return cast[(page - 1) * count: page * count] return [] except Exception as e: print(str(e)) diff --git a/app/modules/themoviedb/tmdbv3api/as_obj.py b/app/modules/themoviedb/tmdbv3api/as_obj.py index 58664b49..111e9010 100644 --- a/app/modules/themoviedb/tmdbv3api/as_obj.py +++ b/app/modules/themoviedb/tmdbv3api/as_obj.py @@ -68,8 +68,8 @@ class AsObj: return reversed(self._dict()) if sys.version_info >= (3, 9): - def __class_getitem__(self, key): - return self.__dict__.__class_getitem__(key) + def __class_getitem__(cls, key): + return cls.__dict__.__class_getitem__(key) def __ior__(self, value): return self._dict().__ior__(value) diff --git a/app/modules/themoviedb/tmdbv3api/tmdb.py b/app/modules/themoviedb/tmdbv3api/tmdb.py index 6a8cacfb..21a3bd8d 100644 --- a/app/modules/themoviedb/tmdbv3api/tmdb.py +++ b/app/modules/themoviedb/tmdbv3api/tmdb.py @@ -3,13 +3,12 @@ import logging import os import time +from functools import lru_cache import requests import requests.exceptions -from .as_obj import AsObj from .exceptions import TMDbException -from functools import lru_cache logger = logging.getLogger(__name__) @@ -196,4 +195,6 @@ class TMDb(object): if "success" in json and json["success"] is False: raise TMDbException(json["status_message"]) - return AsObj(json, key=key) + if key: + return json.get(key) + return json diff --git a/app/schemas/context.py b/app/schemas/context.py index b46a688c..ae961a84 100644 --- a/app/schemas/context.py +++ b/app/schemas/context.py @@ -103,6 +103,10 @@ class MediaInfo(BaseModel): season_info: Optional[List[dict]] = [] # 别名和译名 names: Optional[list] = [] + # 演员 + actors: Optional[list] = [] + # 导演 + directors: Optional[list] = [] # 详情链接 detail_link: Optional[str] = None # 其它TMDB属性 diff --git a/app/schemas/tmdb.py b/app/schemas/tmdb.py index 89980e4d..a7edf4d2 100644 --- a/app/schemas/tmdb.py +++ b/app/schemas/tmdb.py @@ -40,10 +40,11 @@ class TmdbPerson(BaseModel): gender: Optional[int] = None original_name: Optional[str] = None credit_id: Optional[str] = None - also_known_as: Optional[dict] = {} + also_known_as: Optional[list] = [] birthday: Optional[str] = None deathday: Optional[str] = None imdb_id: Optional[str] = None known_for_department: Optional[str] = None place_of_birth: Optional[str] = None popularity: Optional[float] = None + images: Optional[dict] = {}