diff --git a/viu_media/libs/provider/manga/MangaProvider.py b/viu_media/libs/provider/manga/MangaProvider.py deleted file mode 100644 index 4db3bdf..0000000 --- a/viu_media/libs/provider/manga/MangaProvider.py +++ /dev/null @@ -1,105 +0,0 @@ -"""An abstraction over all providers offering added features with a simple and well typed api - -[TODO:description] -""" - -import importlib -import logging -from typing import TYPE_CHECKING - -from .libs.manga_provider import manga_sources - -if TYPE_CHECKING: - pass - - -logger = logging.getLogger(__name__) - - -class MangaProvider: - """Class that manages all anime sources adding some extra functionality to them. - Attributes: - PROVIDERS: [TODO:attribute] - provider: [TODO:attribute] - provider: [TODO:attribute] - dynamic: [TODO:attribute] - retries: [TODO:attribute] - manga_provider: [TODO:attribute] - """ - - PROVIDERS = list(manga_sources.keys()) - provider = PROVIDERS[0] - - def __init__(self, provider="mangadex", dynamic=False, retries=0) -> None: - self.provider = provider - self.dynamic = dynamic - self.retries = retries - self.lazyload_provider(self.provider) - - def lazyload_provider(self, provider): - """updates the current provider being used""" - _, anime_provider_cls_name = manga_sources[provider].split(".", 1) - 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() - - def search_for_manga( - self, - user_query, - nsfw=True, - unknown=True, - ): - """core abstraction over all providers search functionality - - Args: - user_query ([TODO:parameter]): [TODO:description] - translation_type ([TODO:parameter]): [TODO:description] - nsfw ([TODO:parameter]): [TODO:description] - manga_provider ([TODO:parameter]): [TODO:description] - anilist_obj: [TODO:description] - - Returns: - [TODO:return] - """ - manga_provider = self.manga_provider - try: - results = manga_provider.search_for_manga(user_query, nsfw, unknown) - except Exception as e: - logger.error(e) - results = None - return results - - def get_manga( - self, - anime_id: str, - ): - """core abstraction over getting info of an anime from all providers - - Args: - anime_id: [TODO:description] - anilist_obj: [TODO:description] - - Returns: - [TODO:return] - """ - manga_provider = self.manga_provider - try: - results = manga_provider.get_manga(anime_id) - except Exception as e: - logger.error(e) - results = None - return results - - def get_chapter_thumbnails( - self, - manga_id: str, - chapter: str, - ): - manga_provider = self.manga_provider - try: - results = manga_provider.get_chapter_thumbnails(manga_id, chapter) - except Exception as e: - logger.error(e) - results = None - return results # pyright:ignore diff --git a/viu_media/libs/provider/manga/__init__.py b/viu_media/libs/provider/manga/__init__.py deleted file mode 100644 index a5c7e04..0000000 --- a/viu_media/libs/provider/manga/__init__.py +++ /dev/null @@ -1 +0,0 @@ -manga_sources = {"mangadex": "api.MangaDexApi"} diff --git a/viu_media/libs/provider/manga/base.py b/viu_media/libs/provider/manga/base.py deleted file mode 100644 index a4920ea..0000000 --- a/viu_media/libs/provider/manga/base.py +++ /dev/null @@ -1,18 +0,0 @@ -from httpx import Client -from ....core.utils.networking import random_user_agent - - -class MangaProvider: - session: Client - - USER_AGENT = random_user_agent() - HEADERS = {} - - def __init__(self) -> None: - self.session = Client( - headers={ - "User-Agent": self.USER_AGENT, - **self.HEADERS, - }, - timeout=10, - ) diff --git a/viu_media/libs/provider/manga/common.py b/viu_media/libs/provider/manga/common.py deleted file mode 100644 index 424ca4c..0000000 --- a/viu_media/libs/provider/manga/common.py +++ /dev/null @@ -1,15 +0,0 @@ -import logging - -from httpx import get - -logger = logging.getLogger(__name__) - - -def fetch_manga_info_from_bal(anilist_id): - try: - url = f"https://raw.githubusercontent.com/bal-mackup/mal-backup/master/anilist/manga/{anilist_id}.json" - response = get(url, timeout=11) - if response.ok: - return response.json() - except Exception as e: - logger.error(e) diff --git a/viu_media/libs/provider/manga/mangadex/__init__.py b/viu_media/libs/provider/manga/mangadex/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/viu_media/libs/provider/manga/mangadex/api.py b/viu_media/libs/provider/manga/mangadex/api.py deleted file mode 100644 index 237fbdb..0000000 --- a/viu_media/libs/provider/manga/mangadex/api.py +++ /dev/null @@ -1,51 +0,0 @@ -import logging - -from ...common.mini_anilist import search_for_manga_with_anilist -from ..base_provider import MangaProvider -from ..common import fetch_manga_info_from_bal - -logger = logging.getLogger(__name__) - - -class MangaDexApi(MangaProvider): - def search_for_manga(self, title: str, *args): - try: - search_results = search_for_manga_with_anilist(title) - return search_results - except Exception as e: - logger.error(f"[MANGADEX-ERROR]: {e}") - - def get_manga(self, anilist_manga_id: str): - bal_data = fetch_manga_info_from_bal(anilist_manga_id) - if not bal_data: - return - manga_id, MangaDexManga = next(iter(bal_data["Sites"]["Mangadex"].items())) - return { - "id": manga_id, - "title": MangaDexManga["title"], - "poster": MangaDexManga["image"], - "availableChapters": [], - } - - def get_chapter_thumbnails(self, manga_id, chapter): - chapter_info_url = f"https://api.mangadex.org/chapter?manga={manga_id}&translatedLanguage[]=en&chapter={chapter}&includeEmptyPages=0" - chapter_info_response = self.session.get(chapter_info_url) - if not chapter_info_response.ok: - return - chapter_info = next(iter(chapter_info_response.json()["data"])) - chapters_thumbnails_url = ( - f"https://api.mangadex.org/at-home/server/{chapter_info['id']}" - ) - chapter_thumbnails_response = self.session.get(chapters_thumbnails_url) - if not chapter_thumbnails_response.ok: - return - chapter_thumbnails_info = chapter_thumbnails_response.json() - base_url = chapter_thumbnails_info["baseUrl"] - hash = chapter_thumbnails_info["chapter"]["hash"] - return { - "thumbnails": [ - f"{base_url}/data/{hash}/{chapter_thumbnail}" - for chapter_thumbnail in chapter_thumbnails_info["chapter"]["data"] - ], - "title": chapter_info["attributes"]["title"], - }