Verschiebe "--cookies-from-browser" nach Preset-Einstellungen
This commit is contained in:
@@ -51,11 +51,7 @@ DEFAULT_CONFIG = {
|
||||
"ignore_config": False,
|
||||
"remux_mkv": False,
|
||||
"embed_metadata": False,
|
||||
"use_ffmpeg_location": False,
|
||||
"cookies_from_browser": {
|
||||
"enabled": False,
|
||||
"browser": "chrome"
|
||||
}
|
||||
"use_ffmpeg_location": False
|
||||
},
|
||||
"hide_default_presets": False,
|
||||
"enable_adn_tab": False,
|
||||
|
||||
148
dialogs.py
148
dialogs.py
@@ -4,10 +4,10 @@ Dialog-Klassen für den Video Download Helper
|
||||
"""
|
||||
import os
|
||||
import subprocess
|
||||
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QFormLayout, QLineEdit, QTextEdit,
|
||||
QPushButton, QComboBox, QCheckBox, QTabWidget, QWidget,
|
||||
QHBoxLayout, QGroupBox, QLabel, QDialogButtonBox,
|
||||
QFileDialog, QMessageBox)
|
||||
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QFormLayout, QLineEdit, QTextEdit,
|
||||
QPushButton, QComboBox, QCheckBox, QTabWidget, QWidget,
|
||||
QHBoxLayout, QGroupBox, QLabel, QDialogButtonBox,
|
||||
QFileDialog, QMessageBox, QRadioButton, QButtonGroup)
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QIcon
|
||||
from config import get_base_path, SERIES_TEMPLATE
|
||||
@@ -148,27 +148,89 @@ class PresetDialog(QDialog):
|
||||
|
||||
# Tab 4: Authentifizierung
|
||||
auth_tab = QWidget()
|
||||
auth_layout = QFormLayout()
|
||||
|
||||
# Login-Felder
|
||||
auth_layout = QVBoxLayout()
|
||||
|
||||
# Radio-Button-Gruppe für Authentifizierungsmethode
|
||||
auth_method_label = QLabel("<b>Authentifizierungsmethode:</b>")
|
||||
auth_layout.addWidget(auth_method_label)
|
||||
|
||||
self.auth_button_group = QButtonGroup()
|
||||
self.auth_none_radio = QRadioButton("Keine Authentifizierung")
|
||||
self.auth_userpass_radio = QRadioButton("Username/Passwort")
|
||||
self.auth_cookies_radio = QRadioButton("Cookies vom Browser")
|
||||
|
||||
self.auth_button_group.addButton(self.auth_none_radio, 0)
|
||||
self.auth_button_group.addButton(self.auth_userpass_radio, 1)
|
||||
self.auth_button_group.addButton(self.auth_cookies_radio, 2)
|
||||
|
||||
auth_layout.addWidget(self.auth_none_radio)
|
||||
auth_layout.addWidget(self.auth_userpass_radio)
|
||||
auth_layout.addWidget(self.auth_cookies_radio)
|
||||
|
||||
# Username/Passwort-Gruppe
|
||||
self.userpass_group = QGroupBox("Username/Passwort")
|
||||
userpass_layout = QFormLayout()
|
||||
|
||||
self.username_edit = QLineEdit(self.preset_data.get("username", ""))
|
||||
self.username_edit.setPlaceholderText("Optional: Benutzername für Login (-u)")
|
||||
auth_layout.addRow("Benutzername:", self.username_edit)
|
||||
|
||||
self.username_edit.setPlaceholderText("Benutzername für Login (-u)")
|
||||
userpass_layout.addRow("Benutzername:", self.username_edit)
|
||||
|
||||
pw_hbox = QHBoxLayout()
|
||||
self.password_edit = QLineEdit(self.preset_data.get("password", ""))
|
||||
self.password_edit.setEchoMode(QLineEdit.Password)
|
||||
self.password_edit.setPlaceholderText("Optional: Passwort für Login (-p)")
|
||||
self.password_edit.setPlaceholderText("Passwort für Login (-p)")
|
||||
self.show_pw_cb = QCheckBox("Passwort anzeigen")
|
||||
self.show_pw_cb.toggled.connect(self.toggle_password_visible)
|
||||
pw_hbox.addWidget(self.password_edit)
|
||||
pw_hbox.addWidget(self.show_pw_cb)
|
||||
auth_layout.addRow("Passwort:", pw_hbox)
|
||||
|
||||
userpass_layout.addRow("Passwort:", pw_hbox)
|
||||
|
||||
pw_hint = QLabel("Hinweis: Passwörter werden im Klartext lokal gespeichert!")
|
||||
pw_hint.setStyleSheet("color: red;")
|
||||
auth_layout.addRow(pw_hint)
|
||||
|
||||
userpass_layout.addRow(pw_hint)
|
||||
|
||||
self.userpass_group.setLayout(userpass_layout)
|
||||
auth_layout.addWidget(self.userpass_group)
|
||||
|
||||
# Cookies-Gruppe
|
||||
self.cookies_group = QGroupBox("Cookies vom Browser")
|
||||
cookies_layout = QFormLayout()
|
||||
|
||||
self.browser_combo = QComboBox()
|
||||
self.browser_combo.addItem("Chrome", "chrome")
|
||||
self.browser_combo.addItem("Firefox", "firefox")
|
||||
cookies_layout.addRow("Browser:", self.browser_combo)
|
||||
|
||||
cookies_hint = QLabel("Nutzt Cookies aus dem angegebenen Browser (--cookies-from-browser)")
|
||||
cookies_layout.addRow(cookies_hint)
|
||||
|
||||
self.cookies_group.setLayout(cookies_layout)
|
||||
auth_layout.addWidget(self.cookies_group)
|
||||
|
||||
# Verbinde Radio-Buttons mit Update-Methode
|
||||
self.auth_button_group.buttonToggled.connect(self.update_auth_fields_state)
|
||||
|
||||
# Bestimme, welche Methode initial ausgewählt werden soll
|
||||
cookies_enabled = self.preset_data.get("cookies_from_browser", {}).get("enabled", False)
|
||||
has_username = bool(self.preset_data.get("username", ""))
|
||||
has_password = bool(self.preset_data.get("password", ""))
|
||||
|
||||
if cookies_enabled:
|
||||
self.auth_cookies_radio.setChecked(True)
|
||||
# Browser auswählen
|
||||
browser = self.preset_data.get("cookies_from_browser", {}).get("browser", "chrome")
|
||||
idx = self.browser_combo.findData(browser)
|
||||
if idx >= 0:
|
||||
self.browser_combo.setCurrentIndex(idx)
|
||||
elif has_username or has_password:
|
||||
self.auth_userpass_radio.setChecked(True)
|
||||
else:
|
||||
self.auth_none_radio.setChecked(True)
|
||||
|
||||
# Initial state setzen
|
||||
self.update_auth_fields_state()
|
||||
|
||||
auth_layout.addStretch()
|
||||
auth_tab.setLayout(auth_layout)
|
||||
tabs.addTab(auth_tab, "Authentifizierung")
|
||||
|
||||
@@ -283,6 +345,14 @@ class PresetDialog(QDialog):
|
||||
def toggle_password_visible(self, checked):
|
||||
self.password_edit.setEchoMode(QLineEdit.Normal if checked else QLineEdit.Password)
|
||||
|
||||
def update_auth_fields_state(self):
|
||||
"""Aktiviert/Deaktiviert die Authentifizierungs-Gruppen basierend auf Radio-Button-Auswahl."""
|
||||
is_userpass = self.auth_userpass_radio.isChecked()
|
||||
is_cookies = self.auth_cookies_radio.isChecked()
|
||||
|
||||
self.userpass_group.setEnabled(is_userpass)
|
||||
self.cookies_group.setEnabled(is_cookies)
|
||||
|
||||
def toggle_format_selection(self, checked):
|
||||
# Diese Methode setzt Flags, wenn die Format-Auswahl aktiviert wird
|
||||
pass
|
||||
@@ -292,6 +362,10 @@ class PresetDialog(QDialog):
|
||||
self.dual_audio_group.setEnabled(checked)
|
||||
|
||||
def get_preset_data(self):
|
||||
# Bestimme Authentifizierungsmethode
|
||||
is_userpass = self.auth_userpass_radio.isChecked()
|
||||
is_cookies = self.auth_cookies_radio.isChecked()
|
||||
|
||||
return {
|
||||
"name": self.name_edit.text(),
|
||||
"description": self.description_edit.text(),
|
||||
@@ -303,8 +377,12 @@ class PresetDialog(QDialog):
|
||||
"episode": self.episode_edit.text(),
|
||||
"custom_path": self.custom_path_edit.text(),
|
||||
"is_audio": self.is_audio_cb.isChecked(),
|
||||
"username": self.username_edit.text(),
|
||||
"password": self.password_edit.text(),
|
||||
"username": self.username_edit.text() if is_userpass else "",
|
||||
"password": self.password_edit.text() if is_userpass else "",
|
||||
"cookies_from_browser": {
|
||||
"enabled": is_cookies,
|
||||
"browser": self.browser_combo.currentData() if is_cookies else "chrome"
|
||||
},
|
||||
"referer": self.referer_edit.text(),
|
||||
"hls_ffmpeg": self.hls_ffmpeg_cb.isChecked(),
|
||||
"sublang": self.sublang_edit.text(),
|
||||
@@ -441,30 +519,6 @@ class OptionenDialog(QDialog):
|
||||
flags_layout.addWidget(self.cb_use_ffmpeg_location)
|
||||
flags_layout.addWidget(QLabel("Nutzt den konfigurierten FFmpeg-Pfad für yt-dlp."))
|
||||
|
||||
# Cookies from Browser
|
||||
self.cb_cookies_from_browser = QCheckBox("--cookies-from-browser")
|
||||
cookies_config = self.selected_flags.get("cookies_from_browser", {"enabled": False, "browser": "chrome"})
|
||||
self.cb_cookies_from_browser.setChecked(cookies_config.get("enabled", False))
|
||||
self.cb_cookies_from_browser.toggled.connect(self.toggle_browser_combo)
|
||||
flags_layout.addWidget(self.cb_cookies_from_browser)
|
||||
|
||||
# Browser-Auswahl
|
||||
browser_layout = QHBoxLayout()
|
||||
browser_layout.addWidget(QLabel("Browser:"))
|
||||
self.browser_combo = QComboBox()
|
||||
self.browser_combo.addItem("Chrome", "chrome")
|
||||
self.browser_combo.addItem("Firefox", "firefox")
|
||||
# Vorbelegen
|
||||
browser = cookies_config.get("browser", "chrome")
|
||||
idx = self.browser_combo.findData(browser)
|
||||
if idx >= 0:
|
||||
self.browser_combo.setCurrentIndex(idx)
|
||||
self.browser_combo.setEnabled(self.cb_cookies_from_browser.isChecked())
|
||||
browser_layout.addWidget(self.browser_combo)
|
||||
browser_layout.addStretch()
|
||||
flags_layout.addLayout(browser_layout)
|
||||
flags_layout.addWidget(QLabel("Nutzt Cookies aus dem angegebenen Browser."))
|
||||
|
||||
tab_flags.setLayout(flags_layout)
|
||||
tabs.addTab(tab_flags, "yt-dlp-Flags")
|
||||
|
||||
@@ -472,7 +526,7 @@ class OptionenDialog(QDialog):
|
||||
tab_info = QWidget()
|
||||
info_layout = QVBoxLayout()
|
||||
info_text = (
|
||||
"<b>Version:</b> 1.4<br>"
|
||||
"<b>Version:</b> 2.0<br>"
|
||||
"<b>© 2025 Akamaru</b><br>"
|
||||
"<b>Sourcecode:</b> <a href='https://git.ponywave.de/Akamaru/video-download-helper'>https://git.ponywave.de/Akamaru/video-download-helper</a><br>"
|
||||
"<b>Erstellt mit Hilfe von Claude, GPT & Gemini</b>"
|
||||
@@ -540,10 +594,6 @@ class OptionenDialog(QDialog):
|
||||
file_path = dialog.selectedFiles()[0]
|
||||
self.ffmpeg_path_input.setText(file_path)
|
||||
|
||||
def toggle_browser_combo(self, checked):
|
||||
"""Aktiviert/Deaktiviert die Browser-ComboBox basierend auf der Checkbox."""
|
||||
self.browser_combo.setEnabled(checked)
|
||||
|
||||
def get_values(self):
|
||||
return (
|
||||
self.output_dir_input.text(),
|
||||
@@ -552,11 +602,7 @@ class OptionenDialog(QDialog):
|
||||
"ignore_config": self.cb_ignore_config.isChecked(),
|
||||
"remux_mkv": self.cb_remux_mkv.isChecked(),
|
||||
"embed_metadata": self.cb_embed_metadata.isChecked(),
|
||||
"use_ffmpeg_location": self.cb_use_ffmpeg_location.isChecked(),
|
||||
"cookies_from_browser": {
|
||||
"enabled": self.cb_cookies_from_browser.isChecked(),
|
||||
"browser": self.browser_combo.currentData()
|
||||
}
|
||||
"use_ffmpeg_location": self.cb_use_ffmpeg_location.isChecked()
|
||||
},
|
||||
self.hide_defaults_cb.isChecked(),
|
||||
self.mkvmerge_path_input.text(),
|
||||
|
||||
12
main.py
12
main.py
@@ -521,8 +521,8 @@ class MainWindow(QMainWindow):
|
||||
# FFmpeg-Pfad
|
||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||
cmd.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||
# Cookies from Browser
|
||||
cookies_config = flags.get("cookies_from_browser", {})
|
||||
# Cookies from Browser (aus Preset)
|
||||
cookies_config = preset.get("cookies_from_browser", {})
|
||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||
browser = cookies_config.get("browser", "chrome")
|
||||
cmd.extend(["--cookies-from-browser", browser])
|
||||
@@ -755,8 +755,8 @@ class MainWindow(QMainWindow):
|
||||
# FFmpeg-Pfad
|
||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||
# Cookies from Browser
|
||||
cookies_config = flags.get("cookies_from_browser", {})
|
||||
# Cookies from Browser (aus Preset)
|
||||
cookies_config = preset.get("cookies_from_browser", {})
|
||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||
browser = cookies_config.get("browser", "chrome")
|
||||
extra_args.extend(["--cookies-from-browser", browser])
|
||||
@@ -1011,8 +1011,8 @@ class MainWindow(QMainWindow):
|
||||
extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"])
|
||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||
# Cookies from Browser
|
||||
cookies_config = flags.get("cookies_from_browser", {})
|
||||
# Cookies from Browser (aus Preset)
|
||||
cookies_config = preset.get("cookies_from_browser", {})
|
||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||
browser = cookies_config.get("browser", "chrome")
|
||||
extra_args.extend(["--cookies-from-browser", browser])
|
||||
|
||||
Reference in New Issue
Block a user