From 704f8419cd3107bc5efaa5e9befa36063bb96dd5 Mon Sep 17 00:00:00 2001 From: Goldy <153996346+g0ldyy@users.noreply.github.com> Date: Wed, 3 Jul 2024 17:27:59 +0200 Subject: [PATCH] fix: real debrid error --- comet/api/stream.py | 6 ++---- comet/utils/general.py | 37 +++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/comet/api/stream.py b/comet/api/stream.py index 99f7885..11035e1 100644 --- a/comet/api/stream.py +++ b/comet/api/stream.py @@ -8,7 +8,7 @@ from fastapi import APIRouter, Request from fastapi.responses import RedirectResponse from RTN import Torrent, parse, sort_torrents, title_match -from comet.utils.general import (bytes_to_size, config_check, +from comet.utils.general import (bytes_to_size, config_check, check_info_hash, generate_download_link, get_indexer_manager, get_torrent_hash, is_video, translate, get_balanced_hashes) from comet.utils.logger import logger @@ -177,9 +177,7 @@ async def stream(request: Request, b64config: str, type: str, id: str): tasks = [] for hash in torrent_hashes: - tasks.append(session.get(f"https://api.real-debrid.com/rest/1.0/torrents/instantAvailability/{hash}", headers={ - "Authorization": f"Bearer {config['debridApiKey']}" - })) + tasks.append(check_info_hash(config["debridApiKey"], hash)) responses = await asyncio.gather(*tasks) diff --git a/comet/utils/general.py b/comet/utils/general.py index 7acaed3..1d28ac7 100644 --- a/comet/utils/general.py +++ b/comet/utils/general.py @@ -199,9 +199,24 @@ async def get_balanced_hashes(hashes: dict, config: dict): return balanced_hashes +async def check_info_hash(debrid_api_key: str, hash: str): + try: + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bearer {debrid_api_key}" + }) as session: + response = await session.get(f"https://api.real-debrid.com/rest/1.0/torrents/instantAvailability/{hash}") + + return response + except Exception as e: + logger.warning(f"Exception while checking info hash with Real Debrid for {hash}: {e}") + + return + async def generate_download_link(debrid_api_key: str, hash: str, index: str): try: - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(headers={ + "Authorization": f"Bearer {debrid_api_key}" + }) as session: check_blacklisted = await session.get("https://real-debrid.com/vpn") check_blacklisted = await check_blacklisted.text() @@ -214,32 +229,22 @@ async def generate_download_link(debrid_api_key: str, hash: str, index: str): else: logger.warning(f"Real-Debrid blacklisted server's IP. Switching to proxy {proxy} for {hash}|{index}") - add_magnet = await session.post(f"https://api.real-debrid.com/rest/1.0/torrents/addMagnet", headers={ - "Authorization": f"Bearer {debrid_api_key}" - }, data={ + add_magnet = await session.post(f"https://api.real-debrid.com/rest/1.0/torrents/addMagnet", data={ "magnet": f"magnet:?xt=urn:btih:{hash}" }, proxy=proxy) add_magnet = await add_magnet.json() - get_magnet_info = await session.get(add_magnet["uri"], headers={ - "Authorization": f"Bearer {debrid_api_key}" - }, proxy=proxy) + get_magnet_info = await session.get(add_magnet["uri"], proxy=proxy) get_magnet_info = await get_magnet_info.json() - await session.post(f"https://api.real-debrid.com/rest/1.0/torrents/selectFiles/{add_magnet['id']}", headers={ - "Authorization": f"Bearer {debrid_api_key}" - }, data={ + await session.post(f"https://api.real-debrid.com/rest/1.0/torrents/selectFiles/{add_magnet['id']}", data={ "files": index }, proxy=proxy) - get_magnet_info = await session.get(add_magnet["uri"], headers={ - "Authorization": f"Bearer {debrid_api_key}" - }, proxy=proxy) + get_magnet_info = await session.get(add_magnet["uri"], proxy=proxy) get_magnet_info = await get_magnet_info.json() - unrestrict_link = await session.post(f"https://api.real-debrid.com/rest/1.0/unrestrict/link", headers={ - "Authorization": f"Bearer {debrid_api_key}" - }, data={ + unrestrict_link = await session.post(f"https://api.real-debrid.com/rest/1.0/unrestrict/link", data={ "link": get_magnet_info["links"][0] }, proxy=proxy) unrestrict_link = await unrestrict_link.json()