fix(types): type TMDB discover methods

This commit is contained in:
jxxghp
2026-10-17 07:41:01 +08:00
parent 17bc52239d
commit b2971d80d3

View File

@@ -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.(异步版本)