feat: improve state models

This commit is contained in:
Benexl
2025-07-23 21:16:50 +03:00
parent 2067467134
commit f678fa13f0
27 changed files with 397 additions and 375 deletions

View File

@@ -18,11 +18,11 @@ if TYPE_CHECKING:
)
@click.pass_obj
def favourites(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
return MediaSearchParams(
per_page=config.anilist.per_page or 15,
sort=["FAVOURITES_DESC"]
)

View File

@@ -18,11 +18,11 @@ if TYPE_CHECKING:
)
@click.pass_obj
def popular(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
return MediaSearchParams(
per_page=config.anilist.per_page or 15,
sort=["POPULARITY_DESC"]
)

View File

@@ -24,7 +24,7 @@ def random_anime(config: "AppConfig", dump_json: bool):
from fastanime.cli.utils.feedback import create_feedback_manager
from fastanime.core.exceptions import FastAnimeError
from fastanime.libs.api.factory import create_api_client
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from rich.progress import Progress
feedback = create_feedback_manager(config.general.icons)
@@ -39,7 +39,7 @@ def random_anime(config: "AppConfig", dump_json: bool):
# Search for random anime
with Progress() as progress:
progress.add_task("Fetching random anime...", total=None)
search_params = ApiSearchParams(id_in=random_ids, per_page=50)
search_params = MediaSearchParams(id_in=random_ids, per_page=50)
search_result = api_client.search_media(search_params)
if not search_result or not search_result.media:

View File

@@ -18,11 +18,11 @@ if TYPE_CHECKING:
)
@click.pass_obj
def recent(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
return MediaSearchParams(
per_page=config.anilist.per_page or 15,
sort=["UPDATED_AT_DESC"],
status_in=["RELEASING"]

View File

@@ -18,11 +18,11 @@ if TYPE_CHECKING:
)
@click.pass_obj
def scores(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
return MediaSearchParams(
per_page=config.anilist.per_page or 15,
sort=["SCORE_DESC"]
)

View File

@@ -98,7 +98,7 @@ def search(
from fastanime.cli.utils.feedback import create_feedback_manager
from fastanime.core.exceptions import FastAnimeError
from fastanime.libs.api.factory import create_api_client
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from rich.progress import Progress
feedback = create_feedback_manager(config.general.icons)
@@ -108,7 +108,7 @@ def search(
api_client = create_api_client(config.general.media_api, config)
# Build search parameters
search_params = ApiSearchParams(
search_params = MediaSearchParams(
query=title,
per_page=config.anilist.per_page or 50,
sort=[sort] if sort else None,

View File

@@ -18,13 +18,13 @@ if TYPE_CHECKING:
)
@click.pass_obj
def trending(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
per_page=config.anilist.per_page or 15,
sort=["TRENDING_DESC"]
return MediaSearchParams(
per_page=config.anilist.per_page or 15, sort=["TRENDING_DESC"]
)
handle_media_search_command(
@@ -32,5 +32,5 @@ def trending(config: "AppConfig", dump_json: bool):
dump_json=dump_json,
task_name="Fetching trending anime...",
search_params_factory=create_search_params,
empty_message="No trending anime found"
empty_message="No trending anime found",
)

View File

@@ -18,11 +18,11 @@ if TYPE_CHECKING:
)
@click.pass_obj
def upcoming(config: "AppConfig", dump_json: bool):
from fastanime.libs.api.params import ApiSearchParams
from fastanime.libs.api.params import MediaSearchParams
from ..helpers import handle_media_search_command
def create_search_params(config):
return ApiSearchParams(
return MediaSearchParams(
per_page=config.anilist.per_page or 15,
sort=["POPULARITY_DESC"],
status_in=["NOT_YET_RELEASED"]

View File

@@ -119,7 +119,7 @@ def handle_user_list_command(
"""
from fastanime.cli.utils.feedback import create_feedback_manager
from fastanime.core.exceptions import FastAnimeError
from fastanime.libs.api.params import UserListParams
from fastanime.libs.api.params import UserMediaListSearchParams
feedback = create_feedback_manager(config.general.icons)
@@ -145,7 +145,7 @@ def handle_user_list_command(
# Fetch user's anime list
with Progress() as progress:
progress.add_task(f"Fetching your {list_name} list...", total=None)
list_params = UserListParams(
list_params = UserMediaListSearchParams(
status=status, # type: ignore # We validated it above
page=1,
per_page=config.anilist.per_page or 50,