Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from fastapi.responses import JSONResponse | |
| from fastapi.middleware.cors import CORSMiddleware # Import the CORS middleware | |
| from yt_dlp import YoutubeDL | |
| import json | |
| app = FastAPI() | |
| # --- CORS Configuration --- | |
| # This is the part you need to add. | |
| # It allows your API to be called from any website. | |
| # List of origins that are allowed to make requests to your API. | |
| # Using ["*"] allows all origins, which is simple for a public API. | |
| origins = ["*"] | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=origins, | |
| allow_credentials=True, | |
| allow_methods=["*"], # Allows all methods (GET, POST, etc.) | |
| allow_headers=["*"], # Allows all headers | |
| ) | |
| # --- End of CORS Configuration --- | |
| async def root(): | |
| return {"message": "Welcome to the All-In-One Downloader API!"} | |
| async def download_media(url: str): | |
| if not url: | |
| raise HTTPException(status_code=400, detail="URL parameter is required.") | |
| # These options are fine. No changes needed here. | |
| ydl_opts = { | |
| 'noplaylist': True, | |
| 'quiet': True, | |
| 'dump_single_json': True, | |
| 'format': 'best' # You can add this to prefer the best quality format | |
| } | |
| try: | |
| with YoutubeDL(ydl_opts) as ydl: | |
| # The 'download=False' is correct. It just extracts info. | |
| info_dict = ydl.extract_info(url, download=False) | |
| # Returning the JSON response is also correct. | |
| return JSONResponse(content=info_dict) | |
| # Your error handling is good. No changes needed here. | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) |