diff --git a/build.py b/build.py index 0f91a1a..cb0aed3 100644 --- a/build.py +++ b/build.py @@ -130,10 +130,12 @@ def build_exe(onedir=False, console=False): icon_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "icon.ico") if os.path.exists(icon_path): cmd.extend(["--icon", icon_path]) + # Icon auch als Daten-Datei hinzufügen, damit es zur Laufzeit verfügbar ist + cmd.extend(["--add-data", f"{icon_path}{os.pathsep}."]) print(f"Icon wird verwendet: {icon_path}") else: print("Warnung: icon.ico wurde nicht gefunden.") - + if os.path.exists(bin_dir) and os.listdir(bin_dir): cmd.extend(["--add-data", f"{bin_dir}{os.pathsep}bin"]) if os.path.exists(presets_dir): diff --git a/config.py b/config.py index 16172c1..40cb088 100644 --- a/config.py +++ b/config.py @@ -51,7 +51,11 @@ DEFAULT_CONFIG = { "ignore_config": False, "remux_mkv": False, "embed_metadata": False, - "use_ffmpeg_location": False + "use_ffmpeg_location": False, + "cookies_from_browser": { + "enabled": False, + "browser": "chrome" + } }, "hide_default_presets": False, "enable_adn_tab": False, diff --git a/dialogs.py b/dialogs.py index ed2a34c..faeaee4 100644 --- a/dialogs.py +++ b/dialogs.py @@ -440,6 +440,31 @@ class OptionenDialog(QDialog): self.cb_use_ffmpeg_location.setChecked(self.selected_flags.get("use_ffmpeg_location", False)) flags_layout.addWidget(self.cb_use_ffmpeg_location) flags_layout.addWidget(QLabel("Nutzt den konfigurierten FFmpeg-Pfad für yt-dlp.")) + + # Cookies from Browser + self.cb_cookies_from_browser = QCheckBox("--cookies-from-browser") + cookies_config = self.selected_flags.get("cookies_from_browser", {"enabled": False, "browser": "chrome"}) + self.cb_cookies_from_browser.setChecked(cookies_config.get("enabled", False)) + self.cb_cookies_from_browser.toggled.connect(self.toggle_browser_combo) + flags_layout.addWidget(self.cb_cookies_from_browser) + + # Browser-Auswahl + browser_layout = QHBoxLayout() + browser_layout.addWidget(QLabel("Browser:")) + self.browser_combo = QComboBox() + self.browser_combo.addItem("Chrome", "chrome") + self.browser_combo.addItem("Firefox", "firefox") + # Vorbelegen + browser = cookies_config.get("browser", "chrome") + idx = self.browser_combo.findData(browser) + if idx >= 0: + self.browser_combo.setCurrentIndex(idx) + self.browser_combo.setEnabled(self.cb_cookies_from_browser.isChecked()) + browser_layout.addWidget(self.browser_combo) + browser_layout.addStretch() + flags_layout.addLayout(browser_layout) + flags_layout.addWidget(QLabel("Nutzt Cookies aus dem angegebenen Browser.")) + tab_flags.setLayout(flags_layout) tabs.addTab(tab_flags, "yt-dlp-Flags") @@ -507,14 +532,18 @@ class OptionenDialog(QDialog): dialog.setWindowTitle("FFmpeg-Executable auswählen") dialog.setDirectory(self.ffmpeg_path_input.text() or "C:\\ffmpeg\\bin") dialog.setNameFilter("Executable (*.exe)") - + # Icon setzen set_window_icon(dialog) - + if dialog.exec_(): file_path = dialog.selectedFiles()[0] self.ffmpeg_path_input.setText(file_path) + def toggle_browser_combo(self, checked): + """Aktiviert/Deaktiviert die Browser-ComboBox basierend auf der Checkbox.""" + self.browser_combo.setEnabled(checked) + def get_values(self): return ( self.output_dir_input.text(), @@ -523,7 +552,11 @@ class OptionenDialog(QDialog): "ignore_config": self.cb_ignore_config.isChecked(), "remux_mkv": self.cb_remux_mkv.isChecked(), "embed_metadata": self.cb_embed_metadata.isChecked(), - "use_ffmpeg_location": self.cb_use_ffmpeg_location.isChecked() + "use_ffmpeg_location": self.cb_use_ffmpeg_location.isChecked(), + "cookies_from_browser": { + "enabled": self.cb_cookies_from_browser.isChecked(), + "browser": self.browser_combo.currentData() + } }, self.hide_defaults_cb.isChecked(), self.mkvmerge_path_input.text(), diff --git a/main.py b/main.py index 8882700..e63d32b 100644 --- a/main.py +++ b/main.py @@ -521,6 +521,11 @@ class MainWindow(QMainWindow): # FFmpeg-Pfad if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): cmd.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) + # Cookies from Browser + cookies_config = flags.get("cookies_from_browser", {}) + if isinstance(cookies_config, dict) and cookies_config.get("enabled", False): + browser = cookies_config.get("browser", "chrome") + cmd.extend(["--cookies-from-browser", browser]) # Untertitel if preset.get("sublang"): cmd.extend(["--sub-lang", preset["sublang"]]) @@ -750,6 +755,11 @@ class MainWindow(QMainWindow): # FFmpeg-Pfad if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) + # Cookies from Browser + cookies_config = flags.get("cookies_from_browser", {}) + if isinstance(cookies_config, dict) and cookies_config.get("enabled", False): + browser = cookies_config.get("browser", "chrome") + extra_args.extend(["--cookies-from-browser", browser]) # Untertitel if preset.get("sublang"): extra_args.extend(["--sub-lang", preset["sublang"]]) @@ -1001,6 +1011,11 @@ class MainWindow(QMainWindow): extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"]) if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) + # Cookies from Browser + cookies_config = flags.get("cookies_from_browser", {}) + if isinstance(cookies_config, dict) and cookies_config.get("enabled", False): + browser = cookies_config.get("browser", "chrome") + extra_args.extend(["--cookies-from-browser", browser]) if preset.get("sublang"): extra_args.extend(["--sub-lang", preset["sublang"]]) if preset.get("embed_subs"):