import os import tkinter as tk from pytube import YouTube def create_directory(directory): if not os.path.exists(directory): os.makedirs(directory) def download_video(): url = url_entry.get() save_as_mp3 = mp3_var.get() save_as_mp4 = mp4_var.get() selected_quality = quality_var.get() if not save_as_mp3 and not save_as_mp4: status_label.config(text="Bitte wählen Sie mindestens ein Format aus.") return try: video = YouTube(url) if save_as_mp3: audio = video.streams.filter(only_audio=True).first() create_directory("mp3") audio.download(output_path="D:/Youtube Download/mp3/") status_label.config(text="MP3-Datei erfolgreich heruntergeladen.") if save_as_mp4: create_directory("mp4") stream = video.streams.filter(progressive=True) filtered_streams = [] for s in stream: if s.resolution == selected_quality: filtered_streams.append(s) if len(filtered_streams) > 0: filtered_streams[0].download(output_path="D:/Youtube Download/mp4/") status_label.config(text="MP4-Datei erfolgreich heruntergeladen.") else: status_label.config(text="Kein Stream in der angegebenen Qualität gefunden.") except Exception as e: status_label.config(text="Fehler beim Herunterladen: " + str(e)) # GUI erstellen window = tk.Tk() window.title("YouTube Downloader") # URL-Eingabefeld url_label = tk.Label(window, text="YouTube-URL:") url_label.pack() url_entry = tk.Entry(window, width=50) url_entry.pack() # Auswahlmöglichkeiten für Dateiformate format_label = tk.Label(window, text="Format:") format_label.pack() mp3_var = tk.IntVar() mp3_checkbox = tk.Checkbutton(window, text=".mp3", variable=mp3_var) mp3_checkbox.pack() mp4_var = tk.IntVar() mp4_checkbox = tk.Checkbutton(window, text=".mp4", variable=mp4_var) mp4_checkbox.pack() # Auswahlmöglichkeiten für Videoqualität quality_label = tk.Label(window, text="Videoqualität:") quality_label.pack() quality_var = tk.StringVar() quality_var.set("720p") # Standard-Qualität quality_dropdown = tk.OptionMenu(window, quality_var, "144p", "240p", "360p", "480p", "720p") quality_dropdown.pack() # Download-Button download_button = tk.Button(window, text="Download", command=download_video) download_button.pack() # Statuslabel status_label = tk.Label(window, text="") status_label.pack() # GUI starten window.mainloop()