diff --git a/backend/__pycache__/downloader.cpython-310.pyc b/backend/__pycache__/downloader.cpython-310.pyc index 391accf..71f9947 100644 Binary files a/backend/__pycache__/downloader.cpython-310.pyc and b/backend/__pycache__/downloader.cpython-310.pyc differ diff --git a/backend/downloader.py b/backend/downloader.py index 31cc503..d4abd16 100644 --- a/backend/downloader.py +++ b/backend/downloader.py @@ -2,25 +2,29 @@ import subprocess from pathlib import Path from config import settings +def is_playlist(query: str) -> bool: + return "playlist" in query or "list=" in query + 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}", + f"{query if query.startswith('http') else f'ytsearch1:{query}'}", "--extract-audio", "--audio-format", "mp3", "--add-metadata", "--output", output_template, - "--no-playlist", "--verbose" ] + # Only add --no-playlist for search queries + if not is_playlist(query) and not query.startswith("http"): + command.append("--no-playlist") + 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"} \ No newline at end of file + return {"downloaded": "Check music folder for downloaded files"} \ No newline at end of file diff --git a/backend/music/Alan Walker - Alone [FREE]-No Copyright Sounds.mp3 b/backend/music/Alan Walker - Alone [FREE]-No Copyright Sounds.mp3 deleted file mode 100644 index 8f11dda..0000000 Binary files a/backend/music/Alan Walker - Alone [FREE]-No Copyright Sounds.mp3 and /dev/null differ