diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 81a161f3..5aeaa939 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -260,7 +260,7 @@ class ChainBase(metaclass=ABCMeta): """ return self.run_module("search_medias", meta=meta) - def search_persons(self, name: str) -> Optional[List[TmdbPerson, DoubanPerson]]: + def search_persons(self, name: str) -> Optional[List[Union[TmdbPerson, DoubanPerson]]]: """ 搜索人物信息 :param name: 人物名称 diff --git a/app/modules/douban/apiv2.py b/app/modules/douban/apiv2.py index c3f2781d..876efc7b 100644 --- a/app/modules/douban/apiv2.py +++ b/app/modules/douban/apiv2.py @@ -38,6 +38,7 @@ class DoubanApi(metaclass=Singleton): "tv_search": "/search/movie", "book_search": "/search/book", "group_search": "/search/group", + "person_search": "/search/celebrity", # 各类主题合集 # start: int = 0&count: int = 20 @@ -137,9 +138,6 @@ class DoubanApi(metaclass=Singleton): # doulist "doulist": "/doulist/", "doulist_items": "/doulist/%s/items", - - # personlist - "person_search": "/person/search", } _user_agents = [ @@ -193,13 +191,13 @@ class DoubanApi(metaclass=Singleton): '_ts': ts, '_sig': self.__sign(url=req_url, ts=ts) }) - resp = RequestUtils( + with RequestUtils( ua=choice(self._user_agents), session=self._session - ).get_res(url=req_url, params=params) - if resp.status_code == 400 and "rate_limit" in resp.text: - return resp.json() - return resp.json() if resp else {} + ).get_res(url=req_url, params=params) as resp: + if resp is not None and resp.status_code == 400 and "rate_limit" in resp.text: + return resp.json() + return resp.json() if resp else {} @lru_cache(maxsize=settings.CACHE_CONF.get('douban')) def __post(self, url: str, **kwargs) -> dict: @@ -230,6 +228,13 @@ class DoubanApi(metaclass=Singleton): return resp.json() return resp.json() if resp else {} + def imdbid(self, imdbid: str, + ts=datetime.strftime(datetime.now(), '%Y%m%d')): + """ + IMDBID搜索 + """ + return self.__post(self._urls["imdbid"] % imdbid, _ts=ts) + def search(self, keyword: str, start: int = 0, count: int = 20, ts=datetime.strftime(datetime.now(), '%Y%m%d')) -> dict: """ @@ -238,13 +243,6 @@ class DoubanApi(metaclass=Singleton): return self.__invoke(self._urls["search"], q=keyword, start=start, count=count, _ts=ts) - def imdbid(self, imdbid: str, - ts=datetime.strftime(datetime.now(), '%Y%m%d')): - """ - IMDBID搜索 - """ - return self.__post(self._urls["imdbid"] % imdbid, _ts=ts) - def movie_search(self, keyword: str, start: int = 0, count: int = 20, ts=datetime.strftime(datetime.now(), '%Y%m%d')): """ diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index 96caff5d..ebbe8eb7 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -101,13 +101,7 @@ class TmdbApi: """ if not name: return [] - ret_infos = [] - persons = self.person.search(query=name) or [] - for person in persons: - if name in person.get("name"): - person['media_type'] = MediaType.PERSON - ret_infos.append(person) - return ret_infos + return self.search.people(term=name) or [] @staticmethod def __compare_names(file_name: str, tmdb_names: list) -> bool: diff --git a/app/modules/themoviedb/tmdbv3api/objs/person.py b/app/modules/themoviedb/tmdbv3api/objs/person.py index 0c23d48b..527e2c38 100644 --- a/app/modules/themoviedb/tmdbv3api/objs/person.py +++ b/app/modules/themoviedb/tmdbv3api/objs/person.py @@ -14,7 +14,6 @@ class Person(TMDb): "translations": "/person/%s/translations", "latest": "/person/latest", "popular": "/person/popular", - "search_people": "/search/person", } def details(self, person_id, append_to_response="videos,images"): @@ -136,16 +135,3 @@ class Person(TMDb): params="page=%s" % page, key="results" ) - - def search(self, query, page=1): - """ - Search for people. - :param query: str - :param page: int - :return: - """ - return self._request_obj( - self._urls["search_people"], - params="query=%s&page=%s" % (query, page), - key="results" - )