Füge Unterstützung für den FFmpeg-Pfad in den Optionen hinzu. Erweitere die Log-Ausgabe um den FFmpeg-Pfad, wenn die Option aktiviert ist.

This commit is contained in:
Akamaru
2025-05-05 20:17:30 +02:00
parent c7b235d38e
commit a25f4d9019

53
main.py
View File

@@ -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"):