feat: let configuration of providers be managed by AnimeProvider wrapper

This commit is contained in:
Benex254
2024-10-03 12:34:34 +03:00
parent 93b38b055f
commit e03063cd76
3 changed files with 21 additions and 9 deletions

View File

@@ -2,6 +2,7 @@
import importlib
import logging
import os
from typing import TYPE_CHECKING
from .libs.anime_provider import anime_sources
@@ -29,10 +30,21 @@ class AnimeProvider:
PROVIDERS = list(anime_sources.keys())
provider = PROVIDERS[0]
def __init__(self, provider, dynamic=False, retries=0) -> None:
def __init__(
self,
provider,
cache_requests=os.environ.get("FASTANIME_CACHE_REQUESTS", "false"),
use_persistent_provider_store=os.environ.get(
"FASTANIME_USE_PERSISTENT_PROVIDER_STORE", "false"
),
dynamic=False,
retries=0,
) -> None:
self.provider = provider
self.dynamic = dynamic
self.retries = retries
self.cache_requests = cache_requests
self.use_persistent_provider_store = use_persistent_provider_store
self.lazyload_provider(self.provider)
def lazyload_provider(self, provider):
@@ -45,7 +57,9 @@ class AnimeProvider:
package = f"fastanime.libs.anime_provider.{provider}"
provider_api = importlib.import_module(".api", package)
anime_provider = getattr(provider_api, anime_provider_cls_name)
self.anime_provider = anime_provider()
self.anime_provider = anime_provider(
self.cache_requests, self.use_persistent_provider_store
)
def search_for_anime(
self,

View File

@@ -14,11 +14,7 @@ class AnimeProvider:
USER_AGENT = random_user_agent()
HEADERS = {}
def __init__(
self,
cache_requests=os.environ.get("FASTANIME_CACHE_REQUESTS", "false"),
store_type=os.environ.get("FASTANIME_PROVIDER_STORE_TYPE", "persistent"),
) -> None:
def __init__(self, cache_requests, use_persistent_provider_store) -> None:
if cache_requests.lower() == "true":
from ..common.requests_cacher import CachedRequestsSession
@@ -28,7 +24,7 @@ class AnimeProvider:
else:
self.session = requests.session()
self.session.headers.update({"User-Agent": self.USER_AGENT, **self.HEADERS})
if store_type == "persistent":
if use_persistent_provider_store.lower() == "true":
self.store = ProviderStore(
"persistent",
self.PROVIDER,

View File

@@ -89,10 +89,12 @@ class CachedRequestsSession(requests.Session):
url,
params=None,
force_caching=False,
fresh=False,
fresh=0,
*args,
**kwargs,
):
# TODO: improve the caching functionality and add a layer to auto delete
# expired requests
if fresh:
logger.debug("Executing fresh request")
return super().request(method, url, params=params, *args, **kwargs)