Browse Source

Add JDownloader Support (myjd_api)
- added settings and homepage elements for JDownloader
- requires myjd_api or rsscrawler (Python: pip install)
- data is correctly sent to frontend already
- TODO: integrate JDownloader data into frontend

rix1337 6 years ago
parent
commit
1ea5829aae

+ 5 - 0
api/config/default.php

@@ -57,6 +57,8 @@ return array(
 	'couchpotatoToken' => '',
 	'sickrageURL' => '',
 	'sickrageToken' => '',
+	'jdownloaderURL' => '',
+	'jdownloaderCombine' => false,
 	'sabnzbdURL' => '',
 	'sabnzbdToken' => '',
 	'sabnzbdCombine' => false,
@@ -101,6 +103,8 @@ return array(
 	'homepagCustomHTMLtwoAuth' => '1',
 	'homepageDelugeEnabled' => false,
 	'homepageDelugeAuth' => '1',
+    'homepageJdownloaderEnabled' => false,
+	'homepageJdownloaderAuth' => '1',
 	'homepageSabnzbdEnabled' => false,
 	'homepageSabnzbdAuth' => '1',
 	'homepageSonarrEnabled' => false,
@@ -152,6 +156,7 @@ return array(
 	'homepageOrderrTorrent' => '15',
 	'homepageOrderdownloader' => '16',
 	'homepageOrderhealthchecks' => '17',
+    "homepageOrderjdownloader" => '18',
 	'homepageShowStreamNames' => false,
 	'homepageShowStreamNamesAuth' => '1',
 	'homepageStreamRefresh' => '60000',

+ 34 - 0
api/functions/homepage-connect-functions.php

@@ -27,6 +27,9 @@ function homepageConnect($array)
 		case 'getEmbyMetadata':
 			return (qualifyRequest($GLOBALS['homepageEmbyAuth'])) ? embyConnect('metadata', $array['data']['key'], true) : false;
 			break;
+        case 'getJdownloader':
+            return jdownloaderConnect();
+            break;
 		case 'getSabnzbd':
 			return sabnzbdConnect();
 			break;
@@ -732,6 +735,37 @@ function embyConnect($action, $key = null, $skip = false)
 	return false;
 }
 
+function jdownloaderConnect()
+{
+    if ($GLOBALS['homepageJdownloaderEnabled'] && !empty($GLOBALS['jdownloaderURL']) && qualifyRequest($GLOBALS['homepageJdownloaderAuth'])) {
+        $url = qualifyURL($GLOBALS['jdownloaderURL']);
+        $url = $url . '/';
+        try {
+            $options = (localURL($url)) ? array('verify' => false) : array();
+            $response = Requests::get($url, array(), $options);
+            if ($response->success) {
+                $api['content']['queueItems'] = json_decode($response->body, true);
+            }
+        } catch (Requests_Exception $e) {
+            writeLog('error', 'JDownloader Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
+        };
+        $url = qualifyURL($GLOBALS['jdownloaderURL']);
+        $url = $url . '/';
+        try {
+            $options = (localURL($url)) ? array('verify' => false) : array();
+            $response = Requests::get($url, array(), $options);
+            if ($response->success) {
+                $api['content']['historyItems'] = json_decode($response->body, true);
+            }
+        } catch (Requests_Exception $e) {
+            writeLog('error', 'JDownloader Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
+        };
+        $api['content'] = isset($api['content']) ? $api['content'] : false;
+        return $api;
+    }
+    return false;
+}
+
 function sabnzbdConnect()
 {
 	if ($GLOBALS['homepageSabnzbdEnabled'] && !empty($GLOBALS['sabnzbdURL']) && !empty($GLOBALS['sabnzbdToken']) && qualifyRequest($GLOBALS['homepageSabnzbdAuth'])) {

+ 95 - 1
api/functions/homepage-functions.php

@@ -6,6 +6,7 @@ function homepageOrder()
 		"homepageOrdercustomhtml" => $GLOBALS['homepageOrdercustomhtml'],
 		"homepageOrdercustomhtmlTwo" => $GLOBALS['homepageOrdercustomhtmlTwo'],
 		"homepageOrdernzbget" => $GLOBALS['homepageOrdernzbget'],
+        "homepageOrderjdownloader" => $GLOBALS['homepageOrderjdownloader'],
 		"homepageOrdersabnzbd" => $GLOBALS['homepageOrdersabnzbd'],
 		"homepageOrderplexnowplaying" => $GLOBALS['homepageOrderplexnowplaying'],
 		"homepageOrderplexrecent" => $GLOBALS['homepageOrderplexrecent'],
@@ -173,6 +174,30 @@ function buildHomepageItem($homepageItem)
 				}
 			}
 			break;
+        case 'homepageOrderjdownloader':
+            if ($GLOBALS['homepageJdownloaderEnabled'] && qualifyRequest($GLOBALS['homepageJdownloaderAuth'])) {
+                if ($GLOBALS['jdownloaderCombine']) {
+                    $item .= '
+					<script>
+					// JDownloader
+					buildDownloaderCombined(\'jdownloader\');
+					homepageDownloader("jdownloader", "' . $GLOBALS['homepageDownloadRefresh'] . '");
+					// End JDownloader
+					</script>
+					';
+                } else {
+                    $item .= '<div class="white-box"><h2 class="text-center" lang="en">Loading Download Queue...</h2></div>';
+                    $item .= '
+					<script>
+					// JDownloader
+					$("#' . $homepageItem . '").html(buildDownloader("jdownloader"));
+					homepageDownloader("jdownloader", "' . $GLOBALS['homepageDownloadRefresh'] . '");
+					// End JDownloader
+					</script>
+					';
+                }
+            }
+            break;
 		case 'homepageOrdersabnzbd':
 			if ($GLOBALS['homepageSabnzbdEnabled'] && qualifyRequest($GLOBALS['homepageSabnzbdAuth'])) {
 				if ($GLOBALS['sabnzbdCombine']) {
@@ -975,6 +1000,68 @@ function getHomepageList()
 				)
 			)
 		),
+        array(
+            'name' => 'JDownloader',
+            'enabled' => (strpos('personal', $GLOBALS['license']) !== false) ? true : false,
+            'image' => 'plugins/images/tabs/jdownloader.png',
+            'category' => 'Downloader',
+            'settings' => array(
+                'Enable' => array(
+                    array(
+                        'type' => 'switch',
+                        'name' => 'homepageJdownloaderEnabled',
+                        'label' => 'Enable',
+                        'value' => $GLOBALS['homepageJdownloaderEnabled']
+                    ),
+                    array(
+                        'type' => 'select',
+                        'name' => 'homepageJdownloaderAuth',
+                        'label' => 'Minimum Authentication',
+                        'value' => $GLOBALS['homepageJdownloaderAuth'],
+                        'options' => $groups
+                    )
+                ),
+                'Connection' => array(
+                    array(
+                        'type' => 'input',
+                        'name' => 'jdownloaderURL',
+                        'label' => 'URL',
+                        'value' => $GLOBALS['jdownloaderURL'],
+                        'help' => 'Please make sure to use local IP address and port - You also may use local dns name too.',
+                        'placeholder' => 'http(s)://hostname:port'
+                    )
+                ),
+                'Misc Options' => array(
+                    array(
+                        'type' => 'select',
+                        'name' => 'homepageDownloadRefresh',
+                        'label' => 'Refresh Seconds',
+                        'value' => $GLOBALS['homepageDownloadRefresh'],
+                        'options' => optionTime()
+                    ),
+                    array(
+                        'type' => 'switch',
+                        'name' => 'jdownloaderCombine',
+                        'label' => 'Add to Combined Downloader',
+                        'value' => $GLOBALS['jdownloaderCombine']
+                    ),
+                ),
+                'Test Connection' => array(
+                    array(
+                        'type' => 'blank',
+                        'label' => 'Please Save before Testing'
+                    ),
+                    array(
+                        'type' => 'button',
+                        'label' => '',
+                        'icon' => 'fa fa-flask',
+                        'class' => 'pull-right',
+                        'text' => 'Test Connection',
+                        'attr' => 'onclick="testAPIConnection(\'jdownloader\')"'
+                    ),
+                )
+            )
+        ),
 		array(
 			'name' => 'SabNZBD',
 			'enabled' => (strpos('personal', $GLOBALS['license']) !== false) ? true : false,
@@ -2228,6 +2315,13 @@ function buildHomepageSettings()
 					$class .= ' faded';
 				}
 				break;
+            case 'homepageOrderjdownloader':
+                $class = 'bg-sab';
+                $image = 'plugins/images/tabs/jdownloader.png';
+                if (!$GLOBALS['homepageJdownloaderEnabled']) {
+                    $class .= ' faded';
+                }
+                break;
 			case 'homepageOrdersabnzbd':
 				$class = 'bg-sab';
 				$image = 'plugins/images/tabs/sabnzbd.png';
@@ -2290,7 +2384,7 @@ function buildHomepageSettings()
 			case 'homepageOrderdownloader':
 				$class = 'bg-inverse';
 				$image = 'plugins/images/tabs/downloader.png';
-				if (!$GLOBALS['sabnzbdCombine'] && !$GLOBALS['nzbgetCombine'] && !$GLOBALS['rTorrentCombine'] && !$GLOBALS['delugeCombine'] && !$GLOBALS['transmissionCombine'] && !$GLOBALS['qBittorrentCombine']) {
+				if (!$GLOBALS['jdownloaderCombine'] && !$GLOBALS['sabnzbdCombine'] && !$GLOBALS['nzbgetCombine'] && !$GLOBALS['rTorrentCombine'] && !$GLOBALS['delugeCombine'] && !$GLOBALS['transmissionCombine'] && !$GLOBALS['qBittorrentCombine']) {
 					$class .= ' faded';
 				}
 				break;

+ 3 - 0
js/functions.js

@@ -5585,6 +5585,9 @@ function homepageDownloader(type, timeout){
 	var timeout = (typeof timeout !== 'undefined') ? timeout : activeInfo.settings.homepage.refresh.homepageDownloadRefresh;
 	//if(isHidden()){ return; }
 	switch (type) {
+        case 'jdownloader':
+            var action = 'getJdownloader';
+            break;
 		case 'sabnzbd':
 			var action = 'getSabnzbd';
 			break;

BIN
plugins/images/tabs/jdownloader.png