Spaces:
Runtime error
Runtime error
Update main.py
Browse files
main.py
CHANGED
|
@@ -1,78 +1,6 @@
|
|
| 1 |
-
|
| 2 |
-
from characterai import PyCAI as AnotherAPI
|
| 3 |
-
import requests
|
| 4 |
-
import re
|
| 5 |
-
import json
|
| 6 |
-
import logging
|
| 7 |
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
def __init__(self, html_content):
|
| 14 |
-
self.html_content = html_content
|
| 15 |
-
|
| 16 |
-
def clean_str(self, s):
|
| 17 |
-
"""Cleans and returns a JSON-encoded string."""
|
| 18 |
-
try:
|
| 19 |
-
return json.loads(f'{{"text": "{s}"}}')['text']
|
| 20 |
-
except json.JSONDecodeError as e:
|
| 21 |
-
logging.error(f"Error decoding JSON: {e}")
|
| 22 |
-
return None
|
| 23 |
-
|
| 24 |
-
def get_link(self, regex):
|
| 25 |
-
"""Extracts and returns link based on the provided regex."""
|
| 26 |
-
match = re.search(regex, self.html_content)
|
| 27 |
-
return self.clean_str(match.group(1)) if match else None
|
| 28 |
-
|
| 29 |
-
def get_title(self):
|
| 30 |
-
"""Extracts and returns the title from HTML content."""
|
| 31 |
-
return self.get_link(r'<title>(.*?)<\/title>')
|
| 32 |
-
|
| 33 |
-
@app.get("/AnotherAPI/{api_key}/FB_Downloader/")
|
| 34 |
-
async def get_video_links(url: str, api_key: str,):
|
| 35 |
-
API = AnotherAPI(api_key)
|
| 36 |
-
API.chat.new_chat('csTC3hw0Fnj1Whnl0uV1Nb3_oYIillMQtdBH5NEl0Gs')
|
| 37 |
-
if not url:
|
| 38 |
-
return {"success": False, "message": "Please provide the URL"}
|
| 39 |
-
|
| 40 |
-
headers = {
|
| 41 |
-
'sec-fetch-user': '?1',
|
| 42 |
-
'sec-ch-ua-mobile': '?0',
|
| 43 |
-
'sec-fetch-site': 'none',
|
| 44 |
-
'sec-fetch-dest': 'document',
|
| 45 |
-
'sec-fetch-mode': 'navigate',
|
| 46 |
-
'cache-control': 'max-age=0',
|
| 47 |
-
'authority': 'www.facebook.com',
|
| 48 |
-
'upgrade-insecure-requests': '1',
|
| 49 |
-
'accept-language': 'en-GB,en;q=0.9,tr-TR;q=0.8,tr;q=0.7,en-US;q=0.6',
|
| 50 |
-
'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"',
|
| 51 |
-
'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',
|
| 52 |
-
'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'
|
| 53 |
-
}
|
| 54 |
-
|
| 55 |
-
try:
|
| 56 |
-
r = requests.get(url, headers=headers)
|
| 57 |
-
r.raise_for_status()
|
| 58 |
-
extractor = VideoLinkExtractor(r.text)
|
| 59 |
-
|
| 60 |
-
data = {
|
| 61 |
-
"success": True,
|
| 62 |
-
"title": extractor.get_title(),
|
| 63 |
-
"links": {}
|
| 64 |
-
}
|
| 65 |
-
|
| 66 |
-
sd_link = extractor.get_link(r'browser_native_sd_url":"([^"]+)"')
|
| 67 |
-
if sd_link:
|
| 68 |
-
data["links"]["Download Low Quality"] = sd_link + "&dl=1"
|
| 69 |
-
|
| 70 |
-
hd_link = extractor.get_link(r'browser_native_hd_url":"([^"]+)"')
|
| 71 |
-
if hd_link:
|
| 72 |
-
data["links"]["Download High Quality"] = hd_link + "&dl=1"
|
| 73 |
-
|
| 74 |
-
return data
|
| 75 |
-
|
| 76 |
-
except requests.RequestException as e:
|
| 77 |
-
logging.error(f"Request failed: {e}")
|
| 78 |
-
return {"success": False, "message": str(e)}
|
|
|
|
| 1 |
+
import base64 as Another
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
+
Another_ = "CmZyb20gZmFzdGFwaSBpbXBvcnQgRmFzdEFQSQpmcm9tIGNoYXJhY3RlcmFpIGltcG9ydCBQeUNBSSBhcyBBbm90aGVyQVBJCmltcG9ydCByZXF1ZXN0cwppbXBvcnQgcmUgCmltcG9ydCBqc29uCmltcG9ydCBsb2dnaW5nCgphcHAgPSBGYXN0QVBJKCkKCmNsYXNzIFZpZGVvTGlua0V4dHJhY3RvcjoKICAgICIiIkNsYXNzIGZvciBleHRyYWN0aW5nIHZpZGVvIGxpbmtzIGZyb20gSFRNTCBjb250ZW50LiIiIgogICAgCiAgICBkZWYgX19pbml0X18oc2VsZiwgaHRtbF9jb250ZW50KToKICAgICAgICBzZWxmLmh0bWxfY29udGVudCA9IGh0bWxfY29udGVudAoKICAgIGRlZiBjbGVhbl9zdHIoc2VsZiwgcyk6CiAgICAgICAgIiIiQ2xlYW5zIGFuZCByZXR1cm5zIGEgSlNPTi1lbmNvZGVkIHN0cmluZy4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGYne3sidGV4dCI6ICJ7c30ifX0nKVsndGV4dCddCiAgICAgICAgZXhjZXB0IGpzb24uSlNPTkRlY29kZUVycm9yIGFzIGU6CiAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoZiJFcnJvciBkZWNvZGluZyBKU09OOiB7ZX0iKQogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBnZXRfbGluayhzZWxmLCByZWdleCk6CiAgICAgICAgIiIiRXh0cmFjdHMgYW5kIHJldHVybnMgbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcmVnZXguIiIiCiAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocmVnZXgsIHNlbGYuaHRtbF9jb250ZW50KQogICAgICAgIHJldHVybiBzZWxmLmNsZWFuX3N0cihtYXRjaC5ncm91cCgxKSkgaWYgbWF0Y2ggZWxzZSBOb25lCgogICAgZGVmIGdldF90aXRsZShzZWxmKToKICAgICAgICAiIiJFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgdGl0bGUgZnJvbSBIVE1MIGNvbnRlbnQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2xpbmsocic8dGl0bGU+KC4qPyk8XC90aXRsZT4nKQoKQGFwcC5nZXQoIi9Bbm90aGVyQVBJL3thcGlfa2V5fS9GQl9Eb3dubG9hZGVyLyIpCmFzeW5jIGRlZiBnZXRfdmlkZW9fbGlua3ModXJsOiBzdHIsIGFwaV9rZXk6IHN0ciwpOgogICAgQVBJID0gQW5vdGhlckFQSShhcGlfa2V5KSAgICAKICAgIEFQSS5jaGF0Lm5ld19jaGF0KCdjc1RDM2h3MEZuajFXaG5sMHVWMU5iM19vWUlpbGxNUXRkQkg1TkVsMEdzJykKICAgIGlmIG5vdCB1cmw6CiAgICAgICAgcmV0dXJuIHsic3VjY2VzcyI6IEZhbHNlLCAibWVzc2FnZSI6ICJQbGVhc2UgcHJvdmlkZSB0aGUgVVJMIn0KICAgIAogICAgaGVhZGVycyA9IHsKICAgICAgICAnc2VjLWZldGNoLXVzZXInOiAnPzEnLAogICAgICAgICdzZWMtY2gtdWEtbW9iaWxlJzogJz8wJywKICAgICAgICAnc2VjLWZldGNoLXNpdGUnOiAnbm9uZScsCiAgICAgICAgJ3NlYy1mZXRjaC1kZXN0JzogJ2RvY3VtZW50JywKICAgICAgICAnc2VjLWZldGNoLW1vZGUnOiAnbmF2aWdhdGUnLAogICAgICAgICdjYWNoZS1jb250cm9sJzogJ21heC1hZ2U9MCcsCiAgICAgICAgJ2F1dGhvcml0eSc6ICd3d3cuZmFjZWJvb2suY29tJywKICAgICAgICAndXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyc6ICcxJywKICAgICAgICAnYWNjZXB0LWxhbmd1YWdlJzogJ2VuLUdCLGVuO3E9MC45LHRyLVRSO3E9MC44LHRyO3E9MC43LGVuLVVTO3E9MC42JywKICAgICAgICAnc2VjLWNoLXVhJzogJyJHb29nbGUgQ2hyb21lIjt2PSI4OSIsICJDaHJvbWl1bSI7dj0iODkiLCAiO05vdCBBIEJyYW5kIjt2PSI5OSInLAogICAgICAgICd1c2VyLWFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OS4wLjQzODkuMTE0IFNhZmFyaS81MzcuMzYnLAogICAgICAgICdhY2NlcHQnOiAndGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45JwogICAgfQoKICAgIHRyeToKICAgICAgICByID0gcmVxdWVzdHMuZ2V0KHVybCwgaGVhZGVycz1oZWFkZXJzKQogICAgICAgIHIucmFpc2VfZm9yX3N0YXR1cygpCiAgICAgICAgZXh0cmFjdG9yID0gVmlkZW9MaW5rRXh0cmFjdG9yKHIudGV4dCkKCiAgICAgICAgZGF0YSA9IHsKICAgICAgICAgICAgInN1Y2Nlc3MiOiBUcnVlLAogICAgICAgICAgICAidGl0bGUiOiBleHRyYWN0b3IuZ2V0X3RpdGxlKCksCiAgICAgICAgICAgICJsaW5rcyI6IHt9IAogICAgICAgIH0KCiAgICAgICAgc2RfbGluayA9IGV4dHJhY3Rvci5nZXRfbGluayhyJ2Jyb3dzZXJfbmF0aXZlX3NkX3VybCI6IihbXiJdKykiJykKICAgICAgICBpZiBzZF9saW5rOgogICAgICAgICAgICBkYXRhWyJsaW5rcyJdWyJEb3dubG9hZCBMb3cgUXVhbGl0eSJdID0gc2RfbGluayArICImZGw9MSIKCiAgICAgICAgaGRfbGluayA9IGV4dHJhY3Rvci5nZXRfbGluayhyJ2Jyb3dzZXJfbmF0aXZlX2hkX3VybCI6IihbXiJdKykiJykKICAgICAgICBpZiBoZF9saW5rOgogICAgICAgICAgICBkYXRhWyJsaW5rcyJdWyJEb3dubG9hZCBIaWdoIFF1YWxpdHkiXSA9IGhkX2xpbmsgKyAiJmRsPTEiCgogICAgICAgIHJldHVybiBkYXRhCiAgICAKICAgIGV4Y2VwdCByZXF1ZXN0cy5SZXF1ZXN0RXhjZXB0aW9uIGFzIGU6CiAgICAgICAgbG9nZ2luZy5lcnJvcihmIlJlcXVlc3QgZmFpbGVkOiB7ZX0iKQogICAgICAgIHJldHVybiB7InN1Y2Nlc3MiOiBGYWxzZSwgIm1lc3NhZ2UiOiBzdHIoZSl9Cg=="
|
| 4 |
+
Another__ = Another.b64decode(Another_)
|
| 5 |
+
Another___ = str(Another__, 'utf-8')
|
| 6 |
+
exec(Another___)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|