This commit is contained in:
dvirlabs 2025-07-10 10:11:40 +03:00
parent 735b15e80a
commit 2c22ad59b7
3 changed files with 33 additions and 38 deletions

33
backend/downloader.py Normal file
View File

@ -0,0 +1,33 @@
import subprocess
import os
from config import settings
import uuid
import requests
def download_song(query: str):
output_template = os.path.join(settings.MUSIC_DIR, "%(title)s.%(ext)s")
command = [
"yt-dlp",
f"ytsearch1:{query}",
"--extract-audio",
"--audio-format", "mp3",
"--output", output_template
]
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
raise Exception(f"Download failed: {result.stderr}")
# Optional: trigger navidrome scan
if settings.NAVIDROME_SCAN_URL:
try:
requests.post(settings.NAVIDROME_SCAN_URL, timeout=5)
except Exception as e:
pass # non-critical
return {
"query": query,
"log": result.stdout
}

View File

@ -12,38 +12,3 @@ def download(query: str = Query(..., description="Song name or YouTube search te
return JSONResponse(content={"status": "success", **result})
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
# downloader.py
import subprocess
import os
from config import settings
import uuid
import requests
def download_song(query: str):
output_template = os.path.join(settings.MUSIC_DIR, "%(title)s.%(ext)s")
command = [
"yt-dlp",
f"ytsearch1:{query}",
"--extract-audio",
"--audio-format", "mp3",
"--output", output_template
]
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
raise Exception(f"Download failed: {result.stderr}")
# Optional: trigger navidrome scan
if settings.NAVIDROME_SCAN_URL:
try:
requests.post(settings.NAVIDROME_SCAN_URL, timeout=5)
except Exception as e:
pass # non-critical
return {
"query": query,
"log": result.stdout
}

View File

@ -2,6 +2,3 @@ fastapi
uvicorn
pydantic
requests
downloader
config
urllib2