diff --git a/main.py b/main.py
index ef829c7..578f04a 100644
--- a/main.py
+++ b/main.py
@@ -186,12 +186,23 @@ class DownloadThread(QThread):
self.update_signal.emit(f"Debug - Vollständiger Ausgabepfad: {output_path}")
cmd.extend(["-o", output_path])
else:
- default_path = os.path.join(self.output_dir, "%(title)s.%(ext)s")
- self.update_signal.emit(f"Debug - Standard-Ausgabepfad: {default_path}")
- cmd.extend(["-o", default_path])
+ # Verwende benutzerdefinierten Namen, wenn in den Presets aktiviert
+ if self.preset_data.get("custom_output_template", False) and self.preset_data.get("output_template"):
+ output_template = self.preset_data.get("output_template")
+ output_path = os.path.join(self.output_dir, output_template)
+ self.update_signal.emit(f"Debug - Benutzerdefinierte Name: {output_path}")
+ else:
+ output_path = os.path.join(self.output_dir, "%(title)s.%(ext)s")
+ self.update_signal.emit(f"Debug - Standard-Ausgabepfad: {output_path}")
+ cmd.extend(["-o", output_path])
elif self.output_filename:
self.update_signal.emit(f"Debug - Nur Ausgabedateiname: {self.output_filename}")
cmd.extend(["-o", self.output_filename])
+ elif self.preset_data.get("custom_output_template", False) and self.preset_data.get("output_template"):
+ # Wenn kein Ausgabeverzeichnis, aber benutzerdefinierte Vorlage vorhanden
+ output_template = self.preset_data.get("output_template")
+ self.update_signal.emit(f"Debug - Nur benutzerdefinierte Name: {output_template}")
+ cmd.extend(["-o", output_template])
cmd.append(self.url)
@@ -718,7 +729,9 @@ class PresetDialog(QDialog):
"episode": "1",
"extension": ".mkv",
"custom_path": "",
- "is_audio": False
+ "is_audio": False,
+ "custom_output_template": False,
+ "output_template": "%(title)s.%(ext)s"
}
self.setup_ui()
@@ -798,7 +811,34 @@ class PresetDialog(QDialog):
subtitle_tab.setLayout(subtitle_layout)
tabs.addTab(subtitle_tab, "Untertitel")
- # Tab 3: Authentifizierung
+ # Tab 3: Output Template
+ output_tab = QWidget()
+ output_layout = QFormLayout()
+
+ # Custom Output Template Checkbox
+ self.custom_output_template_cb = QCheckBox("Eigenen Namen verwenden")
+ self.custom_output_template_cb.setChecked(self.preset_data.get("custom_output_template", False))
+ output_layout.addRow(self.custom_output_template_cb)
+
+ # Output Template Field
+ self.output_template_edit = QLineEdit(self.preset_data.get("output_template", "%(title)s.%(ext)s"))
+ self.output_template_edit.setPlaceholderText("z.B. %(title)s.%(ext)s, %(uploader)s/%(title)s.%(ext)s")
+ output_layout.addRow("Name:", self.output_template_edit)
+
+ # Add examples and documentation link
+ examples_label = QLabel("Beispiele:
" +
+ "%(title)s-%(id)s.%(ext)s
" +
+ "%(uploader)s/%(title)s.%(ext)s
" +
+ "%(playlist)s/%(playlist_index)s-%(title)s.%(ext)s
" +
+ "Mehr Beispiele in der yt-dlp Dokumentation")
+ examples_label.setOpenExternalLinks(True)
+ examples_label.setTextFormat(Qt.RichText)
+ output_layout.addRow(examples_label)
+
+ output_tab.setLayout(output_layout)
+ tabs.addTab(output_tab, "Name")
+
+ # Tab 4: Authentifizierung
auth_tab = QWidget()
auth_layout = QFormLayout()
@@ -971,7 +1011,9 @@ class PresetDialog(QDialog):
"temp_de_filename": self.temp_de_filename_edit.text(),
"de_sub_filename": self.de_sub_filename_edit.text(),
"de_forced_sub_filename": self.de_forced_sub_filename_edit.text(),
- "cleanup_temp": self.cleanup_temp_cb.isChecked()
+ "cleanup_temp": self.cleanup_temp_cb.isChecked(),
+ "custom_output_template": self.custom_output_template_cb.isChecked(),
+ "output_template": self.output_template_edit.text()
}
def browse_custom_path(self):
@@ -1104,7 +1146,7 @@ class OptionenDialog(QDialog):
tab_info = QWidget()
info_layout = QVBoxLayout()
info_text = (
- "Version: 1.3
"
+ "Version: 1.4
"
"© 2025 Akamaru
"
"Sourcecode: https://git.ponywave.de/Akamaru/video-download-helper
"
"Erstellt mit Hilfe von Claude, GPT & Gemini"
@@ -1768,8 +1810,13 @@ class MainWindow(QMainWindow):
output_name = output_name.replace("\\\\", "\\")
output_filename = output_name
else:
- output_filename = "%(title)s.%(ext)s"
-
+ # Verwende benutzerdefinierte Ausgabevorlage, wenn in den Presets aktiviert
+ if preset.get("custom_output_template", False) and preset.get("output_template"):
+ output_filename = preset.get("output_template")
+ else:
+ output_filename = "%(title)s.%(ext)s"
+
+ # Füge den Ausgabepfad zum Befehl hinzu
if output_dir:
output_path = os.path.join(output_dir, output_filename)
cmd.extend(["-o", output_path])