Browse Source

Merge pull request #1211 from rix1337/v2-develop

JDownloader Actions / Improved Status Labeling / Removed History Tab
causefx 6 years ago
parent
commit
88ca89ae7d

+ 12 - 9
api/functions/homepage-connect-functions.php

@@ -739,7 +739,7 @@ function jdownloaderConnect()
 {
 {
     if ($GLOBALS['homepageJdownloaderEnabled'] && !empty($GLOBALS['jdownloaderURL']) && qualifyRequest($GLOBALS['homepageJdownloaderAuth'])) {
     if ($GLOBALS['homepageJdownloaderEnabled'] && !empty($GLOBALS['jdownloaderURL']) && qualifyRequest($GLOBALS['homepageJdownloaderAuth'])) {
         $url = qualifyURL($GLOBALS['jdownloaderURL']);
         $url = qualifyURL($GLOBALS['jdownloaderURL']);
-        $url = $url . '/';
+
         try {
         try {
             $options = (localURL($url)) ? array('verify' => false) : array();
             $options = (localURL($url)) ? array('verify' => false) : array();
             $response = Requests::get($url, array(), $options);
             $response = Requests::get($url, array(), $options);
@@ -748,23 +748,26 @@ function jdownloaderConnect()
                 $packages = $temp['packages'];
                 $packages = $temp['packages'];
                 if ($packages['downloader']) {
                 if ($packages['downloader']) {
                     $api['content']['queueItems'] = $packages['downloader'];
                     $api['content']['queueItems'] = $packages['downloader'];
-                } else {
+                }else{
                     $api['content']['queueItems'] = [];
                     $api['content']['queueItems'] = [];
                 }
                 }
-                $grabbed = array();
                 if ($packages['linkgrabber_decrypted']) {
                 if ($packages['linkgrabber_decrypted']) {
-                    $grabbed = array_merge($grabbed, $packages['linkgrabber_decrypted']);
+                    $api['content']['grabberItems'] = $packages['linkgrabber_decrypted'];
+                }else{
+                    $api['content']['grabberItems'] = [];
                 }
                 }
                 if ($packages['linkgrabber_failed']) {
                 if ($packages['linkgrabber_failed']) {
-                    $grabbed = array_merge($grabbed, $packages['linkgrabber_failed']);
+                    $api['content']['encryptedItems'] = $packages['linkgrabber_failed'];
+                }else{
+                    $api['content']['encryptedItems'] = [];
                 }
                 }
                 if ($packages['linkgrabber_offline']) {
                 if ($packages['linkgrabber_offline']) {
-                    $grabbed = array_merge($grabbed, $packages['linkgrabber_offline']);
+                    $api['content']['offlineItems'] = $packages['linkgrabber_offline'];
+                }else{
+                    $api['content']['offlineItems'] = [];
                 }
                 }
-                $api['content']['grabberItems'] = $grabbed;
 
 
-                $status = array($temp['downloader_state'], $temp['grabber_collecting'], $temp['update_ready']);
-                $api['content']['$status'] = $status;
+                $api['content']['$status'] = array($temp['downloader_state'], $temp['grabber_collecting'], $temp['update_ready']);
             }
             }
         } catch (Requests_Exception $e) {
         } catch (Requests_Exception $e) {
             writeLog('error', 'JDownloader Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
             writeLog('error', 'JDownloader Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');

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

@@ -1017,6 +1017,7 @@ function getHomepageList()
                                 <div class="panel-body">
                                 <div class="panel-body">
 									<ul class="list-icons">
 									<ul class="list-icons">
                                         <li><i class="fa fa-chevron-right text-danger"></i> <a href="https://pypi.org/project/myjd-api/" target="_blank">Download [myjd-api] Module</a></li>
                                         <li><i class="fa fa-chevron-right text-danger"></i> <a href="https://pypi.org/project/myjd-api/" target="_blank">Download [myjd-api] Module</a></li>
+                                        <li><i class="fa fa-chevron-right text-danger"></i> Add <b>/api/myjd</b> to the URL if you are using <a href="https://pypi.org/project/RSScrawler/" target="_blank">RSScrawler</a></li>
                                     </ul>
                                     </ul>
                                 </div>
                                 </div>
                             </div>
                             </div>

+ 79 - 0
api/functions/organizr-functions.php

@@ -1945,6 +1945,34 @@ function downloader($array)
 					break;
 					break;
 			}
 			}
 			break;
 			break;
+        case 'jdownloader':
+            switch ($array['data']['action']) {
+                case 'start':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'stop':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'resume':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'pause':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'update':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'retry':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                case 'remove':
+                    jdownloaderAction($array['data']['action'], $array['data']['target']);
+                    break;
+                default:
+                    # code...
+                    break;
+            }
+            break;
 		case 'nzbget':
 		case 'nzbget':
 			break;
 			break;
 		default:
 		default:
@@ -1953,6 +1981,57 @@ function downloader($array)
 	}
 	}
 }
 }
 
 
