abc / app.py
Twan07's picture
Create app.py
9529fcd verified
from fastapi import FastAPI, Query
from fastapi.responses import JSONResponse
import subprocess
import json
app = FastAPI()
@app.get("/")
def root():
return {"message": "Welcome to yt-dlp API (FastAPI)"}
@app.get("/download")
def download_info(url: str = Query(..., description="Video URL")):
try:
result = subprocess.run(
["yt-dlp", "-J", url],
capture_output=True, text=True, timeout=20
)
if result.returncode != 0:
return JSONResponse(status_code=500, content={"error": result.stderr})
data = json.loads(result.stdout)
return {
"title": data.get("title"),
"uploader": data.get("uploader"),
"duration": data.get("duration"),
"formats": [
{
"format_id": f["format_id"],
"ext": f["ext"],
"resolution": f.get("resolution") or f"{f.get('height')}p",
"url": f["url"]
}
for f in data.get("formats", [])
]
}
except Exception as e:
return JSONResponse(status_code=500, content={"error": str(e)})