From eddaad64e71fdd9f1db3b41ca3abd62f3aa54e8e Mon Sep 17 00:00:00 2001 From: Benexl Date: Mon, 18 Aug 2025 01:07:36 +0300 Subject: [PATCH] chore: viu media is better --- README.md | 18 ++++++------- pyproject.toml | 4 +-- viu | 2 +- viu_cli/cli/cli.py | 2 +- viu_cli/cli/commands/anilist/cmd.py | 2 +- .../cli/commands/anilist/commands/download.py | 26 +++++++++---------- .../anilist/commands/notifications.py | 6 ++--- .../cli/commands/anilist/commands/stats.py | 2 +- viu_cli/cli/commands/download.py | 4 +-- viu_cli/cli/commands/queue.py | 22 ++++++++-------- viu_cli/cli/commands/queue/cmd.py | 2 +- viu_cli/cli/commands/queue/commands/add.py | 24 ++++++++--------- viu_cli/cli/commands/queue/commands/clear.py | 8 +++--- viu_cli/cli/commands/queue/commands/list.py | 8 +++--- viu_cli/cli/commands/queue/commands/resume.py | 12 ++++----- viu_cli/cli/commands/registry/cmd.py | 2 +- .../cli/commands/registry/commands/sync.py | 4 +-- viu_cli/cli/commands/search.py | 6 ++--- viu_cli/cli/commands/worker.py | 18 ++++++------- .../menu/media/download_episodes.py | 2 +- .../interactive/menu/media/provider_search.py | 2 +- viu_cli/cli/interactive/session.py | 2 +- viu_cli/cli/service/download/service.py | 2 +- viu_cli/cli/service/notification/service.py | 12 ++++----- viu_cli/cli/service/worker/service.py | 6 ++--- viu_cli/cli/utils/search.py | 8 +++--- viu_cli/core/constants.py | 2 +- viu_cli/core/utils/fuzzy.py | 6 ++--- viu_cli/libs/media_api/api.py | 4 +-- viu_cli/libs/media_api/utils/debug.py | 2 +- viu_cli/libs/provider/anime/provider.py | 2 +- viu_cli/libs/provider/manga/MangaProvider.py | 2 +- 32 files changed, 112 insertions(+), 112 deletions(-) mode change 100755 => 100644 viu diff --git a/README.md b/README.md index bed8644..38fb69e 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@

