Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
from fastapi import FastAPI, HTTPException, Query
|
2 |
-
from fastapi.responses import
|
3 |
import os
|
4 |
from yt_dlp import YoutubeDL
|
5 |
|
@@ -19,13 +19,13 @@ def download_instagram_reel(
|
|
19 |
reel_url: str = Query(..., description="The URL of the Instagram Reel to download"),
|
20 |
):
|
21 |
"""
|
22 |
-
Download an Instagram Reel using yt-dlp.
|
23 |
|
24 |
Args:
|
25 |
reel_url (str): The URL of the Instagram Reel.
|
26 |
|
27 |
Returns:
|
28 |
-
|
29 |
"""
|
30 |
if not reel_url:
|
31 |
raise HTTPException(status_code=400, detail="The 'reel_url' parameter is required.")
|
@@ -43,10 +43,21 @@ def download_instagram_reel(
|
|
43 |
filename = ydl.prepare_filename(info)
|
44 |
if not os.path.exists(filename):
|
45 |
raise HTTPException(status_code=500, detail="Failed to download the Reel.")
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
51 |
except Exception as e:
|
52 |
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
from fastapi import FastAPI, HTTPException, Query
|
2 |
+
from fastapi.responses import JSONResponse
|
3 |
import os
|
4 |
from yt_dlp import YoutubeDL
|
5 |
|
|
|
19 |
reel_url: str = Query(..., description="The URL of the Instagram Reel to download"),
|
20 |
):
|
21 |
"""
|
22 |
+
Download an Instagram Reel using yt-dlp and provide a download link.
|
23 |
|
24 |
Args:
|
25 |
reel_url (str): The URL of the Instagram Reel.
|
26 |
|
27 |
Returns:
|
28 |
+
JSONResponse: A JSON object containing the download link.
|
29 |
"""
|
30 |
if not reel_url:
|
31 |
raise HTTPException(status_code=400, detail="The 'reel_url' parameter is required.")
|
|
|
43 |
filename = ydl.prepare_filename(info)
|
44 |
if not os.path.exists(filename):
|
45 |
raise HTTPException(status_code=500, detail="Failed to download the Reel.")
|
46 |
+
|
47 |
+
# Construct the download link
|
48 |
+
file_name = os.path.basename(filename)
|
49 |
+
download_link = f"http://your-domain.com/files/{file_name}"
|
50 |
+
|
51 |
+
return JSONResponse(content={"download_link": download_link})
|
52 |
except Exception as e:
|
53 |
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")
|
54 |
+
|
55 |
+
@app.get("/files/{file_name}")
|
56 |
+
def serve_file(file_name: str):
|
57 |
+
"""
|
58 |
+
Serve the downloaded file for users to download.
|
59 |
+
"""
|
60 |
+
file_path = os.path.join(DOWNLOAD_DIR, file_name)
|
61 |
+
if not os.path.exists(file_path):
|
62 |
+
raise HTTPException(status_code=404, detail="File not found.")
|
63 |
+
return FileResponse(path=file_path, filename=file_name, media_type="video/mp4")
|