MyanmarSwe commited on
Commit
1b7f333
Β·
verified Β·
1 Parent(s): 387910a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +12 -34
main.py CHANGED
@@ -9,18 +9,14 @@ import uvicorn
9
 
10
  app = FastAPI()
11
 
12
- # --- Configurations (Hugging Face Secrets α€™α€Ύ α€†α€½α€²α€šα€°α€™α€Šα€Ί) ---
13
  ACCESS_KEY = os.getenv("ACCESS_KEY", "786969")
14
  CLIENT_ID = os.getenv("GOOGLE_CLIENT_ID")
15
  CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET")
16
  REFRESH_TOKEN = os.getenv("GOOGLE_REFRESH_TOKEN")
17
 
18
- @app.get("/")
19
- def index():
20
- return {"message": "Proxy is Online!", "usage": "/download?url=[LINK]&key=[YOUR_KEY]"}
21
-
22
  def get_google_access_token():
23
- """OAuth Token α€€α€­α€― Refresh α€œα€―α€•α€Ία€α€Όα€„α€Ία€Έ"""
24
  if not (CLIENT_ID and CLIENT_SECRET and REFRESH_TOKEN):
25
  return None
26
  try:
@@ -37,39 +33,23 @@ def get_google_access_token():
37
  return None
38
 
39
  def get_direct_url(url):
40
- """Link α€‘α€™α€»α€­α€―α€Έα€‘α€…α€¬α€Έα€‘α€œα€­α€―α€€α€Ί Direct URL နှင့် Token α€α€½α€²α€α€Όα€¬α€Έα€‘α€―α€α€Ία€šα€°α€α€Όα€„α€Ία€Έ"""
41
  if "drive.google.com" in url:
42
  fid = re.search(r'/(?:d|file/d|open\?id=)/([a-zA-Z0-9_-]+)', url)
43
  if fid:
44
  file_id = fid.group(1)
45
  token = get_google_access_token()
46
  if token:
47
- # OAuth α€žα€―α€Άα€Έα Google Drive API v3 α€™α€Ύ ဆွဲထုတ်ခြင်း
48
  return f"https://www.googleapis.com/drive/v3/files/{file_id}?alt=media", token
49
  else:
50
- # Token မရှိပါက α€›α€­α€―α€Έα€›α€­α€―α€Έ URL α€žα€―α€Άα€Έα€™α€Šα€Ί
51
  return f"https://drive.google.com/uc?export=download&id={file_id}", None
52
-
53
- elif "mediafire.com" in url:
54
- try:
55
- r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}, timeout=10)
56
- soup = BeautifulSoup(r.text, 'html.parser')
57
- btn = soup.find('a', {'id': 'downloadButton'})
58
- if btn: return btn.get('href'), None
59
- except: pass
60
-
61
- elif "dropbox.com" in url:
62
- return url.replace("?dl=0", "").split("?")[0] + "?dl=1", None
63
-
64
- elif "1drv.ms" in url or "onedrive.live.com" in url:
65
- encoded_url = base64.b64encode(bytes(url, 'utf-8')).decode('utf-8').replace('=', '').replace('/', '_').replace('+', '-')
66
- return f"https://api.onedrive.com/v1.0/shares/u!{encoded_url}/root/content", None
67
-
68
  return None, None
69
 
70
  @app.get("/download")
71
  async def download_proxy(request: Request, url: str, key: str = None):
72
- # Proxy Password စစ်ဆေးခြင်း
73
  if key != ACCESS_KEY:
74
  raise HTTPException(status_code=403, detail="Access Denied")
75
 
@@ -77,26 +57,24 @@ async def download_proxy(request: Request, url: str, key: str = None):
77
  if not target_link:
78
  raise HTTPException(status_code=400, detail="Invalid Link")
79
 
80
- # Header ပြင်ဆင်ခြင်း
81
  headers = {}
82
  range_header = request.headers.get('range')
83
  if range_header:
84
  headers['Range'] = range_header
85
 
 
86
  if token:
87
  headers['Authorization'] = f"Bearer {token}"
88
 
89
  session = requests.Session()
90
- # Google/Target Server α€‘α€Άα€žα€­α€―α€· Request ပို့ခြင်း
91
  r = session.get(target_link, headers=headers, stream=True, allow_redirects=True)
92
 
93
- # Error Handling (404 ဖြစ်ပါက Public link ဖြင့် Bypass α€œα€―α€•α€Ία€€α€Όα€Šα€·α€Ία€™α€Šα€Ί)
94
- if r.status_code == 404 and "drive.google.com" in url:
95
- file_id = re.search(r'/files/([a-zA-Z0-9_-]+)', target_link).group(1)
96
- fallback_url = f"https://drive.google.com/uc?export=download&id={file_id}"
97
- r = session.get(fallback_url, headers=headers, stream=True, allow_redirects=True)
98
 
