Update app.py
Browse files
app.py
CHANGED
@@ -475,7 +475,49 @@ async def download_hls_video(request: Request):
|
|
475 |
return {"url": download_url}
|
476 |
|
477 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
479 |
|
480 |
|
481 |
@app.post("/max")
|
|
|
475 |
return {"url": download_url}
|
476 |
|
477 |
|
478 |
+
@app.post("/multi")
|
479 |
+
async def multi_download(request: Request):
|
480 |
+
user_ip = get_user_ip(request)
|
481 |
+
if rate_limiter.is_rate_limited(user_ip):
|
482 |
+
current_count = rate_limiter.get_current_count(user_ip)
|
483 |
+
raise HTTPException(
|
484 |
+
status_code=429,
|
485 |
+
detail={
|
486 |
+
"error": "You have exceeded the maximum number of requests per day. Please try again tomorrow.",
|
487 |
+
"url": "https://t.me/chrunoss"
|
488 |
+
}
|
489 |
+
)
|
490 |
+
data = await request.json()
|
491 |
+
video_url = data.get('quality')
|
492 |
+
quality = data.get('url')
|
493 |
+
if quality == "mp3":
|
494 |
+
parameter = 'type=audio'
|
495 |
+
else:
|
496 |
+
parameter = f'type=video&quality={quality}'
|
497 |
+
|
498 |
+
|
499 |
+
is_youtube_url = re.search(r'(youtube\.com|youtu\.be)', video_url) is not None
|
500 |
+
|
501 |
+
if is_youtube_url:
|
502 |
+
encoded_url = urllib.parse.quote(str(video_url), safe='')
|
503 |
+
dl_url = f'https://chrunos-grab.hf.space/yt/dl?url={encoded_url}&{parameter}'
|
504 |
+
if dl_url and "http" in dl_url:
|
505 |
+
return {"url": dl_url, "requests_remaining": rate_limiter.max_requests - rate_limiter.get_current_count(user_ip)}
|
506 |
+
else:
|
507 |
+
return {
|
508 |
+
"error": "Failed to Fetch the video."
|
509 |
+
}
|
510 |
|
511 |
+
else:
|
512 |
+
dl_url = await get_track_download_url(video_url, quality)
|
513 |
+
if dl_url and "http" in dl_url:
|
514 |
+
return {"url": dl_url, "requests_remaining": rate_limiter.max_requests - rate_limiter.get_current_count(user_ip)}
|
515 |
+
else:
|
516 |
+
return {
|
517 |
+
"error": "Failed to Fetch the video."
|
518 |
+
}
|
519 |
+
|
520 |
+
|
521 |
|
522 |
|
523 |
@app.post("/max")
|