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])