-[![PyPI - Version](https://img.shields.io/pypi/v/viu_cli)](https://pypi.org/project/viu_cli/) -[![PyPI - Downloads](https://img.shields.io/pypi/dm/viu_cli)](https://pypi.org/project/viu_cli/) +[![PyPI - Version](https://img.shields.io/pypi/v/viu-media)](https://pypi.org/project/viu-media/) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/viu-media)](https://pypi.org/project/viu-media/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/Benexl/Viu/test.yml?label=Tests)](https://github.com/Benexl/Viu/actions) [![Discord](https://img.shields.io/discord/1250887070906323096?label=Discord&logo=discord)](https://discord.gg/HBEmAwvbHV) [![GitHub Issues](https://img.shields.io/github/issues/Benexl/Viu)](https://github.com/Benexl/Viu/issues) @@ -69,13 +69,13 @@ The best way to install Viu is with [**uv**](https://github.com/astral-sh/uv), a ```bash # Install with all optional features for the full experience -uv tool install "viu_cli[standard]" +uv tool install "viu-media[standard]" # Or, pick and choose the extras you need: -uv tool install viu_cli # Core functionality only -uv tool install "viu_cli[download]" # For advanced downloading with yt-dlp -uv tool install "viu_cli[discord]" # For Discord Rich Presence -uv tool install "viu_cli[notifications]" # For desktop notifications +uv tool install viu-media # Core functionality only +uv tool install "viu-media[download]" # For advanced downloading with yt-dlp +uv tool install "viu-media[discord]" # For Discord Rich Presence +uv tool install "viu-media[notifications]" # For desktop notifications ``` ### Other Installation Methods @@ -100,12 +100,12 @@ uv tool install "viu_cli[notifications]" # For desktop notifications #### Using pipx (for isolated environments) ```bash - pipx install "viu_cli[standard]" + pipx install "viu-media[standard]" ``` #### Using pip ```bash - pip install "viu_cli[standard]" + pip install "viu-media[standard]" ``` diff --git a/pyproject.toml b/pyproject.toml index 1a3c2f6..380344e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "viu_cli" +name = "viu-media" version = "3.2.6" description = "A browser anime site experience from the terminal" license = "UNLICENSE" @@ -14,7 +14,7 @@ dependencies = [ ] [project.scripts] -viu = 'viu_cli:Cli' +viu = 'viu_media:Cli' [project.optional-dependencies] standard = [ diff --git a/viu b/viu old mode 100755 new mode 100644 index 6b0089e..1add634 --- a/viu +++ b/viu @@ -3,4 +3,4 @@ provider_type=$1 provider_name=$2 [ -z "$provider_type" ] && echo "Please specify provider type" && exit [ -z "$provider_name" ] && echo "Please specify provider type" && exit -uv run python -m viu_cli.libs.provider.${provider_type}.${provider_name}.provider +uv run python -m viu_media.libs.provider.${provider_type}.${provider_name}.provider diff --git a/viu_cli/cli/cli.py b/viu_cli/cli/cli.py index f4bb3ef..244b5a7 100644 --- a/viu_cli/cli/cli.py +++ b/viu_cli/cli/cli.py @@ -44,7 +44,7 @@ commands = { @click.group( cls=LazyGroup, - root="viu_cli.cli.commands", + root="viu_media.cli.commands", invoke_without_command=True, lazy_subcommands=commands, context_settings=dict(auto_envvar_prefix=PROJECT_NAME), diff --git a/viu_cli/cli/commands/anilist/cmd.py b/viu_cli/cli/commands/anilist/cmd.py index 1a0c40e..11c400c 100644 --- a/viu_cli/cli/commands/anilist/cmd.py +++ b/viu_cli/cli/commands/anilist/cmd.py @@ -18,7 +18,7 @@ commands = { @click.group( cls=LazyGroup, name="anilist", - root="viu_cli.cli.commands.anilist.commands", + root="viu_media.cli.commands.anilist.commands", invoke_without_command=True, help="A beautiful interface that gives you access to a commplete streaming experience", short_help="Access all streaming options", diff --git a/viu_cli/cli/commands/anilist/commands/download.py b/viu_cli/cli/commands/anilist/commands/download.py index 91e0974..a01fdc7 100644 --- a/viu_cli/cli/commands/anilist/commands/download.py +++ b/viu_cli/cli/commands/anilist/commands/download.py @@ -1,10 +1,10 @@ from typing import TYPE_CHECKING, Dict, List import click -from viu_cli.cli.utils.completion import anime_titles_shell_complete -from viu_cli.core.config import AppConfig -from viu_cli.core.exceptions import ViuError -from viu_cli.libs.media_api.types import ( +from viu_media.cli.utils.completion import anime_titles_shell_complete +from viu_media.core.config import AppConfig +from viu_media.core.exceptions import ViuError +from viu_media.libs.media_api.types import ( MediaFormat, MediaGenre, MediaItem, @@ -112,15 +112,15 @@ if TYPE_CHECKING: ) @click.pass_obj def download(config: AppConfig, **options: "Unpack[DownloadOptions]"): - from viu_cli.cli.service.download.service import DownloadService - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.cli.service.watch_history import WatchHistoryService - from viu_cli.cli.utils.parser import parse_episode_range - from viu_cli.libs.media_api.api import create_api_client - from viu_cli.libs.media_api.params import MediaSearchParams - from viu_cli.libs.provider.anime.provider import create_provider - from viu_cli.libs.selectors import create_selector + from viu_media.cli.service.download.service import DownloadService + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.cli.service.watch_history import WatchHistoryService + from viu_media.cli.utils.parser import parse_episode_range + from viu_media.libs.media_api.api import create_api_client + from viu_media.libs.media_api.params import MediaSearchParams + from viu_media.libs.provider.anime.provider import create_provider + from viu_media.libs.selectors import create_selector from rich.progress import Progress feedback = FeedbackService(config) diff --git a/viu_cli/cli/commands/anilist/commands/notifications.py b/viu_cli/cli/commands/anilist/commands/notifications.py index c2b492c..b83e863 100644 --- a/viu_cli/cli/commands/anilist/commands/notifications.py +++ b/viu_cli/cli/commands/anilist/commands/notifications.py @@ -1,5 +1,5 @@ import click -from viu_cli.core.config import AppConfig +from viu_media.core.config import AppConfig from rich.console import Console from rich.table import Table @@ -11,8 +11,8 @@ def notifications(config: AppConfig): Displays unread notifications from AniList. Running this command will also mark the notifications as read on the AniList website. """ - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.libs.media_api.api import create_api_client + from viu_media.cli.service.feedback import FeedbackService + from viu_media.libs.media_api.api import create_api_client from ....service.auth import AuthService diff --git a/viu_cli/cli/commands/anilist/commands/stats.py b/viu_cli/cli/commands/anilist/commands/stats.py index 082a7f7..49f8238 100644 --- a/viu_cli/cli/commands/anilist/commands/stats.py +++ b/viu_cli/cli/commands/anilist/commands/stats.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING import click if TYPE_CHECKING: - from viu_cli.core.config import AppConfig + from viu_media.core.config import AppConfig @click.command(help="Print out your anilist stats") diff --git a/viu_cli/cli/commands/download.py b/viu_cli/cli/commands/download.py index e073021..91b80a7 100644 --- a/viu_cli/cli/commands/download.py +++ b/viu_cli/cli/commands/download.py @@ -11,7 +11,7 @@ if TYPE_CHECKING: from pathlib import Path from typing import TypedDict - from viu_cli.cli.service.feedback.service import FeedbackService + from viu_media.cli.service.feedback.service import FeedbackService from typing_extensions import Unpack from ...libs.provider.anime.base import BaseAnimeProvider @@ -103,7 +103,7 @@ if TYPE_CHECKING: ) @click.pass_obj def download(config: AppConfig, **options: "Unpack[Options]"): - from viu_cli.cli.service.feedback.service import FeedbackService + from viu_media.cli.service.feedback.service import FeedbackService from ...core.exceptions import ViuError from ...libs.provider.anime.params import ( diff --git a/viu_cli/cli/commands/queue.py b/viu_cli/cli/commands/queue.py index 7d82afb..01f67af 100644 --- a/viu_cli/cli/commands/queue.py +++ b/viu_cli/cli/commands/queue.py @@ -1,7 +1,7 @@ import click -from viu_cli.core.config import AppConfig -from viu_cli.core.exceptions import ViuError -from viu_cli.libs.media_api.types import ( +from viu_media.core.config import AppConfig +from viu_media.core.exceptions import ViuError +from viu_media.libs.media_api.types import ( MediaFormat, MediaGenre, MediaItem, @@ -76,14 +76,14 @@ def queue(config: AppConfig, **options): and queue the specified episode range for background download. The background worker should be running to process the queue. """ - from viu_cli.cli.service.download.service import DownloadService - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.cli.utils.parser import parse_episode_range - from viu_cli.libs.media_api.params import MediaSearchParams - from viu_cli.libs.media_api.api import create_api_client - from viu_cli.libs.provider.anime.provider import create_provider - from viu_cli.libs.selectors import create_selector + from viu_media.cli.service.download.service import DownloadService + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.cli.utils.parser import parse_episode_range + from viu_media.libs.media_api.params import MediaSearchParams + from viu_media.libs.media_api.api import create_api_client + from viu_media.libs.provider.anime.provider import create_provider + from viu_media.libs.selectors import create_selector from rich.progress import Progress feedback = FeedbackService(config) diff --git a/viu_cli/cli/commands/queue/cmd.py b/viu_cli/cli/commands/queue/cmd.py index 2cf1ecd..8d98938 100644 --- a/viu_cli/cli/commands/queue/cmd.py +++ b/viu_cli/cli/commands/queue/cmd.py @@ -13,7 +13,7 @@ commands = { @click.group( cls=LazyGroup, name="queue", - root="viu_cli.cli.commands.queue.commands", + root="viu_media.cli.commands.queue.commands", invoke_without_command=False, help="Manage the download queue (add, list, resume, clear).", short_help="Manage the download queue.", diff --git a/viu_cli/cli/commands/queue/commands/add.py b/viu_cli/cli/commands/queue/commands/add.py index 45a8da1..c86c62f 100644 --- a/viu_cli/cli/commands/queue/commands/add.py +++ b/viu_cli/cli/commands/queue/commands/add.py @@ -1,7 +1,7 @@ import click -from viu_cli.core.config import AppConfig -from viu_cli.core.exceptions import ViuError -from viu_cli.libs.media_api.types import ( +from viu_media.core.config import AppConfig +from viu_media.core.exceptions import ViuError +from viu_media.libs.media_api.types import ( MediaFormat, MediaGenre, MediaItem, @@ -70,14 +70,14 @@ from viu_cli.libs.media_api.types import ( ) @click.pass_obj def add(config: AppConfig, **options): - from viu_cli.cli.service.download import DownloadService - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.cli.utils.parser import parse_episode_range - from viu_cli.libs.media_api.api import create_api_client - from viu_cli.libs.media_api.params import MediaSearchParams - from viu_cli.libs.provider.anime.provider import create_provider - from viu_cli.libs.selectors import create_selector + from viu_media.cli.service.download import DownloadService + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.cli.utils.parser import parse_episode_range + from viu_media.libs.media_api.api import create_api_client + from viu_media.libs.media_api.params import MediaSearchParams + from viu_media.libs.provider.anime.provider import create_provider + from viu_media.libs.selectors import create_selector from rich.progress import Progress feedback = FeedbackService(config) @@ -149,7 +149,7 @@ def add(config: AppConfig, **options): } preview_command = None if config.general.preview != "none": - from viu_cli.cli.utils.preview import create_preview_context + from viu_media.cli.utils.preview import create_preview_context with create_preview_context() as preview_ctx: preview_command = preview_ctx.get_anime_preview( diff --git a/viu_cli/cli/commands/queue/commands/clear.py b/viu_cli/cli/commands/queue/commands/clear.py index 49df146..9a82611 100644 --- a/viu_cli/cli/commands/queue/commands/clear.py +++ b/viu_cli/cli/commands/queue/commands/clear.py @@ -1,5 +1,5 @@ import click -from viu_cli.core.config import AppConfig +from viu_media.core.config import AppConfig @click.command( @@ -9,9 +9,9 @@ from viu_cli.core.config import AppConfig @click.option("--force", is_flag=True, help="Do not prompt for confirmation.") @click.pass_obj def clear_cmd(config: AppConfig, force: bool): - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.cli.service.registry.models import DownloadStatus + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.cli.service.registry.models import DownloadStatus feedback = FeedbackService(config) registry = MediaRegistryService(config.general.media_api, config.media_registry) diff --git a/viu_cli/cli/commands/queue/commands/list.py b/viu_cli/cli/commands/queue/commands/list.py index a252a84..25010b9 100644 --- a/viu_cli/cli/commands/queue/commands/list.py +++ b/viu_cli/cli/commands/queue/commands/list.py @@ -1,5 +1,5 @@ import click -from viu_cli.core.config import AppConfig +from viu_media.core.config import AppConfig @click.command(name="list", help="List items in the download queue and their statuses.") @@ -10,9 +10,9 @@ from viu_cli.core.config import AppConfig @click.option("--detailed", is_flag=True) @click.pass_obj def list_cmd(config: AppConfig, status: str | None, detailed: bool | None): - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.cli.service.registry.models import DownloadStatus + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.cli.service.registry.models import DownloadStatus feedback = FeedbackService(config) registry = MediaRegistryService(config.general.media_api, config.media_registry) diff --git a/viu_cli/cli/commands/queue/commands/resume.py b/viu_cli/cli/commands/queue/commands/resume.py index d6f79f6..077301e 100644 --- a/viu_cli/cli/commands/queue/commands/resume.py +++ b/viu_cli/cli/commands/queue/commands/resume.py @@ -1,5 +1,5 @@ import click -from viu_cli.core.config import AppConfig +from viu_media.core.config import AppConfig @click.command( @@ -7,11 +7,11 @@ from viu_cli.core.config import AppConfig ) @click.pass_obj def resume(config: AppConfig): - from viu_cli.cli.service.download.service import DownloadService - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.registry import MediaRegistryService - from viu_cli.libs.media_api.api import create_api_client - from viu_cli.libs.provider.anime.provider import create_provider + from viu_media.cli.service.download.service import DownloadService + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.registry import MediaRegistryService + from viu_media.libs.media_api.api import create_api_client + from viu_media.libs.provider.anime.provider import create_provider feedback = FeedbackService(config) media_api = create_api_client(config.general.media_api, config) diff --git a/viu_cli/cli/commands/registry/cmd.py b/viu_cli/cli/commands/registry/cmd.py index 40ea7ef..94ef8fa 100644 --- a/viu_cli/cli/commands/registry/cmd.py +++ b/viu_cli/cli/commands/registry/cmd.py @@ -19,7 +19,7 @@ commands = { @click.group( cls=LazyGroup, name="registry", - root="viu_cli.cli.commands.registry.commands", + root="viu_media.cli.commands.registry.commands", invoke_without_command=True, help="Manage your local media registry - sync, search, backup and maintain your anime database", short_help="Local media registry management", diff --git a/viu_cli/cli/commands/registry/commands/sync.py b/viu_cli/cli/commands/registry/commands/sync.py index 89a7790..efdba00 100644 --- a/viu_cli/cli/commands/registry/commands/sync.py +++ b/viu_cli/cli/commands/registry/commands/sync.py @@ -3,8 +3,8 @@ Registry sync command - synchronize local registry with remote media API """ import click -from viu_cli.cli.service.feedback.service import FeedbackService -from viu_cli.cli.service.registry.service import MediaRegistryService +from viu_media.cli.service.feedback.service import FeedbackService +from viu_media.cli.service.registry.service import MediaRegistryService from .....core.config import AppConfig diff --git a/viu_cli/cli/commands/search.py b/viu_cli/cli/commands/search.py index 84b0fc9..63ccc16 100644 --- a/viu_cli/cli/commands/search.py +++ b/viu_cli/cli/commands/search.py @@ -10,7 +10,7 @@ from . import examples if TYPE_CHECKING: from typing import TypedDict - from viu_cli.cli.service.feedback.service import FeedbackService + from viu_media.cli.service.feedback.service import FeedbackService from typing_extensions import Unpack from ...libs.provider.anime.base import BaseAnimeProvider @@ -42,7 +42,7 @@ if TYPE_CHECKING: ) @click.pass_obj def search(config: AppConfig, **options: "Unpack[Options]"): - from viu_cli.cli.service.feedback.service import FeedbackService + from viu_media.cli.service.feedback.service import FeedbackService from ...core.exceptions import ViuError from ...libs.provider.anime.params import ( @@ -134,7 +134,7 @@ def stream_anime( episode: str, anime_title: str, ): - from viu_cli.cli.service.player.service import PlayerService + from viu_media.cli.service.player.service import PlayerService from ...libs.player.params import PlayerParams from ...libs.provider.anime.params import EpisodeStreamsParams diff --git a/viu_cli/cli/commands/worker.py b/viu_cli/cli/commands/worker.py index f46f18c..fa0eb73 100644 --- a/viu_cli/cli/commands/worker.py +++ b/viu_cli/cli/commands/worker.py @@ -1,5 +1,5 @@ import click -from viu_cli.core.config import AppConfig +from viu_media.core.config import AppConfig @click.command(help="Run the background worker for notifications and downloads.") @@ -11,14 +11,14 @@ def worker(config: AppConfig): process any queued downloads. It's recommended to run this in the background (e.g., 'viu worker &') or as a system service. """ - from viu_cli.cli.service.auth import AuthService - from viu_cli.cli.service.download.service import DownloadService - from viu_cli.cli.service.feedback import FeedbackService - from viu_cli.cli.service.notification.service import NotificationService - from viu_cli.cli.service.registry.service import MediaRegistryService - from viu_cli.cli.service.worker.service import BackgroundWorkerService - from viu_cli.libs.media_api.api import create_api_client - from viu_cli.libs.provider.anime.provider import create_provider + from viu_media.cli.service.auth import AuthService + from viu_media.cli.service.download.service import DownloadService + from viu_media.cli.service.feedback import FeedbackService + from viu_media.cli.service.notification.service import NotificationService + from viu_media.cli.service.registry.service import MediaRegistryService + from viu_media.cli.service.worker.service import BackgroundWorkerService + from viu_media.libs.media_api.api import create_api_client + from viu_media.libs.provider.anime.provider import create_provider feedback = FeedbackService(config) if not config.worker.enabled: diff --git a/viu_cli/cli/interactive/menu/media/download_episodes.py b/viu_cli/cli/interactive/menu/media/download_episodes.py index 2027b14..5de2978 100644 --- a/viu_cli/cli/interactive/menu/media/download_episodes.py +++ b/viu_cli/cli/interactive/menu/media/download_episodes.py @@ -6,7 +6,7 @@ from ...state import InternalDirective, State @session.menu def download_episodes(ctx: Context, state: State) -> State | InternalDirective: """Menu to select and download episodes synchronously.""" - from viu_cli.cli.utils.search import find_best_match_title + from viu_media.cli.utils.search import find_best_match_title from .....core.utils.normalizer import normalize_title from ....service.download.service import DownloadService diff --git a/viu_cli/cli/interactive/menu/media/provider_search.py b/viu_cli/cli/interactive/menu/media/provider_search.py index 3e47ee3..47b99ae 100644 --- a/viu_cli/cli/interactive/menu/media/provider_search.py +++ b/viu_cli/cli/interactive/menu/media/provider_search.py @@ -6,7 +6,7 @@ from ...state import InternalDirective, MenuName, ProviderState, State @session.menu def provider_search(ctx: Context, state: State) -> State | InternalDirective: - from viu_cli.cli.utils.search import find_best_match_title + from viu_media.cli.utils.search import find_best_match_title from .....core.utils.normalizer import normalize_title, update_user_normalizer_json diff --git a/viu_cli/cli/interactive/session.py b/viu_cli/cli/interactive/session.py index ab52032..f1573ea 100644 --- a/viu_cli/cli/interactive/session.py +++ b/viu_cli/cli/interactive/session.py @@ -317,7 +317,7 @@ class Session: if filename.endswith(".py") and not filename.startswith("__"): module_name = filename[:-3] full_module_name = ( - f"viu_cli.cli.interactive.menu.{package_name}.{module_name}" + f"viu_media.cli.interactive.menu.{package_name}.{module_name}" ) file_path = package_path / filename diff --git a/viu_cli/cli/service/download/service.py b/viu_cli/cli/service/download/service.py index 306ef8a..7e82ed5 100644 --- a/viu_cli/cli/service/download/service.py +++ b/viu_cli/cli/service/download/service.py @@ -2,7 +2,7 @@ import logging from pathlib import Path from typing import TYPE_CHECKING, List -from viu_cli.cli.utils.search import find_best_match_title +from viu_media.cli.utils.search import find_best_match_title from ....core.config.model import AppConfig from ....core.constants import APP_CACHE_DIR diff --git a/viu_cli/cli/service/notification/service.py b/viu_cli/cli/service/notification/service.py index 9e79b70..08da5ef 100644 --- a/viu_cli/cli/service/notification/service.py +++ b/viu_cli/cli/service/notification/service.py @@ -3,12 +3,12 @@ from pathlib import Path from typing import Optional import httpx -from viu_cli.cli.service.registry import MediaRegistryService -from viu_cli.cli.service.registry.models import DownloadStatus -from viu_cli.core.config.model import AppConfig -from viu_cli.core.constants import APP_CACHE_DIR -from viu_cli.libs.media_api.base import BaseApiClient -from viu_cli.libs.media_api.types import MediaItem, Notification +from viu_media.cli.service.registry import MediaRegistryService +from viu_media.cli.service.registry.models import DownloadStatus +from viu_media.core.config.model import AppConfig +from viu_media.core.constants import APP_CACHE_DIR +from viu_media.libs.media_api.base import BaseApiClient +from viu_media.libs.media_api.types import MediaItem, Notification try: from plyer import notification as plyer_notification diff --git a/viu_cli/cli/service/worker/service.py b/viu_cli/cli/service/worker/service.py index 1131abf..1b46db9 100644 --- a/viu_cli/cli/service/worker/service.py +++ b/viu_cli/cli/service/worker/service.py @@ -4,9 +4,9 @@ import threading import time from typing import Optional -from viu_cli.cli.service.download.service import DownloadService -from viu_cli.cli.service.notification.service import NotificationService -from viu_cli.core.config.model import WorkerConfig +from viu_media.cli.service.download.service import DownloadService +from viu_media.cli.service.notification.service import NotificationService +from viu_media.core.config.model import WorkerConfig logger = logging.getLogger(__name__) diff --git a/viu_cli/cli/utils/search.py b/viu_cli/cli/utils/search.py index c32c506..4739d79 100644 --- a/viu_cli/cli/utils/search.py +++ b/viu_cli/cli/utils/search.py @@ -1,9 +1,9 @@ """Search functionality.""" -from viu_cli.core.utils.fuzzy import fuzz -from viu_cli.core.utils.normalizer import normalize_title -from viu_cli.libs.provider.anime.types import SearchResult, ProviderName -from viu_cli.libs.media_api.types import MediaItem +from viu_media.core.utils.fuzzy import fuzz +from viu_media.core.utils.normalizer import normalize_title +from viu_media.libs.provider.anime.types import SearchResult, ProviderName +from viu_media.libs.media_api.types import MediaItem def find_best_match_title( diff --git a/viu_cli/core/constants.py b/viu_cli/core/constants.py index 8594fad..155ec4d 100644 --- a/viu_cli/core/constants.py +++ b/viu_cli/core/constants.py @@ -10,7 +10,7 @@ APP_NAME = os.environ.get(f"{PROJECT_NAME}_APP_NAME", PROJECT_NAME_LOWER) USER_NAME = os.environ.get("USERNAME", "User") -__version__ = metadata.version("viu_cli") +__version__ = metadata.version("viu_media") AUTHOR = "Benexl" GIT_REPO = "github.com" diff --git a/viu_cli/core/utils/fuzzy.py b/viu_cli/core/utils/fuzzy.py index 8038bce..b59cc66 100644 --- a/viu_cli/core/utils/fuzzy.py +++ b/viu_cli/core/utils/fuzzy.py @@ -7,7 +7,7 @@ otherwise falls back to a pure Python implementation with the same API. Usage: Basic usage with the convenience functions: - >>> from viu_cli.core.utils.fuzzy import fuzz + >>> from viu_media.core.utils.fuzzy import fuzz >>> fuzz.ratio("hello world", "hello") 62 >>> fuzz.partial_ratio("hello world", "hello") @@ -15,7 +15,7 @@ Usage: Using the FuzzyMatcher class directly: - >>> from viu_cli.core.utils.fuzzy import FuzzyMatcher + >>> from viu_media.core.utils.fuzzy import FuzzyMatcher >>> matcher = FuzzyMatcher() >>> matcher.backend 'thefuzz' # or 'pure_python' if thefuzz is not available @@ -24,7 +24,7 @@ Usage: For drop-in replacement of thefuzz.fuzz: - >>> from viu_cli.core.utils.fuzzy import ratio, partial_ratio + >>> from viu_media.core.utils.fuzzy import ratio, partial_ratio >>> ratio("test", "best") 75 """ diff --git a/viu_cli/libs/media_api/api.py b/viu_cli/libs/media_api/api.py index 3e21bf0..6fe9954 100644 --- a/viu_cli/libs/media_api/api.py +++ b/viu_cli/libs/media_api/api.py @@ -16,8 +16,8 @@ logger = logging.getLogger(__name__) # Map the client name to its import path AND the config section it needs. API_CLIENTS = { - "anilist": ("viu_cli.libs.media_api.anilist.api.AniListApi", "anilist"), - "jikan": ("viu_cli.libs.media_api.jikan.api.JikanApi", "jikan"), # For the future + "anilist": ("viu_media.libs.media_api.anilist.api.AniListApi", "anilist"), + "jikan": ("viu_media.libs.media_api.jikan.api.JikanApi", "jikan"), # For the future } diff --git a/viu_cli/libs/media_api/utils/debug.py b/viu_cli/libs/media_api/utils/debug.py index 9226aa9..2f4fa0c 100644 --- a/viu_cli/libs/media_api/utils/debug.py +++ b/viu_cli/libs/media_api/utils/debug.py @@ -25,7 +25,7 @@ def test_media_api(api_client: BaseApiClient): api_client: An instance of AniListApi to test Usage: - Run this module directly: python -m viu_cli.libs.media_api.anilist.api + Run this module directly: python -m viu_media.libs.media_api.anilist.api Or import and call: test_media_api(AniListApi(config, client)) """ from ....core.constants import APP_ASCII_ART diff --git a/viu_cli/libs/provider/anime/provider.py b/viu_cli/libs/provider/anime/provider.py index 210c9f7..1ef2ee8 100644 --- a/viu_cli/libs/provider/anime/provider.py +++ b/viu_cli/libs/provider/anime/provider.py @@ -45,7 +45,7 @@ class AnimeProviderFactory: module_name, class_name = import_path.split(".", 1) # Construct the full package path for dynamic import - package_path = f"viu_cli.libs.provider.anime.{provider_name.value.lower()}" + package_path = f"viu_media.libs.provider.anime.{provider_name.value.lower()}" try: provider_module = importlib.import_module(f".{module_name}", package_path) diff --git a/viu_cli/libs/provider/manga/MangaProvider.py b/viu_cli/libs/provider/manga/MangaProvider.py index 8d540f7..4db3bdf 100644 --- a/viu_cli/libs/provider/manga/MangaProvider.py +++ b/viu_cli/libs/provider/manga/MangaProvider.py @@ -39,7 +39,7 @@ class MangaProvider: def lazyload_provider(self, provider): """updates the current provider being used""" _, anime_provider_cls_name = manga_sources[provider].split(".", 1) - package = f"viu_cli.libs.manga_provider.{provider}" + package = f"viu_media.libs.manga_provider.{provider}" provider_api = importlib.import_module(".api", package) manga_provider = getattr(provider_api, anime_provider_cls_name) self.manga_provider = manga_provider()