diff --git a/src/main/java/mediathek/config/MVConfig.java b/src/main/java/mediathek/config/MVConfig.java
index c227e4186f..cdc81f5aa9 100644
--- a/src/main/java/mediathek/config/MVConfig.java
+++ b/src/main/java/mediathek/config/MVConfig.java
@@ -117,6 +117,7 @@ public enum Configs {
SYSTEM_URL_OEFFNEN("Programm-Url-oeffnen"),
SYSTEM_LINUX_SHUTDOWN("Programm-Linux-Shutdown"),
SYSTEM_PLAYER_ABSPIELEN("Player-zum-Abspielen"),
+ SYSTEM_JDOWNLOADER_URL("system-jdownloader-url", "http://127.0.0.1:9666/flash/add"),
// Fenstereinstellungen
SYSTEM_EIGENSCHAFTEN_TABELLE_FILME("Eigenschaften-Tabellen-Filme"),
diff --git a/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.java b/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.java
index da8ce30216..68958b6aa2 100644
--- a/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.java
+++ b/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.java
@@ -76,6 +76,12 @@ public PanelEinstellungenErweitert() {
handler = new TextCopyPasteHandler<>(jTextFieldProgrammShutdown);
jTextFieldProgrammShutdown.setComponentPopupMenu(handler.getPopupMenu());
+ jTextFieldJDownloaderUrl.setText(MVConfig.get(MVConfig.Configs.SYSTEM_JDOWNLOADER_URL));
+ jTextFieldJDownloaderUrl.getDocument().addDocumentListener(new BeobDoc(MVConfig.Configs.SYSTEM_JDOWNLOADER_URL, jTextFieldJDownloaderUrl));
+ handler = new TextCopyPasteHandler<>(jTextFieldJDownloaderUrl);
+ jTextFieldJDownloaderUrl.setComponentPopupMenu(handler.getPopupMenu());
+
+
if (!SystemUtils.IS_OS_LINUX) {
jTextFieldProgrammShutdown.setEnabled(false);
jButtonProgrammShutdown.setEnabled(false);
@@ -212,6 +218,7 @@ private void initComponents() {
jCheckBoxDownloadSofortStarten = new JCheckBox();
var jPanel2 = new JPanel();
jTextFieldProgrammDateimanager = new JTextField();
+ jTextFieldJDownloaderUrl = new JTextField();
jButtonProgrammDateimanager = new JButton();
var jLabel1 = new JLabel();
var jLabel2 = new JLabel();
@@ -320,6 +327,25 @@ private void initComponents() {
}
add(jPanel4);
+
+ //======== jPanelJDownloader ========
+ var jPanelJDownloader = new JPanel();
+ jPanelJDownloader.setBorder(new TitledBorder("JDownloader"));
+ jPanelJDownloader.setLayout(new MigLayout(
+ new LC().insets("5").hideMode(3).gridGap("5", "5"),
+ new AC().grow().fill(),
+ new AC().fill()
+ ));
+
+ jTextFieldJDownloaderUrl.setToolTipText(
+ "Wenn jDownloader nicht auf dem lokalen Host installiert ist oder unter einem anderen Port reagieren soll, hier bitte angeben.
" +
+ "Default: http://127.0.0.1:9666/flash/add"
+ );
+
+ jPanelJDownloader.add(jTextFieldJDownloaderUrl, new CC().cell(0, 0));
+ add(jPanelJDownloader);
+
+
//======== jPanel3 ========
{
jPanel3.setBorder(new TitledBorder("Linux: Aufruf zum Shutdown"));
@@ -374,5 +400,6 @@ private void initComponents() {
private JButton jButtonProgrammShutdown;
private JTextField jTextFieldProgrammShutdown;
private ShutdownActionComboBox cbDefaultShutdownHelperCommand;
+ private JTextField jTextFieldJDownloaderUrl;
// End of variables declaration//GEN-END:variables
}
diff --git a/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.jfd b/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.jfd
index 57a3f797a9..920c0e25c0 100644
--- a/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.jfd
+++ b/src/main/java/mediathek/gui/dialogEinstellungen/PanelEinstellungenErweitert.jfd
@@ -87,6 +87,24 @@ new FormModel {
"value": "cell 1 3"
} )
} )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets 5,hidemode 3,gap 5 5"
+ "$columnConstraints": "[grow,fill]"
+ "$rowConstraints": "[fill]"
+ } ) {
+ name: "jPanelJDownloader"
+ "border": new javax.swing.border.TitledBorder( "JDownloader" )
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": true
+ }
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "jTextFieldJDownloaderUrl"
+ "toolTipText": "Wenn jDownloader nicht auf dem lokalen Host installiert ist oder unter einem anderen Port reagieren soll, hier bitte angeben.
Default: http://127.0.0.1:9666/flash/add"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ } )
+
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 5,hidemode 3,gap 5 5"
"$columnConstraints": "[grow,fill][fill]"
diff --git a/src/main/java/mediathek/gui/tabs/tab_film/JDownloadHelper.kt b/src/main/java/mediathek/gui/tabs/tab_film/JDownloadHelper.kt
index b4163cb491..4a65326185 100644
--- a/src/main/java/mediathek/gui/tabs/tab_film/JDownloadHelper.kt
+++ b/src/main/java/mediathek/gui/tabs/tab_film/JDownloadHelper.kt
@@ -1,6 +1,7 @@
package mediathek.gui.tabs.tab_film
import mediathek.config.Konstanten
+import mediathek.config.MVConfig
import mediathek.controller.history.SeenHistoryController
import mediathek.daten.DatenFilm
import mediathek.daten.FilmResolution
@@ -25,11 +26,25 @@ class JDownloadHelper {
private val historyController = SeenHistoryController()
private fun downloadUrl(url: HttpUrl, film: DatenFilm) {
+ val jdUrlString = MVConfig.get(MVConfig.Configs.SYSTEM_JDOWNLOADER_URL)
+ val jdUrl = try {
+ jdUrlString.toHttpUrl()
+ } catch (e: IllegalArgumentException) {
+ logger.error("Invalid JDownloader URL in config: {}", jdUrlString)
+ SwingErrorDialog.showExceptionMessage(
+ MediathekGui.ui(),
+ "Die konfigurierte JDownloader-URL ist ungültig:
$jdUrlString",
+ e
+ )
+ return
+ }
val formBody: RequestBody = FormBody.Builder()
.add("urls", url.toString())
.build()
val request = Request.Builder()
- .url("http://127.0.0.1:9666/flash/add")
+ .url(jdUrl)
+ .header("Referer", "https://mediathekview")
+ .header("Origin", "https://mediathekview")
.post(formBody)
.build()
try {