import subprocess from pathlib import Path from config import settings def download_song(query: str): Path(settings.MUSIC_DIR).mkdir(parents=True, exist_ok=True) output_template = f"{settings.MUSIC_DIR}/%(title)s.%(ext)s" command = [ "yt-dlp", f"ytsearch1:{query}", "--extract-audio", "--audio-format", "mp3", "--add-metadata", "--output", output_template, "--no-playlist", "--verbose" ] print("Running command:", " ".join(command)) result = subprocess.run(command, capture_output=True, text=True) print("STDOUT:", result.stdout) print("STDERR:", result.stderr) if result.returncode != 0: raise Exception(f"yt-dlp failed: {result.stderr}") # Try to find the actual filename # You can parse result.stdout or list the directory for the latest file return {"downloaded": "Check music folder for artist - title.mp3"}