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>') @app.get("/AnotherAPI/{api_key}/FB_Downloader") async def API(api_key: str): API = (api_key) if API == "2005": return {"response": "Status: Activated"} @app.get("/AnotherAPI/{api_key}/FB_Downloader/") 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?"}