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()
|
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):
|
def update_cmd_preview(self):
|
||||||
preset = self.get_current_preset()
|
preset = self.get_current_preset()
|
||||||
if not preset:
|
if not preset:
|
||||||
self.cmd_preview.setText("Kein Preset ausgewählt.")
|
self.cmd_preview.setText("Kein Preset ausgewählt.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Zeige Preset-Informationen in der Ausgabe an
|
||||||
|
self.show_preset_info(preset)
|
||||||
|
|
||||||
if self.config["use_local_ytdlp"]:
|
if self.config["use_local_ytdlp"]:
|
||||||
ytdlp_path = os.path.join(get_base_path(), "bin", "yt-dlp.exe")
|
ytdlp_path = os.path.join(get_base_path(), "bin", "yt-dlp.exe")
|
||||||
if not os.path.exists(ytdlp_path):
|
if not os.path.exists(ytdlp_path):
|
||||||
@@ -1776,8 +1737,37 @@ class MainWindow(QMainWindow):
|
|||||||
# Wenn ein eigener Pfad im Preset definiert ist, diesen verwenden
|
# Wenn ein eigener Pfad im Preset definiert ist, diesen verwenden
|
||||||
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
custom_path = self.custom_path_input.text() or preset.get("custom_path", "")
|
||||||
output_dir = custom_path if custom_path else self.config["output_dir"]
|
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:
|
if output_dir:
|
||||||
output_path = os.path.join(output_dir, output_filename)
|
output_path = os.path.join(output_dir, output_filename)
|
||||||
cmd.extend(["-o", output_path])
|
cmd.extend(["-o", output_path])
|
||||||
@@ -1796,6 +1786,97 @@ class MainWindow(QMainWindow):
|
|||||||
command_string = " ".join(formatted_cmd)
|
command_string = " ".join(formatted_cmd)
|
||||||
masked_command = mask_sensitive_data(command_string)
|
masked_command = mask_sensitive_data(command_string)
|
||||||
self.cmd_preview.setText(masked_command)
|
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):
|
def start_download(self):
|
||||||
# Wenn bereits ein Download läuft und der Button als "Abbrechen" angezeigt wird
|
# Wenn bereits ein Download läuft und der Button als "Abbrechen" angezeigt wird
|
||||||
|
Reference in New Issue
Block a user