Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI | |
| from characterai import PyCAI as AnotherAPI | |
| import requests | |
| import re | |
| import json | |
| import logging | |
| app = FastAPI() | |
| class VideoLinkExtractor: | |
| """Class for extracting video links from HTML content.""" | |
| def __init__(self, html_content): | |
| self.html_content = html_content | |
| def clean_str(self, s): | |
| """Cleans and returns a JSON-encoded string.""" | |
| try: | |
| return json.loads(f'{{"text": "{s}"}}')['text'] | |
| except json.JSONDecodeError as e: | |
| logging.error(f"Error decoding JSON: {e}") | |
| return None | |
| def get_link(self, regex): | |
| """Extracts and returns link based on the provided regex.""" | |
| match = re.search(regex, self.html_content) | |
| return self.clean_str(match.group(1)) if match else None | |
| def get_title(self): | |
| """Extracts and returns the title from HTML content.""" | |
| return self.get_link(r'<title>(.*?)<\/title>') | |
| async def API(api_key: str): | |
| API = (api_key) | |
| if API == "2005": | |
| return {"response": "Status: Activated"} | |
| async def get_video_links(url: str, api_key: str): | |
| API = (api_key) | |
| if API == "2005": | |
| if not url: | |
| return {"success": False, "message": "Please provide the URL"} | |
| headers = { | |
| 'sec-fetch-user': '?1', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-fetch-site': 'none', | |
| 'sec-fetch-dest': 'document', | |
| 'sec-fetch-mode': 'navigate', | |
| 'cache-control': 'max-age=0', | |
| 'authority': 'www.facebook.com', | |
| 'upgrade-insecure-requests': '1', | |
| 'accept-language': 'en-GB,en;q=0.9,tr-TR;q=0.8,tr;q=0.7,en-US;q=0.6', | |
| 'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36', | |
| 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' | |
| } | |
| try: | |
| r = requests.get(url, headers=headers) | |
| r.raise_for_status() | |
| extractor = VideoLinkExtractor(r.text) | |
| data = { | |
| "success": True, | |
| "title": extractor.get_title(), | |
| "links": {} | |
| } | |
| sd_link = extractor.get_link(r'browser_native_sd_url":"([^"]+)"') | |
| if sd_link: | |
| data["links"]["Download Low Quality"] = sd_link + "&dl=1" | |
| hd_link = extractor.get_link(r'browser_native_hd_url":"([^"]+)"') | |
| if hd_link: | |
| data["links"]["Download High Quality"] = hd_link + "&dl=1" | |
| return data | |
| except requests.RequestException as e: | |
| logging.error(f"Request failed: {e}") | |
| return {"success": False, "message": str(e)} | |
| else: | |
| return {"response": "API Lu Mana?"} | |