From c11a19608638c5d32b8e23cb147f378a659cc008 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Mon, 6 Jan 2025 16:39:56 +0200 Subject: [PATCH] 7.2.1 Bug fixes --- HdRezkaApi/{HdRezkaApi.py => __init__.py} | 33 ++++++++++++----------- HdRezkaApi/utils/errors.py | 8 ++++++ HdRezkaApi/utils/types.py | 5 ++++ README.md | 2 +- 4 files changed, 31 insertions(+), 17 deletions(-) rename HdRezkaApi/{HdRezkaApi.py => __init__.py} (91%) create mode 100644 HdRezkaApi/utils/errors.py diff --git a/HdRezkaApi/HdRezkaApi.py b/HdRezkaApi/__init__.py similarity index 91% rename from HdRezkaApi/HdRezkaApi.py rename to HdRezkaApi/__init__.py index 11df280..f8ba50b 100644 --- a/HdRezkaApi/HdRezkaApi.py +++ b/HdRezkaApi/__init__.py @@ -6,22 +6,14 @@ from urllib.parse import urlparse import time -try: - from utils.types import (HdRezkaTVSeries, HdRezkaMovie, HdRezkaRating) - from utils.stream import HdRezkaStream -except ImportError: - from .utils.types import (HdRezkaTVSeries, HdRezkaMovie, HdRezkaRating) - from .utils.stream import HdRezkaStream - -class BeautifulSoupCustom(BeautifulSoup): - def __repr__(self): return "" - -class LoginRequiredError(Exception): - def __init__(self): super().__init__("Login is required to access this page.") +from .utils.stream import HdRezkaStream +from .utils.types import BeautifulSoupCustom +from .utils.types import (HdRezkaTVSeries, HdRezkaMovie, HdRezkaRating) +from .utils.errors import (LoginRequiredError, LoginFailed, FetchFailed) class HdRezkaApi(): - __version__ = "7.2.0" + __version__ = "7.2.1" def __init__(self, url, proxy={}, headers={}, cookies={}): self.url = url.split(".html")[0] + ".html" uri = urlparse(self.url) @@ -35,7 +27,9 @@ def __init__(self, url, proxy={}, headers={}, cookies={}): def login(self, email:str, password:str): response = requests.post(f"{self.origin}/ajax/login/",data={"login_name":email,"login_password":password},headers=self.HEADERS,proxies=self.proxy) - if response.json()['success']:self.cookies = {**self.cookies,**response.cookies.get_dict()} + data = response.json() + if data['success']: self.cookies = {**self.cookies,**response.cookies.get_dict()} + else: raise LoginFailed(data.get("message")) @staticmethod def make_cookies(user_id:str, password_hash:str): @@ -197,7 +191,7 @@ def makeRequest(data): for video in links: stream.append(quality, video) return stream - print("[WARN]: Failed to fetch!") + raise FetchFailed() def getStreamSeries(self, season, episode, translation_id): if not (season and episode): @@ -244,7 +238,14 @@ def getStreamMovie(self, translation_id): if self.type == HdRezkaTVSeries: - return getStreamSeries(self, int(season), int(episode), tr_id) + if season and episode: + return getStreamSeries(self, int(season), int(episode), tr_id) + elif season and (not episode): + raise TypeError("getStream() missing one required argument (episode)") + elif episode and (not season): + raise TypeError("getStream() missing one required argument (season)") + else: + raise TypeError("getStream() missing required arguments (season and episode)") elif self.type == HdRezkaMovie: return getStreamMovie(self, tr_id) else: diff --git a/HdRezkaApi/utils/errors.py b/HdRezkaApi/utils/errors.py new file mode 100644 index 0000000..dead316 --- /dev/null +++ b/HdRezkaApi/utils/errors.py @@ -0,0 +1,8 @@ +class LoginRequiredError(Exception): + def __init__(self): super().__init__("Login is required to access this page.") + +class LoginFailed(Exception): + def __init__(self, msg): super().__init__(msg) + +class FetchFailed(Exception): + def __init__(self): super().__init__("Failed to fetch stream!") diff --git a/HdRezkaApi/utils/types.py b/HdRezkaApi/utils/types.py index 0b1c447..3dbd8d6 100644 --- a/HdRezkaApi/utils/types.py +++ b/HdRezkaApi/utils/types.py @@ -1,3 +1,8 @@ +from bs4 import BeautifulSoup + +class BeautifulSoupCustom(BeautifulSoup): + def __repr__(self): return "" + class HdRezkaType(): def __init__(self, name): self.name = name diff --git a/README.md b/README.md index 18dd51a..fc59c23 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # HdRezkaApi - + ### Install: ```