Stay up to date on the latest product releases, special offers & news by signing up for our newsletter.
Read our privacy policy.
def download(self): url = self.url_entry.get().strip() if not url: messagebox.showerror("Error", "Please enter a YouTube URL") return self.download_btn.config(state=tk.DISABLED) self.progress.start() self.status.config(text="Downloading...") thread = threading.Thread(target=self.download_thread, args=(url,)) thread.start()
if args.playlist: download_playlist(args.url, args.output, args.max) else: download_youtube_as_mp3(args.url, args.output, args.quality) if == " main ": main() Installation & Usage 1. Install Dependencies # Install yt-dlp pip install yt-dlp Install ffmpeg (required for conversion) On Ubuntu/Debian: sudo apt-get install ffmpeg On macOS: brew install ffmpeg On Windows: Download from https://ffmpeg.org/download.html 2. Usage Examples # Download single video as MP3 python yt2mp3.py "https://www.youtube.com/watch?v=VIDEO_ID" Specify output directory and quality python yt2mp3.py "https://www.youtube.com/watch?v=VIDEO_ID" -o music -q best Download entire playlist python yt2mp3.py "https://www.youtube.com/playlist?list=PLAYLIST_ID" -p Download first 5 videos from playlist python yt2mp3.py "https://www.youtube.com/playlist?list=PLAYLIST_ID" -p -m 5 Advanced Script with GUI (Optional) # Simple GUI version using tkinter import tkinter as tk from tkinter import ttk, filedialog, messagebox import threading class YouTubeDownloader: def init (self, root): self.root = root self.root.title("YouTube to MP3 Downloader") self.root.geometry("600x300") youtube to mp3 script
Args: url: YouTube video URL output_dir: Directory to save the MP3 file quality: Audio quality (best, good, worst) """ try: import yt_dlp # Create output directory if it doesn't exist Path(output_dir).mkdir(parents=True, exist_ok=True) # Configure yt-dlp options ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192', # Bitrate: 192kbps }], 'outtmpl': os.path.join(output_dir, '%(title)s.%(ext)s'), 'quiet': False, 'no_warnings': False, 'extract_flat': False, 'progress_hooks': [progress_hook], } # Adjust quality if quality == "best": ydl_opts['postprocessors'][0]['preferredquality'] = '320' elif quality == "good": ydl_opts['postprocessors'][0]['preferredquality'] = '192' elif quality == "worst": ydl_opts['postprocessors'][0]['preferredquality'] = '128' # Download and convert with yt_dlp.YoutubeDL(ydl_opts) as ydl: print(f"Downloading: {url}") ydl.download([url]) print(f"\n✅ Download complete! Saved to: {output_dir}") except ImportError: print("❌ yt-dlp is not installed. Run: pip install yt-dlp") sys.exit(1) except Exception as e: print(f"❌ Error: {e}") sys.exit(1) def progress_hook(d): """Display download progress""" if d['status'] == 'downloading': if 'total_bytes' in d: percent = (d['downloaded_bytes'] / d['total_bytes']) * 100 print(f"\r⬇️ Downloading: {percent:.1f}%", end='') elif d['status'] == 'finished': print(f"\n🔄 Converting to MP3...") def download(self): url = self
def download_thread(self, url): try: import yt_dlp quality_map = { "Best (320kbps)": "320", "Good (192kbps)": "192", "Worst (128kbps)": "128" } ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': quality_map[self.quality.get()], }], 'outtmpl': f"{self.output_entry.get()}/%(title)s.%(ext)s", 'quiet': True, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([url]) self.root.after(0, self.download_complete, True, "Download complete!") except Exception as e: self.root.after(0, self.download_complete, False, str(e)) "Good (192kbps)": "192"
args = parser.parse_args()