Verbessere die Ausgabe von Preset-Informationen und aktualisiere die Log-Ausgabe.
This commit is contained in:
169
main.py
169
main.py
@@ -1671,54 +1671,15 @@ class MainWindow(QMainWindow):
|
||||
|
||||
self.update_cmd_preview()
|
||||
|
||||
def get_output_filename(self, preset):
|
||||
if preset.get("has_series_template", False):
|
||||
template = preset.get("series_template", SERIES_TEMPLATE)
|
||||
series = self.series_input.text() or preset.get("series", "")
|
||||
season = self.season_input.text() or preset.get("season", "1")
|
||||
episode = self.episode_input.text() or preset.get("episode", "1")
|
||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||
# Stelle sicher, dass der Pfad mit einem Trennzeichen endet, wenn er nicht leer ist
|
||||
if custom_path and not custom_path.endswith("/") and not custom_path.endswith("\\"):
|
||||
custom_path += "/" # Verwende / als universellen Pfadtrenner
|
||||
output_name = template
|
||||
output_name = output_name.replace("{series}", series)
|
||||
output_name = output_name.replace("{season}", season)
|
||||
output_name = output_name.replace("{episode}", episode)
|
||||
# Entferne {path} Platzhalter, da custom_path jetzt als output_dir verwendet wird
|
||||
output_name = output_name.replace("{path}", "")
|
||||
# {extension} durch .%(ext)s ersetzen (auch rückwärtskompatibel)
|
||||
output_name = output_name.replace("{extension}", ".%(ext)s")
|
||||
# Falls jemand %(ext)s nicht im Template hat, ergänzen wir es am Ende
|
||||
if "%(ext)s" not in output_name:
|
||||
output_name += ".%(ext)s"
|
||||
# Entferne doppelte Schrägstriche
|
||||
while "//" in output_name:
|
||||
output_name = output_name.replace("//", "/")
|
||||
while "\\\\" in output_name:
|
||||
output_name = output_name.replace("\\\\", "\\")
|
||||
self.log_output.append("Ausgabedatei-Komponenten:")
|
||||
self.log_output.append(f" Template: {template}")
|
||||
self.log_output.append(f" Serie: {series}")
|
||||
self.log_output.append(f" Staffel: {season}")
|
||||
self.log_output.append(f" Folge: {episode}")
|
||||
self.log_output.append(f" Eigener Pfad: {custom_path}")
|
||||
self.log_output.append(f"Generierter Dateiname: {output_name}")
|
||||
return output_name
|
||||
# Debug-Ausgabe auch im Nicht-Serienfall
|
||||
output_name = "%(title)s.%(ext)s"
|
||||
# Kein custom_path mehr in output_name, da dies bereits als output_dir verwendet wird
|
||||
self.log_output.append("Ausgabedatei-Komponenten:")
|
||||
self.log_output.append(f" Template: {output_name}")
|
||||
self.log_output.append(f" Eigener Pfad: {self.custom_path_input.text() or preset.get('custom_path', '')}")
|
||||
self.log_output.append(f"Generierter Dateiname: {output_name}")
|
||||
return output_name
|
||||
|
||||
def update_cmd_preview(self):
|
||||
preset = self.get_current_preset()
|
||||
if not preset:
|
||||
self.cmd_preview.setText("Kein Preset ausgewählt.")
|
||||
return
|
||||
|
||||
# Zeige Preset-Informationen in der Ausgabe an
|
||||
self.show_preset_info(preset)
|
||||
|
||||
if self.config["use_local_ytdlp"]:
|
||||
ytdlp_path = os.path.join(get_base_path(), "bin", "yt-dlp.exe")
|
||||
if not os.path.exists(ytdlp_path):
|
||||
@@ -1776,8 +1737,37 @@ class MainWindow(QMainWindow):
|
||||
# Wenn ein eigener Pfad im Preset definiert ist, diesen verwenden
|
||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||
output_dir = custom_path if custom_path else self.config["output_dir"]
|
||||
|
||||
# Generiere den Dateinamen ohne Debug-Ausgaben
|
||||
if preset.get("has_series_template", False):
|
||||
template = preset.get("series_template", SERIES_TEMPLATE)
|
||||
series = self.series_input.text() or preset.get("series", "")
|
||||
season = self.season_input.text() or preset.get("season", "1")
|
||||
episode = self.episode_input.text() or preset.get("episode", "1")
|
||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||
# Stelle sicher, dass der Pfad mit einem Trennzeichen endet, wenn er nicht leer ist
|
||||
if custom_path and not custom_path.endswith("/") and not custom_path.endswith("\\"):
|
||||
custom_path += "/" # Verwende / als universellen Pfadtrenner
|
||||
output_name = template
|
||||
output_name = output_name.replace("{series}", series)
|
||||
output_name = output_name.replace("{season}", season)
|
||||
output_name = output_name.replace("{episode}", episode)
|
||||
# Entferne {path} Platzhalter, da custom_path jetzt als output_dir verwendet wird
|
||||
output_name = output_name.replace("{path}", "")
|
||||
# {extension} durch .%(ext)s ersetzen (auch rückwärtskompatibel)
|
||||
output_name = output_name.replace("{extension}", ".%(ext)s")
|
||||
# Falls jemand %(ext)s nicht im Template hat, ergänzen wir es am Ende
|
||||
if "%(ext)s" not in output_name:
|
||||
output_name += ".%(ext)s"
|
||||
# Entferne doppelte Schrägstriche
|
||||
while "//" in output_name:
|
||||
output_name = output_name.replace("//", "/")
|
||||
while "\\\\" in output_name:
|
||||
output_name = output_name.replace("\\\\", "\\")
|
||||
output_filename = output_name
|
||||
else:
|
||||
output_filename = "%(title)s.%(ext)s"
|
||||
|
||||
output_filename = self.get_output_filename(preset)
|
||||
if output_dir:
|
||||
output_path = os.path.join(output_dir, output_filename)
|
||||
cmd.extend(["-o", output_path])
|
||||
@@ -1796,6 +1786,97 @@ class MainWindow(QMainWindow):
|
||||
command_string = " ".join(formatted_cmd)
|
||||
masked_command = mask_sensitive_data(command_string)
|
||||
self.cmd_preview.setText(masked_command)
|
||||
|
||||
def show_preset_info(self, preset):
|
||||
"""Zeigt Informationen zum ausgewählten Preset in der Ausgabe an."""
|
||||
self.log_output.clear()
|
||||
self.log_output.append(f"Preset: {preset['name']}")
|
||||
if preset.get("description"):
|
||||
self.log_output.append(f"Beschreibung: {preset['description']}")
|
||||
|
||||
# Ausgabepfad
|
||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||
output_dir = custom_path if custom_path else self.config["output_dir"]
|
||||
self.log_output.append(f"Ausgabeverzeichnis: {output_dir or '(Standard)'}")
|
||||
|
||||
# Serien-Informationen
|
||||
if preset.get("has_series_template", False):
|
||||
self.log_output.append("\nSerien-Einstellungen:")
|
||||
template = preset.get("series_template", SERIES_TEMPLATE)
|
||||
series = self.series_input.text() or preset.get("series", "")
|
||||
season = self.season_input.text() or preset.get("season", "1")
|
||||
episode = self.episode_input.text() or preset.get("episode", "1")
|
||||
|
||||
self.log_output.append(f" Template: {template}")
|
||||
self.log_output.append(f" Serie: {series}")
|
||||
self.log_output.append(f" Staffel: {season}")
|
||||
self.log_output.append(f" Folge: {episode}")
|
||||
|
||||
# Generiere Beispiel-Dateinamen
|
||||
output_name = template
|
||||
output_name = output_name.replace("{series}", series)
|
||||
output_name = output_name.replace("{season}", season)
|
||||
output_name = output_name.replace("{episode}", episode)
|
||||
output_name = output_name.replace("{path}", "")
|
||||
output_name = output_name.replace("{extension}", ".mp4")
|
||||
|
||||
self.log_output.append(f" Beispiel-Dateiname: {output_name}")
|
||||
|
||||
# Preset-Argumente
|
||||
self.log_output.append("\nArgumente:")
|
||||
self.log_output.append(f" {preset['args']}")
|
||||
|
||||
# Besondere Eigenschaften
|
||||
special_features = []
|
||||
if preset.get("is_audio", False):
|
||||
special_features.append("Audio-Preset")
|
||||
if preset.get("username"):
|
||||
special_features.append("Authentifizierung")
|
||||
if preset.get("referer"):
|
||||
special_features.append("Referer")
|
||||
if preset.get("hls_ffmpeg", False):
|
||||
special_features.append("HLS-ffmpeg")
|
||||
if preset.get("sublang") or preset.get("embed_subs") or preset.get("subformat"):
|
||||
special_features.append("Untertitel")
|
||||
if preset.get("use_format_selection", False):
|
||||
special_features.append("Format-Auswahl")
|
||||
if preset.get("use_dual_audio", False):
|
||||
special_features.append("Dual-Audio")
|
||||
|
||||
if special_features:
|
||||
self.log_output.append("\nBesondere Eigenschaften:")
|
||||
self.log_output.append(f" {', '.join(special_features)}")
|
||||
|
||||
def get_output_filename(self, preset):
|
||||
"""Generiert den Ausgabedateinamen basierend auf dem Preset und den aktuellen Einstellungen."""
|
||||
if preset.get("has_series_template", False):
|
||||
template = preset.get("series_template", SERIES_TEMPLATE)
|
||||
series = self.series_input.text() or preset.get("series", "")
|
||||
season = self.season_input.text() or preset.get("season", "1")
|
||||
episode = self.episode_input.text() or preset.get("episode", "1")
|
||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||
# Stelle sicher, dass der Pfad mit einem Trennzeichen endet, wenn er nicht leer ist
|
||||
if custom_path and not custom_path.endswith("/") and not custom_path.endswith("\\"):
|
||||
custom_path += "/" # Verwende / als universellen Pfadtrenner
|
||||
output_name = template
|
||||
output_name = output_name.replace("{series}", series)
|
||||
output_name = output_name.replace("{season}", season)
|
||||
output_name = output_name.replace("{episode}", episode)
|
||||
# Entferne {path} Platzhalter, da custom_path jetzt als output_dir verwendet wird
|
||||
output_name = output_name.replace("{path}", "")
|
||||
# {extension} durch .%(ext)s ersetzen (auch rückwärtskompatibel)
|
||||
output_name = output_name.replace("{extension}", ".%(ext)s")
|
||||
# Falls jemand %(ext)s nicht im Template hat, ergänzen wir es am Ende
|
||||
if "%(ext)s" not in output_name:
|
||||
output_name += ".%(ext)s"
|
||||
# Entferne doppelte Schrägstriche
|
||||
while "//" in output_name:
|
||||
output_name = output_name.replace("//", "/")
|
||||
while "\\\\" in output_name:
|
||||
output_name = output_name.replace("\\\\", "\\")
|
||||
return output_name
|
||||
# Im Nicht-Serienfall einfach den Standardnamen zurückgeben
|
||||
return "%(title)s.%(ext)s"
|
||||
|
||||
def start_download(self):
|
||||
# Wenn bereits ein Download läuft und der Button als "Abbrechen" angezeigt wird
|
||||
|
Reference in New Issue
Block a user