From a25f4d90193ad3de93b285d279eb07a4fb0b01d8 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Mon, 5 May 2025 20:17:30 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=BCge=20Unterst=C3=BCtzung=20f=C3=BCr=20den?= =?UTF-8?q?=20FFmpeg-Pfad=20in=20den=20Optionen=20hinzu.=20Erweitere=20die?= =?UTF-8?q?=20Log-Ausgabe=20um=20den=20FFmpeg-Pfad,=20wenn=20die=20Option?= =?UTF-8?q?=20aktiviert=20ist.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 19058f4..4bf6a01 100644 --- a/main.py +++ b/main.py @@ -74,11 +74,13 @@ DEFAULT_CONFIG = { "ytdlp_flags": { "ignore_config": False, "remux_mkv": False, - "embed_metadata": False + "embed_metadata": False, + "use_ffmpeg_location": False }, "hide_default_presets": False, "enable_adn_tab": False, - "mkvmerge_path": "C:\\Program Files\\MKVToolNix\\mkvmerge.exe" + "mkvmerge_path": "C:\\Program Files\\MKVToolNix\\mkvmerge.exe", + "ffmpeg_path": "C:\\ffmpeg\\bin\\ffmpeg.exe" } # Template-Variablen für Serien @@ -996,7 +998,7 @@ class OptionenDialog(QDialog): def __init__(self, output_dir, use_local_ytdlp, parent=None, ytdlp_flags=None): super().__init__(parent) self.setWindowTitle("Optionen") - self.resize(420, 250) + self.resize(420, 300) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) # Icon für den Dialog setzen @@ -1009,7 +1011,8 @@ class OptionenDialog(QDialog): self.selected_flags = ytdlp_flags or { "ignore_config": False, "remux_mkv": False, - "embed_metadata": False + "embed_metadata": False, + "use_ffmpeg_location": False } self.setup_ui() @@ -1036,6 +1039,15 @@ class OptionenDialog(QDialog): mkvmerge_hbox.addWidget(self.mkvmerge_path_input) mkvmerge_hbox.addWidget(mkvmerge_browse_btn) layout.addRow("MKVMerge-Pfad:", mkvmerge_hbox) + + # FFmpeg-Pfad hinzufügen + self.ffmpeg_path_input = QLineEdit(self.parent().config.get("ffmpeg_path", "C:\\ffmpeg\\bin\\ffmpeg.exe") if self.parent() else "C:\\ffmpeg\\bin\\ffmpeg.exe") + ffmpeg_browse_btn = QPushButton("Durchsuchen...") + ffmpeg_browse_btn.clicked.connect(self.browse_ffmpeg_path) + ffmpeg_hbox = QHBoxLayout() + ffmpeg_hbox.addWidget(self.ffmpeg_path_input) + ffmpeg_hbox.addWidget(ffmpeg_browse_btn) + layout.addRow("FFmpeg-Pfad:", ffmpeg_hbox) self.ytdlp_source_combo = QComboBox() self.ytdlp_source_combo.addItems(["Lokal (bin/yt-dlp.exe)", "System (PATH)"]) @@ -1081,6 +1093,10 @@ class OptionenDialog(QDialog): self.cb_embed_metadata.setChecked(self.selected_flags.get("embed_metadata", False)) flags_layout.addWidget(self.cb_embed_metadata) flags_layout.addWidget(QLabel("Betten Metadaten in die Ausgabedatei ein.")) + self.cb_use_ffmpeg_location = QCheckBox("--ffmpeg-location") + 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.")) tab_flags.setLayout(flags_layout) tabs.addTab(tab_flags, "yt-dlp-Flags") @@ -1127,6 +1143,13 @@ class OptionenDialog(QDialog): if file_path: self.mkvmerge_path_input.setText(file_path) + def browse_ffmpeg_path(self): + file_path, _ = QFileDialog.getOpenFileName(self, "FFmpeg-Executable auswählen", + self.ffmpeg_path_input.text() or "C:\\ffmpeg\\bin", + "Executable (*.exe)") + if file_path: + self.ffmpeg_path_input.setText(file_path) + def get_values(self): return ( self.output_dir_input.text(), @@ -1134,11 +1157,13 @@ class OptionenDialog(QDialog): { "ignore_config": self.cb_ignore_config.isChecked(), "remux_mkv": self.cb_remux_mkv.isChecked(), - "embed_metadata": self.cb_embed_metadata.isChecked() + "embed_metadata": self.cb_embed_metadata.isChecked(), + "use_ffmpeg_location": self.cb_use_ffmpeg_location.isChecked() }, self.hide_defaults_cb.isChecked(), self.mkvmerge_path_input.text(), - self.enable_adn_tab_cb.isChecked() + self.enable_adn_tab_cb.isChecked(), + self.ffmpeg_path_input.text() ) def download_ytdlp(self): @@ -1617,13 +1642,14 @@ class MainWindow(QMainWindow): self.config.get("ytdlp_flags", DEFAULT_CONFIG["ytdlp_flags"]) ) if dialog.exec_() == QDialog.Accepted: - output_dir, use_local_ytdlp, ytdlp_flags, hide_defaults, mkvmerge_path, enable_adn_tab = dialog.get_values() + output_dir, use_local_ytdlp, ytdlp_flags, hide_defaults, mkvmerge_path, enable_adn_tab, ffmpeg_path = dialog.get_values() self.config["output_dir"] = output_dir self.config["use_local_ytdlp"] = use_local_ytdlp self.config["ytdlp_flags"] = ytdlp_flags self.config["hide_default_presets"] = hide_defaults self.config["mkvmerge_path"] = mkvmerge_path self.config["enable_adn_tab"] = enable_adn_tab + self.config["ffmpeg_path"] = ffmpeg_path self.update_preset_combo() self.update_cmd_preview() @@ -1713,6 +1739,9 @@ class MainWindow(QMainWindow): # HLS-ffmpeg if preset.get("hls_ffmpeg"): cmd.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"]) + # FFmpeg-Pfad + if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): + cmd.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) # Untertitel if preset.get("sublang"): cmd.extend(["--sub-lang", preset["sublang"]]) @@ -1812,6 +1841,9 @@ class MainWindow(QMainWindow): extra_args.append(f"--referer={preset['referer']}") if preset.get("hls_ffmpeg"): extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"]) + # FFmpeg-Pfad + if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): + extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) if preset.get("sublang"): extra_args.extend(["--sub-lang", preset["sublang"]]) if preset.get("embed_subs"): @@ -1850,6 +1882,10 @@ class MainWindow(QMainWindow): self.log_output.append(f"Untertitel-Format: {preset.get('subformat','')}") self.log_output.append(f"Ausgabedateiname: {output_filename}") + # FFmpeg-Pfad + if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): + self.log_output.append(f"FFmpeg-Pfad: {self.config.get('ffmpeg_path')}") + # Format-Auswahl und Dual-Audio if preset.get("use_format_selection", False): self.log_output.append("Format-Auswahl ist aktiviert.") @@ -2011,6 +2047,9 @@ class MainWindow(QMainWindow): extra_args.append(f"--referer={preset['referer']}") if preset.get("hls_ffmpeg"): extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"]) + # FFmpeg-Pfad + if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"): + extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")]) if preset.get("sublang"): extra_args.extend(["--sub-lang", preset["sublang"]]) if preset.get("embed_subs"):