mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-12 15:50:01 -08:00
feat: performance review
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import click
|
||||
|
||||
from ...interactive.session import session
|
||||
from ...utils.lazyloader import LazyGroup
|
||||
from . import examples
|
||||
|
||||
@@ -33,6 +32,7 @@ def anilist(ctx: click.Context, resume: bool):
|
||||
The entry point for the 'anilist' command. If no subcommand is invoked,
|
||||
it launches the interactive TUI mode.
|
||||
"""
|
||||
from ...interactive.session import session
|
||||
|
||||
config = ctx.obj
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ if TYPE_CHECKING:
|
||||
|
||||
from typing_extensions import Unpack
|
||||
|
||||
from ...libs.players.base import BasePlayer
|
||||
from ...libs.providers.anime.base import BaseAnimeProvider
|
||||
from ...libs.providers.anime.types import Anime
|
||||
from ...libs.selectors.base import BaseSelector
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import textwrap
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING, Any, Literal, get_args, get_origin
|
||||
from typing import Any, Literal, get_args, get_origin
|
||||
|
||||
from InquirerPy import inquirer
|
||||
from InquirerPy.validator import NumberValidator
|
||||
|
||||
@@ -2,14 +2,11 @@ import configparser
|
||||
from pathlib import Path
|
||||
|
||||
import click
|
||||
from InquirerPy import inquirer
|
||||
from pydantic import ValidationError
|
||||
|
||||
from ...core.config import AppConfig
|
||||
from ...core.constants import USER_CONFIG_PATH
|
||||
from ...core.exceptions import ConfigError
|
||||
from .generate import generate_config_ini_from_app_model
|
||||
from .editor import InteractiveConfigEditor
|
||||
|
||||
|
||||
class ConfigLoader:
|
||||
@@ -42,7 +39,12 @@ class ConfigLoader:
|
||||
click.echo(
|
||||
"[bold yellow]Welcome to FastAnime![/bold yellow] No configuration file found."
|
||||
)
|
||||
choice = inquirer.select(
|
||||
from InquirerPy import inquirer
|
||||
|
||||
from .editor import InteractiveConfigEditor
|
||||
from .generate import generate_config_ini_from_app_model
|
||||
|
||||
choice = inquirer.select( # type: ignore
|
||||
message="How would you like to proceed?",
|
||||
choices=[
|
||||
"Use default settings (Recommended for new users)",
|
||||
|
||||
@@ -4,7 +4,6 @@ from typing import Optional
|
||||
|
||||
import click
|
||||
from rich.console import Console
|
||||
from rich.panel import Panel
|
||||
from rich.progress import Progress, SpinnerColumn, TextColumn
|
||||
|
||||
console = Console()
|
||||
|
||||
@@ -36,7 +36,6 @@ class MediaRegistryService:
|
||||
self._index_file_modified_time = 0
|
||||
_lock_file = self.config.media_dir / "registry.lock"
|
||||
self._lock = FileLock(_lock_file)
|
||||
self._load_index()
|
||||
|
||||
def _ensure_directories(self) -> None:
|
||||
"""Ensure registry directories exist."""
|
||||
|
||||
@@ -63,22 +63,6 @@ def get_anime_titles(query: str, variables: dict = {}):
|
||||
return []
|
||||
|
||||
|
||||
def downloaded_anime_titles(ctx, param, incomplete):
|
||||
import os
|
||||
|
||||
from ..constants import USER_VIDEOS_DIR
|
||||
|
||||
try:
|
||||
titles = [
|
||||
title
|
||||
for title in os.listdir(USER_VIDEOS_DIR)
|
||||
if title.lower().startswith(incomplete.lower()) or not incomplete
|
||||
]
|
||||
return titles
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
|
||||
def anime_titles_shell_complete(ctx, param, incomplete):
|
||||
incomplete = incomplete.strip()
|
||||
if not incomplete:
|
||||
|
||||
0
fastanime/core/__init__.py
Normal file
0
fastanime/core/__init__.py
Normal file
@@ -1,5 +1,5 @@
|
||||
# GeneralConfig
|
||||
from fastanime.core.config.defaults import SESSIONS_DIR
|
||||
from .defaults import SESSIONS_DIR
|
||||
|
||||
GENERAL_PYGMENT_STYLE = "The pygment style to use"
|
||||
GENERAL_API_CLIENT = "The media database API to use (e.g., 'anilist', 'jikan')."
|
||||
|
||||
@@ -3,7 +3,7 @@ import os
|
||||
import time
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
from typing import IO, Any, BinaryIO, TextIO, Union
|
||||
from typing import IO, Any, Union
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import abc
|
||||
from typing import Any, Optional
|
||||
|
||||
from httpx import Client
|
||||
from typing import TYPE_CHECKING, Any, Optional, Union
|
||||
|
||||
from ...core.config import AnilistConfig
|
||||
from .params import (
|
||||
@@ -11,13 +9,16 @@ from .params import (
|
||||
)
|
||||
from .types import MediaSearchResult, UserProfile
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from httpx import Client
|
||||
|
||||
|
||||
class BaseApiClient(abc.ABC):
|
||||
"""
|
||||
Abstract Base Class defining a generic contract for media database APIs.
|
||||
"""
|
||||
|
||||
def __init__(self, config: AnilistConfig | Any, client: Client):
|
||||
def __init__(self, config: AnilistConfig | Any, client: "Client"):
|
||||
self.config = config
|
||||
self.http_client = client
|
||||
|
||||
|
||||
Reference in New Issue
Block a user