+function jdownloaderAction($action = null, $target = null)
+{
+    if ($GLOBALS['homepageJdownloaderEnabled'] && !empty($GLOBALS['jdownloaderURL']) && qualifyRequest($GLOBALS['homepageJdownloaderAuth'])) {
+        $url = qualifyURL($GLOBALS['jdownloaderURL']);
+
+        # This ensures compatibility with RSScrawler
+        $url = str_replace('/myjd', '', $url);
+        if(substr($url , -1)=='/') {
+            $url = substr_replace($url ,"",-1);
+        }
+
+        switch ($action) {
+            case 'start':
+                $url = $url . '/myjd_start/';
+                break;
+            case 'stop':
+                $url = $url . '/myjd_stop/';
+                break;
+            case 'resume':
+                $url = $url . '/myjd_pause/false';
+                break;
+            case 'pause':
+                $url = $url . '/myjd_pause/true';
+                break;
+            case 'update':
+                $url = $url . '/myjd_update';
+                break;
+            case 'retry':
+                # code...
+                break;
+            case 'remove':
+                # code...
+                break;
+            default:
+                # code...
+                break;
+        }
+        try {
+            $options = (localURL($url)) ? array('verify' => false) : array();
+            $response = Requests::post($url, array(), $options);
+            if ($response->success) {
+                $api['content'] = 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;
+    }
+}
+
 function sabnzbdAction($action = null, $target = null)
 function sabnzbdAction($action = null, $target = null)
 {
 {
 	if ($GLOBALS['homepageSabnzbdEnabled'] && !empty($GLOBALS['sabnzbdURL']) && !empty($GLOBALS['sabnzbdToken']) && qualifyRequest($GLOBALS['homepageSabnzbdAuth'])) {
 	if ($GLOBALS['homepageSabnzbdEnabled'] && !empty($GLOBALS['sabnzbdURL']) && !empty($GLOBALS['sabnzbdToken']) && qualifyRequest($GLOBALS['homepageSabnzbdAuth'])) {

+ 76 - 26
js/functions.js

@@ -1899,7 +1899,7 @@ function checkTabHomepageItem(id, name, url, urlLocal){
         addEditHomepageItem(id,'Plex');
         addEditHomepageItem(id,'Plex');
     }else if(name.includes('emby') || url.includes('emby') || urlLocal.includes('emby')){
     }else if(name.includes('emby') || url.includes('emby') || urlLocal.includes('emby')){
         addEditHomepageItem(id,'Emby');
         addEditHomepageItem(id,'Emby');
-    }else if(name.includes('jdownloader') || url.includes('jdownloader') || urlLocal.includes('jdownloader')){
+    }else if(name.includes('jdownloader') || url.includes('jdownloader') || urlLocal.includes('jdownloader') || name.includes('rsscrawler') || url.includes('rsscrawler') || urlLocal.includes('rsscrawler')){
         addEditHomepageItem(id,'jDownloader');
         addEditHomepageItem(id,'jDownloader');
     }else if(name.includes('sab') || url.includes('sab') || urlLocal.includes('sab')){
     }else if(name.includes('sab') || url.includes('sab') || urlLocal.includes('sab')){
         addEditHomepageItem(id,'SabNZBD');
         addEditHomepageItem(id,'SabNZBD');
@@ -4907,7 +4907,6 @@ function requestList (list, type, page=1) {
 function buildDownloaderItem(array, source, type='none'){
 function buildDownloaderItem(array, source, type='none'){
     //console.log(array);
     //console.log(array);
     var queue = '';
     var queue = '';
-    var history = '';
     var count = 0;
     var count = 0;
 	switch (source) {
 	switch (source) {
         case 'jdownloader':
         case 'jdownloader':
@@ -4916,40 +4915,45 @@ function buildDownloaderItem(array, source, type='none'){
                 break;
                 break;
             }
             }
 
 
-            /*
-            if(array.content.$status[0] != 'RUNNING'){
-                var state = `<a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="resume" data-target="main"><i class="fa fa-play"></i></span></a>`;
-                var active = 'grayscale';
-            }else{
-                var state = `<a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="pause" data-target="main"><i class="fa fa-pause"></i></span></a>`;
-                var active = '';
-            }
-            $('.jdownloader-downloader-action').html(state);
-            */
-
-            if(array.content.queueItems.length == 0){
+            if(array.content.queueItems.length == 0 && array.content.grabberItems.length == 0 && array.content.encryptedItems.length == 0 && array.content.offlineItems.length == 0){
                 queue = '<tr><td class="max-texts" lang="en">Nothing in queue</td></tr>';
                 queue = '<tr><td class="max-texts" lang="en">Nothing in queue</td></tr>';
+            }else{
+                if(array.content.$status[0] == 'RUNNING') {
+                    queue += `
+                        <tr><td>
+                            <a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="pause" data-target="main"><i class="fa fa-pause"></i></span></a>
+                            <a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="stop" data-target="main"><i class="fa fa-stop"></i></span></a>
+                        </td></tr>
+                        `;
+                }else if(array.content.$status[0] == 'PAUSE'){
+                    queue += `<tr><td><a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="resume" data-target="main"><i class="fa fa-fast-forward"></i></span></a></td></tr>`;
+                }else{
+                    queue += `<tr><td><a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="start" data-target="main"><i class="fa fa-play"></i></span></a></td></tr>`;
+                }
+                if(array.content.$status[1]) {
+                    queue += `<tr><td><a href="#"><span class="downloader mouse" data-source="jdownloader" data-action="update" data-target="main"><i class="fa fa-globe"></i></span></a></td></tr>`;
+                }
             }
             }
             $.each(array.content.queueItems, function(i,v) {
             $.each(array.content.queueItems, function(i,v) {
                 count = count + 1;
                 count = count + 1;
                 if(v.speed == null){
                 if(v.speed == null){
-                    if(v.percentage == '100'){
-                        v.speed = '--';
-                    }else{
-                        v.speed = 'Stopped';
-                    }
+                    v.speed = 'Stopped';
                 }
                 }
                 if(v.eta == null){
                 if(v.eta == null){
                     if(v.percentage == '100'){
                     if(v.percentage == '100'){
-                        v.eta = 'Complete';
+                        v.speed = 'Complete';
+                        v.eta = '--';
                     }else{
                     }else{
                         v.eta = '--';
                         v.eta = '--';
                     }
                     }
                 }
                 }
+                if(v.enabled == null){
+                    v.speed = 'Disabled';
+                }
                 queue += `
                 queue += `
                 <tr>
                 <tr>
                     <td class="max-texts">`+v.name+`</td>
                     <td class="max-texts">`+v.name+`</td>
-                    <td class="hidden-xs">`+v.speed+`</td>
+                    <td>`+v.speed+`</td>
                     <td class="hidden-xs" alt="`+v.done+`">`+v.size+`</td>
                     <td class="hidden-xs" alt="`+v.done+`">`+v.size+`</td>
                     <td class="hidden-xs">`+v.eta+`</td>
                     <td class="hidden-xs">`+v.eta+`</td>
                     <td class="text-right">
                     <td class="text-right">
@@ -4960,13 +4964,51 @@ function buildDownloaderItem(array, source, type='none'){
                 </tr>
                 </tr>
                 `;
                 `;
             });
             });
-            if(array.content.grabberItems.length == 0){
-                history = '<tr><td class="max-texts" lang="en">Nothing in Linkgrabbber</td></tr>';
-            }
             $.each(array.content.grabberItems, function(i,v) {
             $.each(array.content.grabberItems, function(i,v) {
-                history += `
+                count = count + 1;
+                queue += `
+                <tr>
+                    <td class="max-texts">`+v.name+`</td>
+                    <td>Online</td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="text-right">
+                        <div class="progress progress-lg m-b-0">
+                            <div class="progress-bar progress-bar-info" style="width: 0%;" role="progressbar">0%</div>
+                        </div>
+                    </td>
+                </tr>
+                `;
+            });
+            $.each(array.content.encryptedItems, function(i,v) {
+                count = count + 1;
+                queue += `
                 <tr>
                 <tr>
-                    <td class="max-texts">`+ v.name+`</td>
+                    <td class="max-texts">`+v.name+`</td>
+                    <td>Encrypted</td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="text-right">
+                        <div class="progress progress-lg m-b-0">
+                            <div class="progress-bar progress-bar-info" style="width: 0%;" role="progressbar">0%</div>
+                        </div>
+                    </td>
+                </tr>
+                `;
+            });
+            $.each(array.content.offlineItems, function(i,v) {
+                count = count + 1;
+                queue += `
+                <tr>
+                    <td class="max-texts">`+v.name+`</td>
+                    <td>Offline</td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="hidden-xs"> -- </td>
+                    <td class="text-right">
+                        <div class="progress progress-lg m-b-0">
+                            <div class="progress-bar progress-bar-info" style="width: 0%;" role="progressbar">0%</div>
+                        </div>
+                    </td>
                 </tr>
                 </tr>
                 `;
                 `;
             });
             });
@@ -5285,6 +5327,10 @@ function buildDownloader(source){
     var historyButton = 'HISTORY';
     var historyButton = 'HISTORY';
     switch (source) {
     switch (source) {
         case 'jdownloader':
         case 'jdownloader':
+            var queue = true;
+            var history = false;
+            queueButton = 'REFRESH';
+            break;
         case 'sabnzbd':
         case 'sabnzbd':
         case 'nzbget':
         case 'nzbget':
             var queue = true;
             var queue = true;
@@ -5381,6 +5427,10 @@ function buildDownloaderCombined(source){
     var historyButton = 'HISTORY';
     var historyButton = 'HISTORY';
     switch (source) {
     switch (source) {
         case 'jdownloader':
         case 'jdownloader':
+            var queue = true;
+            var history = false;
+            queueButton = 'REFRESH';
+            break;
         case 'sabnzbd':
         case 'sabnzbd':
         case 'nzbget':
         case 'nzbget':
             var queue = true;
             var queue = true;