Adiciona endpoint de busca de videos
This commit is contained in:
33
main.py
33
main.py
@@ -166,3 +166,36 @@ def download_video(
|
||||
"videoId": video_id,
|
||||
"filename": filename
|
||||
}
|
||||
|
||||
@app.get("/search")
|
||||
def search_youtube_yt_dlp(
|
||||
q: str = Query(..., description="Termo de busca"),
|
||||
max_results: int = Query(5, ge=1, le=10, description="Número de resultados (máx 10)")
|
||||
):
|
||||
ydl_opts = {
|
||||
"quiet": True,
|
||||
"extract_flat": "in_playlist",
|
||||
"skip_download": True,
|
||||
}
|
||||
|
||||
search_query = f"ytsearch{max_results}:{q}"
|
||||
|
||||
try:
|
||||
with YoutubeDL(ydl_opts) as ydl:
|
||||
search_result = ydl.extract_info(search_query, download=False)
|
||||
entries = search_result.get("entries", [])[:max_results]
|
||||
|
||||
results = []
|
||||
for item in entries:
|
||||
results.append({
|
||||
"videoId": item.get("id"),
|
||||
"title": item.get("title"),
|
||||
"duration": item.get("duration"),
|
||||
"url": item.get("webpage_url"),
|
||||
"channel": item.get("uploader"),
|
||||
"thumbnail": item.get("thumbnail"),
|
||||
})
|
||||
return {"results": results}
|
||||
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Erro ao buscar vídeos: {e}")
|
||||
Reference in New Issue
Block a user