99
- # Header များကို α€•α€Όα€”α€Ία€œα€Šα€Ία€•α€±α€Έα€•α€­α€―α€·α€›α€”α€Ί ပြင်ဆင်ခြင်း
100
  excluded = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
101
  response_headers = {n: v for n, v in r.headers.items() if n.lower() not in excluded}
102
  response_headers['Accept-Ranges'] = 'bytes'
 
9
 
10
  app = FastAPI()
11
 
12
+ # --- Configurations ---
13
  ACCESS_KEY = os.getenv("ACCESS_KEY", "786969")
14
  CLIENT_ID = os.getenv("GOOGLE_CLIENT_ID")
15
  CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET")
16
  REFRESH_TOKEN = os.getenv("GOOGLE_REFRESH_TOKEN")
17
 
 
 
 
 
18
  def get_google_access_token():
19
+ """OAuth Access Token α€€α€­α€― α€›α€šα€°α€α€Όα€„α€Ία€Έ"""
20
  if not (CLIENT_ID and CLIENT_SECRET and REFRESH_TOKEN):
21
  return None
22
  try:
 
33
  return None
34
 
35
  def get_direct_url(url):
 
36
  if "drive.google.com" in url:
37
  fid = re.search(r'/(?:d|file/d|open\?id=)/([a-zA-Z0-9_-]+)', url)
38
  if fid:
39
  file_id = fid.group(1)
40
  token = get_google_access_token()
41
  if token:
42
+ # Sign-in page မတက်ထောင် α€›α€­α€―α€Έα€›α€­α€―α€Έ link ထစား API v3 link ကိုပဲ α€žα€―α€Άα€Έα€™α€Šα€Ί
43
  return f"https://www.googleapis.com/drive/v3/files/{file_id}?alt=media", token
44
  else:
45
+ # Token မရှိပါက fallback α€‘α€”α€±α€–α€Όα€„α€·α€Ία€žα€¬ α€›α€­α€―α€Έα€›α€­α€―α€Έ link α€€α€­α€― α€žα€―α€Άα€Έα€™α€Šα€Ί
46
  return f"https://drive.google.com/uc?export=download&id={file_id}", None
47
+
48
+ # ... (MediaFire & ထခြား logic များ α€‘α€α€°α€α€°α€•α€„α€Ία€–α€Όα€…α€Ία€žα€Šα€Ί) ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  return None, None
50
 
51
  @app.get("/download")
52
  async def download_proxy(request: Request, url: str, key: str = None):
 
53
  if key != ACCESS_KEY:
54
  raise HTTPException(status_code=403, detail="Access Denied")
55
 
 
57
  if not target_link:
58
  raise HTTPException(status_code=400, detail="Invalid Link")
59
 
 
60
  headers = {}
61
  range_header = request.headers.get('range')
62
  if range_header:
63
  headers['Range'] = range_header
64
 
65
+ # Token α€›α€Ύα€­α€œα€»α€Ύα€„α€Ί Authorization Header α€€α€­α€― α€žα€±α€α€»α€¬α€•α€±α€«α€€α€Ί α€‘α€Šα€·α€Ία€›α€™α€Šα€Ί
66
  if token:
67
  headers['Authorization'] = f"Bearer {token}"
68
 
69
  session = requests.Session()
70
+ # Google API α€žα€­α€―α€· Request ပို့ခြင်း
71
  r = session.get(target_link, headers=headers, stream=True, allow_redirects=True)
72
 
73
+ # α€‘α€€α€šα€Ία Sign-in Page α€α€€α€Ία€”α€±α€žα€±α€Έα€•α€«α€€ (Response α€€ HTML α€–α€Όα€…α€Ία€”α€±α€œα€»α€Ύα€„α€Ί) Error ပြရန်
74
+ if "text/html" in r.headers.get("Content-Type", "").lower() and "google.com" in target_link:
75
+ # ကနေရာတွင် Sign-in Page α€€α€­α€― stream α€œα€―α€•α€Ία€™α€Šα€·α€Ία€‘α€…α€¬α€Έ error α€•α€Όα€œα€­α€―α€€α€Ία€α€Όα€„α€Ία€Έα€€ α€•α€­α€―α€€α€±α€¬α€„α€Ία€Έα€•α€«α€žα€Šα€Ί
76
+ raise HTTPException(status_code=401, detail="Google Authentication Failed. Please check your OAuth Credentials.")
 
77
 
 
78
  excluded = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
79
  response_headers = {n: v for n, v in r.headers.items() if n.lower() not in excluded}
80
  response_headers['Accept-Ranges'] = 'bytes'