From 1e0506ae8b78cd8b535754683eaeab42cbb2bb99 Mon Sep 17 00:00:00 2001 From: mhdzumair Date: Mon, 16 Oct 2023 21:45:55 +0530 Subject: [PATCH] capture premium account exception for RD & DL --- beamup.json | 2 +- resources/exceptions/need_premium.mp4 | Bin 0 -> 103694 bytes streaming_providers/debridlink/client.py | 49 ++++++++++++++++++----- streaming_providers/realdebrid/client.py | 7 ++++ utils/exception_video.py | 8 ++-- 5 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 resources/exceptions/need_premium.mp4 diff --git a/beamup.json b/beamup.json index affa6ac..ed06e13 100644 --- a/beamup.json +++ b/beamup.json @@ -1,4 +1,4 @@ { "projectName": "mediafusion", - "lastCommit": "b3d3866" + "lastCommit": "f8743ed" } \ No newline at end of file diff --git a/resources/exceptions/need_premium.mp4 b/resources/exceptions/need_premium.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3e22a4bd5808cee9614f48235de2eb9bc75d8b00 GIT binary patch literal 103694 zcma&NbC@O1vNpQfwrx$@nzn75)3$BfHl{gk+nBa(+wQ*oJLm4Rzx|#2$9PXzJu{XYOcg4FCWG{yBetnG9Tv7_IGC7y$qPq^X062>{3@!P?ls z>D%THIM~-$#k$Bz=i!QYa|+Ee;R?y+l^YWq3n49`k*$LXA>+5`z|6qON@!?cV#30} z@LeHJ_iaEgBQGLG%R(riD)en>Y-03XA!KXkZe?QXM99Rzz)Z`;z{K>eG;?yYT^Zj6k~gw`fJW+rZgj?RYP5<8)tqx-k(_fgNm zn1_*$;oIr^Kxl35W@4=O402JkbNKf724W(#vbD7|F#9g){Y%M2=xAkb^c~E<6bytm4*%7Nk-4>j(?5Zj+c=px zSQ&g9ed`UaoE;3@^^9z-?F^j0%SPX0Zv4+9uGpJgfkh6YZ;zpKoqM@$gu zcD!1idj}jYl0`kj)hPCwA%&AHu5auEm4-m;?f4unRhlXv%KVc)sA0wN*L5^F~j?cz#Uk4-xXl zd~#0-sw~fH-mHU`?XDu<5I?);b)-KgK{ZsH!lYK~(k5-Vt2wQqg@k;05y?P*r{#Mtm5wfUTZ*`my4fYek~{DlHHAQrgK@=Sane zlA4vQH34PzYxw-kJko)i1M24Zz2m>I)=jd|peMd$U}l?9DZc)Zh!LCrJCdUs z?ru}ep1L)d%?1y+2?xPi1sNJu_{+feOG5K}{wcUdlATX8Lgzg)wCZ(PfTJX2YwEp( ze=glrCI)^_7%mR6c4xa7d=G?7wQ%OPD1AX>bmchT*6?mF(0?b7FLgynmV2{CtyslE ztiUa2OPjri{YyRA5RAudTQBMWMzxZ;*lRrxLRFe5Lq%E@U_<4uJ==#2t&QB*?sk`~CmndORT=r9 zaia78wa8v*7^7x@y3syN5%+e+d~6ZOffCmpY{Rd%kR(@nf;u3`_IIMTGigB1*3~3e z=ga{3`uQE<7~+){oTp8>&UWUd7;pW47EIsM#In6G20h?mXUt}>ED7$kW*l~$VZPw; z8IPA-Ic)Dwwcsiy-R!l0j%{6J3F{e9Cv6;N;lgWc&wNC1JUOt2`#h~NkSy}*3cb{Jg;WlzJHS3{7F3Oo#h@RFeqxPzjGvY=4 zQTgRx|0LpCDRCMR}Z#Zoc@eK6HzQn==&>BZex`HOTq^ z15wRxj3~FRjDjza+mkv}m_tVjXoB4*U|QYE@KlCBIql()Y83!W3XNAG1nvdu3Rjc; zUlokzv4M>&J?4`UM7??@z|m}Lu;Ae6Q`*YwN%QzJQ#e7F6F3m1^ZX?U%}!6UJ%fKM zbf3jI14^cO|G=hbK-ecNsJBcfay?K17uK_UjJ5-nWB}2qp&zL6&=9%V8 z%j|i1`ii@^rW+-N2Nlg|Eso`K^H$md4BtSDEf-|0L|19Nsxa`$D|bw8r%4mp@SpM7 z^|IwIZ*{DFEpN@?F1!PX*}pWMs!d1Kg}CHxiDwnE;r~SQ8s=K2=Okmk-mu}(>ENFB zU`Edq@SQreHpe7|HUW1X`g@Nv-)fpwsX;MHA{mea=-xDLwd2yg4S9 zpr!Qq{Na0(Z*(sh?4eh()}a`kK)U9jg8!k=KmEIq?DtR*fz9JcbS7Z7i;vySu^neE zGc@f7E;r>M_osIZkEvA>T8Ga3c}$65ch`EpJH6|Ax^M(LJh;P&3Vmzu>Mw8%|7Ff; z@WbgZ1(f{R8wyqBQWpu%KlgBel;aFcXEwy(iQ426?G2`pVb0nbipJgftaqObyMZq( z$|=hh)Q&``h3vA^(bb2@$f+ot$v}Y)K}X))_}LQY@*a_CWw%~bbG&Qy_(oMIBs#Z? z>k0MDQ#v7N1i>%JvQ7WVlmI-t-%_ad{XktDR>faLR9QN}??%d?KT>7XeifSCl4dX7 z{Mp-X&u~7VuV!2eTU{~DmL|?WE($Bw4_PbAl5KlLLit#tm^%LK zChCR@Iq6#>B5eE3mAl4*y|3g;A6Ru>e0T=1J)93u&BnHa8-}sK$UV=ptaaArj8t

Y5_Xwp#x)+34j20;`?CV&!-$!xWJ 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 dict: if method == "GET": response = requests.get(url, params=params, headers=self.headers) @@ -43,6 +49,13 @@ class DebridLink: pass elif error.response.status_code == 401: raise ProviderException("Invalid token", "invalid_token.mp4") + elif ( + error.response.status_code == 400 + and response.json().get("error") == "freeServerOverload" + ): + raise ProviderException( + "Debrid-Link free servers are overloaded", "need_premium.mp4" + ) else: formatted_traceback = "".join(traceback.format_exception(error)) raise ProviderException( @@ -64,8 +77,12 @@ class DebridLink: def initialize_headers(self): if self.encoded_token: token_data = self.decode_token_str(self.encoded_token) - access_token_data = self.refresh_token(token_data["client_id"], token_data["code"]) - self.headers = {"Authorization": f"Bearer {access_token_data['access_token']}"} + access_token_data = self.refresh_token( + token_data["client_id"], token_data["code"] + ) + self.headers = { + "Authorization": f"Bearer {access_token_data['access_token']}" + } @staticmethod def encode_token_data(client_id: str, code: str): @@ -86,7 +103,7 @@ class DebridLink: f"{self.OAUTH_URL}/device/code", data={ "client_id": self.OPENSOURCE_CLIENT_ID, - "scope": "get.post.downloader get.post.seedbox get.account get.files get.post.stream" + "scope": "get.post.downloader get.post.seedbox get.account get.files get.post.stream", }, ) @@ -101,7 +118,7 @@ class DebridLink: }, is_expected_to_fail=True, ) - + def refresh_token(self, client_id, refresh_token): return self._make_request( "POST", @@ -128,27 +145,37 @@ class DebridLink: return token_data def add_magent_link(self, magnet_link): - return self._make_request("POST", f"{self.BASE_URL}/seedbox/add", data={"url": magnet_link}) + return self._make_request( + "POST", f"{self.BASE_URL}/seedbox/add", data={"url": magnet_link} + ) def get_user_torrent_list(self): return self._make_request("GET", f"{self.BASE_URL}/seedbox/list") - + def get_torrent_info(self, torrent_id): - return self._make_request("GET", f"{self.BASE_URL}/seedbox/list", data={"url": torrent_id}) + return self._make_request( + "GET", f"{self.BASE_URL}/seedbox/list", data={"url": torrent_id} + ) def get_torrent_files_list(self, torrent_id): return self._make_request("GET", f"{self.BASE_URL}/files/{torrent_id}/list") def get_torrent_instant_availability(self, torrent_hash): - return self._make_request("GET", f"{self.BASE_URL}/seedbox/cached/", data={"url": torrent_hash}) + return self._make_request( + "GET", f"{self.BASE_URL}/seedbox/cached/", data={"url": torrent_hash} + ) def disable_access_token(self): - return self._make_request("GET", f"{self.OAUTH_URL}/revoke", is_return_none=True) + return self._make_request( + "GET", f"{self.OAUTH_URL}/revoke", is_return_none=True + ) def get_available_torrent(self, info_hash: str) -> dict[str, Any] | None: torrent_list_response = self.get_user_torrent_list() if "error" in torrent_list_response: - raise ProviderException("Failed to get torrent info from Debrid-Link", "transfer_error.mp4") + raise ProviderException( + "Failed to get torrent info from Debrid-Link", "transfer_error.mp4" + ) available_torrents = torrent_list_response["value"] for torrent in available_torrents: diff --git a/streaming_providers/realdebrid/client.py b/streaming_providers/realdebrid/client.py index fd11a0c..1d43a95 100644 --- a/streaming_providers/realdebrid/client.py +++ b/streaming_providers/realdebrid/client.py @@ -47,6 +47,13 @@ class RealDebrid: pass elif error.response.status_code == 401: raise ProviderException("Invalid token", "invalid_token.mp4") + elif ( + error.response.status_code == 403 + and response.json().get("error_code") == 9 + ): + raise ProviderException( + "Real-Debrid Permission denied for free account", "need_premium.mp4" + ) else: formatted_traceback = "".join(traceback.format_exception(error)) raise ProviderException( diff --git a/utils/exception_video.py b/utils/exception_video.py index 573fa8d..573d299 100644 --- a/utils/exception_video.py +++ b/utils/exception_video.py @@ -1,11 +1,11 @@ import os -def create_text_video(output_path, text, duration=30, resolution=(1280, 720), fontsize=45, bgcolor="black"): +def create_text_video( + output_path, text, duration=30, resolution=(1280, 720), fontsize=45, bgcolor="black" +): # Create a solid color background using FFmpeg - background_command = ( - f"ffmpeg -f lavfi -i color=c={bgcolor}:s={resolution[0]}x{resolution[1]} -t {duration} -y background.mp4" - ) + background_command = f"ffmpeg -f lavfi -i color=c={bgcolor}:s={resolution[0]}x{resolution[1]} -t {duration} -y background.mp4" os.system(background_command) # Overlay the text with shadow and fade-in and fade-out effects