diff --git a/app/modules/themoviedb/tmdbv3api/objs/discover.py b/app/modules/themoviedb/tmdbv3api/objs/discover.py index ffddd53f3..ebe29f1cb 100644 --- a/app/modules/themoviedb/tmdbv3api/objs/discover.py +++ b/app/modules/themoviedb/tmdbv3api/objs/discover.py @@ -1,12 +1,19 @@ +from typing import Any, Callable, cast +from urllib.parse import urlencode + from app.runtime.cache import cached from app.runtime.settings import get_runtime_setting -from ..tmdb import TMDb +from ..tmdb import TMDb, TMDbJson -try: - from urllib import urlencode -except ImportError: - from urllib.parse import urlencode +_cached_discover = cast( + Callable[[Callable[..., Any]], Callable[..., Any]], + cached( + maxsize=1, + ttl=43200, + empty_ttl=get_runtime_setting("EMPTY_RESULT_CACHE_TTL"), + ), +) class Discover(TMDb): @@ -15,8 +22,11 @@ class Discover(TMDb): "tv": "/discover/tv" } - @cached(maxsize=1, ttl=43200, empty_ttl=get_runtime_setting('EMPTY_RESULT_CACHE_TTL')) - def discover_movies(self, params_tuple): + @_cached_discover + def discover_movies( + self, + params_tuple: tuple[tuple[str, Any], ...], + ) -> TMDbJson: """ Discover movies by different types of data like average rating, number of votes, genres and certifications. :param params_tuple: dict @@ -25,8 +35,11 @@ class Discover(TMDb): params = dict(params_tuple) return self._request_obj(self._urls["movies"], urlencode(params), key="results", call_cached=False) - @cached(maxsize=1, ttl=43200, empty_ttl=get_runtime_setting('EMPTY_RESULT_CACHE_TTL')) - def discover_tv_shows(self, params_tuple): + @_cached_discover + def discover_tv_shows( + self, + params_tuple: tuple[tuple[str, Any], ...], + ) -> TMDbJson: """ Discover TV shows by different types of data like average rating, number of votes, genres, the network they aired on and air dates. @@ -35,8 +48,11 @@ class Discover(TMDb): """ return self._request_obj(self._urls["tv"], urlencode(params_tuple), key="results", call_cached=False) - @cached(maxsize=1, ttl=43200, empty_ttl=get_runtime_setting('EMPTY_RESULT_CACHE_TTL')) - async def async_discover_movies(self, params_tuple): + @_cached_discover + async def async_discover_movies( + self, + params_tuple: tuple[tuple[str, Any], ...], + ) -> TMDbJson: """ Discover movies by different types of data like average rating, number of votes, genres and certifications.(异步版本) :param params_tuple: dict @@ -45,8 +61,11 @@ class Discover(TMDb): params = dict(params_tuple) return await self._async_request_obj(self._urls["movies"], urlencode(params), key="results", call_cached=False) - @cached(maxsize=1, ttl=43200, empty_ttl=get_runtime_setting('EMPTY_RESULT_CACHE_TTL')) - async def async_discover_tv_shows(self, params_tuple): + @_cached_discover + async def async_discover_tv_shows( + self, + params_tuple: tuple[tuple[str, Any], ...], + ) -> TMDbJson: """ Discover TV shows by different types of data like average rating, number of votes, genres, the network they aired on and air dates.(异步版本)