diff --git a/fastanime/AnimeProvider.py b/fastanime/AnimeProvider.py index 8372d03..34231ad 100644 --- a/fastanime/AnimeProvider.py +++ b/fastanime/AnimeProvider.py @@ -17,6 +17,7 @@ if TYPE_CHECKING: logger = logging.getLogger(__name__) +# TODO: improve performance of this class and add cool features like auto retry class AnimeProvider: """Class that manages all anime sources adding some extra functionality to them. Attributes: @@ -100,7 +101,7 @@ class AnimeProvider: episode: str, translation_type: str, anilist_obj: "AnilistBaseMediaDataSchema|None" = None, - ) -> Iterator["Server"] | None: + ) -> "Iterator[Server] | None": """core abstractions for getting juicy streams from all providers Args: diff --git a/fastanime/cli/commands/anilist/__init__.py b/fastanime/cli/commands/anilist/__init__.py index 7c2c420..749c282 100644 --- a/fastanime/cli/commands/anilist/__init__.py +++ b/fastanime/cli/commands/anilist/__init__.py @@ -32,9 +32,16 @@ commands = { ) @click.pass_context def anilist(ctx: click.Context): + from typing import TYPE_CHECKING + from ....anilist import AniList + from ....AnimeProvider import AnimeProvider from ...interfaces.anilist_interfaces import anilist as anilist_interface + if TYPE_CHECKING: + from ...config import Config + config: Config = ctx.obj + config.anime_provider = AnimeProvider(config.provider) if user := ctx.obj.user: AniList.update_login_info(user, user["token"]) if ctx.invoked_subcommand is None: diff --git a/fastanime/cli/commands/download.py b/fastanime/cli/commands/download.py index a794e21..f219414 100644 --- a/fastanime/cli/commands/download.py +++ b/fastanime/cli/commands/download.py @@ -31,13 +31,15 @@ def download(config: "Config", anime_title, episode_range, highest_priority): from rich.progress import Progress from thefuzz import fuzz + from ...AnimeProvider import AnimeProvider from ...libs.anime_provider.types import Anime from ...libs.fzf import fzf from ...Utility.downloader.downloader import downloader from ..utils.tools import exit_app from ..utils.utils import clear, fuzzy_inquirer - anime_provider = config.anime_provider + anime_provider = AnimeProvider(config.provider) + translation_type = config.translation_type download_dir = config.downloads_dir diff --git a/fastanime/cli/commands/search.py b/fastanime/cli/commands/search.py index 47457f0..8cb375f 100644 --- a/fastanime/cli/commands/search.py +++ b/fastanime/cli/commands/search.py @@ -19,6 +19,7 @@ def search(config: Config, anime_title: str, episode_range: str): from rich.progress import Progress from thefuzz import fuzz + from ...AnimeProvider import AnimeProvider from ...libs.anime_provider.types import Anime from ...libs.fzf import fzf from ...libs.rofi import Rofi @@ -26,7 +27,7 @@ def search(config: Config, anime_title: str, episode_range: str): from ..utils.tools import exit_app from ..utils.utils import clear, fuzzy_inquirer - anime_provider = config.anime_provider + anime_provider = AnimeProvider(config.provider) # ---- search for anime ---- with Progress() as progress: diff --git a/fastanime/cli/config.py b/fastanime/cli/config.py index c2d3d5e..6a9f104 100644 --- a/fastanime/cli/config.py +++ b/fastanime/cli/config.py @@ -1,13 +1,16 @@ import os from configparser import ConfigParser +from typing import TYPE_CHECKING from rich import print -from ..AnimeProvider import AnimeProvider from ..constants import USER_CONFIG_PATH, USER_VIDEOS_DIR from ..libs.rofi import Rofi from ..Utility.user_data_helper import user_data_helper +if TYPE_CHECKING: + from ..AnimeProvider import AnimeProvider + class Config(object): anime_list: list @@ -15,6 +18,7 @@ class Config(object): fastanime_anilist_app_login_url = ( "https://anilist.co/api/v2/oauth/authorize?client_id=20148&response_type=token" ) + anime_provider: "AnimeProvider" def __init__(self) -> None: self.load_config() @@ -84,8 +88,6 @@ class Config(object): self.anime_list: list = user_data_helper.user_data.get("animelist", []) self.user: dict = user_data_helper.user_data.get("user", {}) - self.anime_provider = AnimeProvider(self.provider) - def update_user(self, user): self.user = user user_data_helper.update_user_info(user) diff --git a/fastanime/libs/anime_provider/allanime/api.py b/fastanime/libs/anime_provider/allanime/api.py index 5221509..1e81438 100644 --- a/fastanime/libs/anime_provider/allanime/api.py +++ b/fastanime/libs/anime_provider/allanime/api.py @@ -155,7 +155,7 @@ class AllAnimeAPI(AnimeProvider): def get_episode_streams( self, anime: "Anime", episode_number: str, translation_type="sub" - ) -> Iterator["Server"] | None: + ) -> "Iterator[Server] | None": """get the streams of an episode Args: