Verschiebe "--cookies-from-browser" nach Preset-Einstellungen
This commit is contained in:
@@ -51,11 +51,7 @@ DEFAULT_CONFIG = {
|
|||||||
"ignore_config": False,
|
"ignore_config": False,
|
||||||
"remux_mkv": False,
|
"remux_mkv": False,
|
||||||
"embed_metadata": False,
|
"embed_metadata": False,
|
||||||
"use_ffmpeg_location": False,
|
"use_ffmpeg_location": False
|
||||||
"cookies_from_browser": {
|
|
||||||
"enabled": False,
|
|
||||||
"browser": "chrome"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"hide_default_presets": False,
|
"hide_default_presets": False,
|
||||||
"enable_adn_tab": 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 os
|
||||||
import subprocess
|
import subprocess
|
||||||
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QFormLayout, QLineEdit, QTextEdit,
|
from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QFormLayout, QLineEdit, QTextEdit,
|
||||||
QPushButton, QComboBox, QCheckBox, QTabWidget, QWidget,
|
QPushButton, QComboBox, QCheckBox, QTabWidget, QWidget,
|
||||||
QHBoxLayout, QGroupBox, QLabel, QDialogButtonBox,
|
QHBoxLayout, QGroupBox, QLabel, QDialogButtonBox,
|
||||||
QFileDialog, QMessageBox)
|
QFileDialog, QMessageBox, QRadioButton, QButtonGroup)
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtGui import QIcon
|
from PyQt5.QtGui import QIcon
|
||||||
from config import get_base_path, SERIES_TEMPLATE
|
from config import get_base_path, SERIES_TEMPLATE
|
||||||
@@ -148,27 +148,89 @@ class PresetDialog(QDialog):
|
|||||||
|
|
||||||
# Tab 4: Authentifizierung
|
# Tab 4: Authentifizierung
|
||||||
auth_tab = QWidget()
|
auth_tab = QWidget()
|
||||||
auth_layout = QFormLayout()
|
auth_layout = QVBoxLayout()
|
||||||
|
|
||||||
# Login-Felder
|
# 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 = QLineEdit(self.preset_data.get("username", ""))
|
||||||
self.username_edit.setPlaceholderText("Optional: Benutzername für Login (-u)")
|
self.username_edit.setPlaceholderText("Benutzername für Login (-u)")
|
||||||
auth_layout.addRow("Benutzername:", self.username_edit)
|
userpass_layout.addRow("Benutzername:", self.username_edit)
|
||||||
|
|
||||||
pw_hbox = QHBoxLayout()
|
pw_hbox = QHBoxLayout()
|
||||||
self.password_edit = QLineEdit(self.preset_data.get("password", ""))
|
self.password_edit = QLineEdit(self.preset_data.get("password", ""))
|
||||||
self.password_edit.setEchoMode(QLineEdit.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 = QCheckBox("Passwort anzeigen")
|
||||||
self.show_pw_cb.toggled.connect(self.toggle_password_visible)
|
self.show_pw_cb.toggled.connect(self.toggle_password_visible)
|
||||||
pw_hbox.addWidget(self.password_edit)
|
pw_hbox.addWidget(self.password_edit)
|
||||||
pw_hbox.addWidget(self.show_pw_cb)
|
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 = QLabel("Hinweis: Passwörter werden im Klartext lokal gespeichert!")
|
||||||
pw_hint.setStyleSheet("color: red;")
|
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)
|
auth_tab.setLayout(auth_layout)
|
||||||
tabs.addTab(auth_tab, "Authentifizierung")
|
tabs.addTab(auth_tab, "Authentifizierung")
|
||||||
|
|
||||||
@@ -283,6 +345,14 @@ class PresetDialog(QDialog):
|
|||||||
def toggle_password_visible(self, checked):
|
def toggle_password_visible(self, checked):
|
||||||
self.password_edit.setEchoMode(QLineEdit.Normal if checked else QLineEdit.Password)
|
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):
|
def toggle_format_selection(self, checked):
|
||||||
# Diese Methode setzt Flags, wenn die Format-Auswahl aktiviert wird
|
# Diese Methode setzt Flags, wenn die Format-Auswahl aktiviert wird
|
||||||
pass
|
pass
|
||||||
@@ -292,6 +362,10 @@ class PresetDialog(QDialog):
|
|||||||
self.dual_audio_group.setEnabled(checked)
|
self.dual_audio_group.setEnabled(checked)
|
||||||
|
|
||||||
def get_preset_data(self):
|
def get_preset_data(self):
|
||||||
|
# Bestimme Authentifizierungsmethode
|
||||||
|
is_userpass = self.auth_userpass_radio.isChecked()
|
||||||
|
is_cookies = self.auth_cookies_radio.isChecked()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"name": self.name_edit.text(),
|
"name": self.name_edit.text(),
|
||||||
"description": self.description_edit.text(),
|
"description": self.description_edit.text(),
|
||||||
@@ -303,8 +377,12 @@ class PresetDialog(QDialog):
|
|||||||
"episode": self.episode_edit.text(),
|
"episode": self.episode_edit.text(),
|
||||||
"custom_path": self.custom_path_edit.text(),
|
"custom_path": self.custom_path_edit.text(),
|
||||||
"is_audio": self.is_audio_cb.isChecked(),
|
"is_audio": self.is_audio_cb.isChecked(),
|
||||||
"username": self.username_edit.text(),
|
"username": self.username_edit.text() if is_userpass else "",
|
||||||
"password": self.password_edit.text(),
|
"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(),
|
"referer": self.referer_edit.text(),
|
||||||
"hls_ffmpeg": self.hls_ffmpeg_cb.isChecked(),
|
"hls_ffmpeg": self.hls_ffmpeg_cb.isChecked(),
|
||||||
"sublang": self.sublang_edit.text(),
|
"sublang": self.sublang_edit.text(),
|
||||||
@@ -441,30 +519,6 @@ class OptionenDialog(QDialog):
|
|||||||
flags_layout.addWidget(self.cb_use_ffmpeg_location)
|
flags_layout.addWidget(self.cb_use_ffmpeg_location)
|
||||||
flags_layout.addWidget(QLabel("Nutzt den konfigurierten FFmpeg-Pfad für yt-dlp."))
|
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)
|
tab_flags.setLayout(flags_layout)
|
||||||
tabs.addTab(tab_flags, "yt-dlp-Flags")
|
tabs.addTab(tab_flags, "yt-dlp-Flags")
|
||||||
|
|
||||||
@@ -472,7 +526,7 @@ class OptionenDialog(QDialog):
|
|||||||
tab_info = QWidget()
|
tab_info = QWidget()
|
||||||
info_layout = QVBoxLayout()
|
info_layout = QVBoxLayout()
|
||||||
info_text = (
|
info_text = (
|
||||||
"<b>Version:</b> 1.4<br>"
|
"<b>Version:</b> 2.0<br>"
|
||||||
"<b>© 2025 Akamaru</b><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>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>"
|
"<b>Erstellt mit Hilfe von Claude, GPT & Gemini</b>"
|
||||||
@@ -540,10 +594,6 @@ class OptionenDialog(QDialog):
|
|||||||
file_path = dialog.selectedFiles()[0]
|
file_path = dialog.selectedFiles()[0]
|
||||||
self.ffmpeg_path_input.setText(file_path)
|
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):
|
def get_values(self):
|
||||||
return (
|
return (
|
||||||
self.output_dir_input.text(),
|
self.output_dir_input.text(),
|
||||||
@@ -552,11 +602,7 @@ class OptionenDialog(QDialog):
|
|||||||
"ignore_config": self.cb_ignore_config.isChecked(),
|
"ignore_config": self.cb_ignore_config.isChecked(),
|
||||||
"remux_mkv": self.cb_remux_mkv.isChecked(),
|
"remux_mkv": self.cb_remux_mkv.isChecked(),
|
||||||
"embed_metadata": self.cb_embed_metadata.isChecked(),
|
"embed_metadata": self.cb_embed_metadata.isChecked(),
|
||||||
"use_ffmpeg_location": self.cb_use_ffmpeg_location.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()
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
self.hide_defaults_cb.isChecked(),
|
self.hide_defaults_cb.isChecked(),
|
||||||
self.mkvmerge_path_input.text(),
|
self.mkvmerge_path_input.text(),
|
||||||
|
|||||||
12
main.py
12
main.py
@@ -521,8 +521,8 @@ class MainWindow(QMainWindow):
|
|||||||
# FFmpeg-Pfad
|
# FFmpeg-Pfad
|
||||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||||
cmd.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
cmd.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||||
# Cookies from Browser
|
# Cookies from Browser (aus Preset)
|
||||||
cookies_config = flags.get("cookies_from_browser", {})
|
cookies_config = preset.get("cookies_from_browser", {})
|
||||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||||
browser = cookies_config.get("browser", "chrome")
|
browser = cookies_config.get("browser", "chrome")
|
||||||
cmd.extend(["--cookies-from-browser", browser])
|
cmd.extend(["--cookies-from-browser", browser])
|
||||||
@@ -755,8 +755,8 @@ class MainWindow(QMainWindow):
|
|||||||
# FFmpeg-Pfad
|
# FFmpeg-Pfad
|
||||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||||
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||||
# Cookies from Browser
|
# Cookies from Browser (aus Preset)
|
||||||
cookies_config = flags.get("cookies_from_browser", {})
|
cookies_config = preset.get("cookies_from_browser", {})
|
||||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||||
browser = cookies_config.get("browser", "chrome")
|
browser = cookies_config.get("browser", "chrome")
|
||||||
extra_args.extend(["--cookies-from-browser", browser])
|
extra_args.extend(["--cookies-from-browser", browser])
|
||||||
@@ -1011,8 +1011,8 @@ class MainWindow(QMainWindow):
|
|||||||
extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"])
|
extra_args.extend(["--downloader", "ffmpeg", "--hls-use-mpegts"])
|
||||||
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
if flags.get("use_ffmpeg_location") and self.config.get("ffmpeg_path"):
|
||||||
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
extra_args.extend(["--ffmpeg-location", self.config.get("ffmpeg_path")])
|
||||||
# Cookies from Browser
|
# Cookies from Browser (aus Preset)
|
||||||
cookies_config = flags.get("cookies_from_browser", {})
|
cookies_config = preset.get("cookies_from_browser", {})
|
||||||
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
if isinstance(cookies_config, dict) and cookies_config.get("enabled", False):
|
||||||
browser = cookies_config.get("browser", "chrome")
|
browser = cookies_config.get("browser", "chrome")
|
||||||
extra_args.extend(["--cookies-from-browser", browser])
|
extra_args.extend(["--cookies-from-browser", browser])
|
||||||
|
|||||||
Reference in New Issue
Block a user