From 39153c69362d3292bf6ca5ef1c10d077535b3099 Mon Sep 17 00:00:00 2001 From: John Alberts Date: Sun, 11 Mar 2018 20:47:31 -0700 Subject: [PATCH] Add Couchpotato as an enhanced app --- app/Item.php | 1 + app/SupportedApps/CouchPotato.php | 126 ++++++++++++++++++ readme.md | 1 + resources/lang/de/app.php | 1 + resources/lang/en/app.php | 1 + resources/lang/es/app.php | 1 + resources/lang/fi/app.php | 1 + resources/lang/fr/app.php | 1 + resources/lang/it/app.php | 1 + resources/lang/nl/app.php | 1 + resources/lang/no/app.php | 1 + resources/lang/pl/app.php | 1 + resources/lang/sv/app.php | 1 + resources/lang/tr/app.php | 1 + .../views/supportedapps/couchpotato.blade.php | 25 ++++ .../app/public/supportedapps/couchpotato.png | Bin 0 -> 26590 bytes 16 files changed, 164 insertions(+) create mode 100644 app/SupportedApps/CouchPotato.php create mode 100644 resources/views/supportedapps/couchpotato.blade.php create mode 100644 storage/app/public/supportedapps/couchpotato.png diff --git a/app/Item.php b/app/Item.php index 0067a9a8..6945abfd 100644 --- a/app/Item.php +++ b/app/Item.php @@ -26,6 +26,7 @@ class Item extends Model public static function supportedList() { return [ + 'CouchPotato' => \App\SupportedApps\CouchPotato::class, 'Deluge' => \App\SupportedApps\Deluge::class, 'Dokuwiki' => \App\SupportedApps\Dokuwiki::class, 'Duplicati' => \App\SupportedApps\Duplicati::class, diff --git a/app/SupportedApps/CouchPotato.php b/app/SupportedApps/CouchPotato.php new file mode 100644 index 00000000..3e659ef8 --- /dev/null +++ b/app/SupportedApps/CouchPotato.php @@ -0,0 +1,126 @@ +_client = new Client( + ['http_errors' => false, + 'timeout' => 10] + ); + } + + public function defaultColour() + { + return '#363840'; + } + public function icon() + { + return 'supportedapps/CouchPotato.png'; + } + public function configDetails() + { + return 'couchpotato'; + } + public function testConfig() + { + $res = $this->sendRequest(); + if ($res == null) { + echo 'CouchPotato connection failed'; + return; + } + switch($res->getStatusCode()) { + case 200: + echo "Successfully connected to CouchPotato"; + break; + case 401: + echo 'Failed: Invalid credentials'; + break; + case 404: + echo 'Failed: Please make sure your URL is correct and includes the port'; + break; + case 409: + echo 'Failed: Incorrect session id'; + break; + default: + echo 'Something went wrong... Code: '.$res->getStatusCode(); + break; + } + } + + public function executeConfig() + { + $html = ''; + $res = $this->sendRequest(); + if ($res == null) { + Log::debug('CouchPotato connection failed'); + return ''; + } + $data = json_decode($res->getBody()); + if (! isset($data->movies)) { + Log::debug('Failed to fetch data from CouchPotato'); + return ''; + } + $movies = $data->movies; + $wantedMovies = $availableMovies = 0; + foreach ($movies as $v) { + switch ($v->status) { + case 'active': + $wantedMovies++; + break; + case 'done': + $availableMovies++; + break; + default: + Log::warning('Unexpected CouchPotato status received: '.$v['status']); + break; + } + } + + $html = ' + + '; + $active = 'inactive'; + if (isset($this->config->aggressive_polling) && $this->config->aggressive_polling) { + $active = 'active'; + } + return json_encode(['status' => $active, 'html' => $html]);; + } + + private function sendRequest() + { + $res = null; + try{ + $res = $this->_client->request( + 'GET', + $this->getApiUrl() + ); + }catch(\GuzzleHttp\Exception\BadResponseException $e){ + Log::error("Connection to {$e->getRequest()->getUrl()} failed"); + Log::debug($e->getMessage()); + $res = $e->getRequest(); + }catch(\GuzzleHttp\Exception\ConnectException $e) { + Log::error("CouchPotato connection refused"); + Log::debug($e->getMessage()); + } + return $res; + } + + private function getApiUrl() + { + $url = $this->config->url; + $url = rtrim($url, '/'); + $apiUrl = $url.'/api/'.$this->config->apikey.'/movie.list'; + return $apiUrl; + } +} diff --git a/readme.md b/readme.md index 8b3a55d7..8bead9aa 100644 --- a/readme.md +++ b/readme.md @@ -28,6 +28,7 @@ If you want to see a quick video of it in use, go to https://youtu.be/GXnnMAxPzM You can use the app to link to any site or application, but Foundation apps will auto fill in the icon for the app and supply a default color for the tile. In addition Enhanced apps allow you provide details to an apps API, allowing you to view live stats directly on the dashboad. For example, the NZBGet and Sabnzbd Enhanced apps will display the queue size and download speed while something is downloading. **Enhanced** +- CouchPotato - NZBGet - Pihole - Sabnzbd diff --git a/resources/lang/de/app.php b/resources/lang/de/app.php index adaeb1e4..718e00f5 100644 --- a/resources/lang/de/app.php +++ b/resources/lang/de/app.php @@ -44,6 +44,7 @@ return array ( 'apps.username' => 'Benutzername', 'apps.password' => 'Passwort', 'apps.config' => 'Konfig', + 'apps.aggressive_polling' => 'Aggressives Polling', 'url' => 'Url', 'title' => 'Titel', 'delete' => 'Löschen', diff --git a/resources/lang/en/app.php b/resources/lang/en/app.php index 920b26ed..430d51ef 100644 --- a/resources/lang/en/app.php +++ b/resources/lang/en/app.php @@ -66,6 +66,7 @@ return [ 'apps.tag_name' => 'Tag name', 'apps.tags' => 'Tags', 'apps.override' => 'If different to main url', + 'apps.aggressive_polling' => 'Aggressive polling', 'url' => 'Url', 'title' => 'Title', diff --git a/resources/lang/es/app.php b/resources/lang/es/app.php index dd7c632a..7407f3bc 100644 --- a/resources/lang/es/app.php +++ b/resources/lang/es/app.php @@ -44,6 +44,7 @@ return array ( 'apps.username' => 'Nombre de usuario', 'apps.password' => 'Contraseña', 'apps.config' => 'Config', + 'apps.aggressive_polling' => 'Encuesta agresiva', 'url' => 'Url', 'title' => 'Título', 'delete' => 'Borrar', diff --git a/resources/lang/fi/app.php b/resources/lang/fi/app.php index 0e1178cf..373d0d5d 100644 --- a/resources/lang/fi/app.php +++ b/resources/lang/fi/app.php @@ -44,6 +44,7 @@ return array ( 'apps.username' => 'Käyttäjätunnus', 'apps.password' => 'Salasana', 'apps.config' => 'Konfiguraatio', + 'apps.aggressive_polling' => 'Agressieve polling', 'url' => 'Url', 'title' => 'Otsikko', 'delete' => 'Poistaa', diff --git a/resources/lang/fr/app.php b/resources/lang/fr/app.php index 639b24b3..5ba8bbbe 100644 --- a/resources/lang/fr/app.php +++ b/resources/lang/fr/app.php @@ -44,6 +44,7 @@ return array ( 'apps.username' => 'Nom d\'utilisateur', 'apps.password' => 'Mot de passe', 'apps.config' => 'Config', + 'apps.aggressive_polling' => 'Scrutation agressive', 'url' => 'Url', 'title' => 'Titre', 'delete' => 'Effacer', diff --git a/resources/lang/it/app.php b/resources/lang/it/app.php index 47388cb3..235fbf16 100644 --- a/resources/lang/it/app.php +++ b/resources/lang/it/app.php @@ -61,6 +61,7 @@ return [ 'apps.config' => 'Configurazione', 'apps.apikey' => 'Api Key', 'apps.enable' => 'Abilitato', + 'apps.aggressive_polling' => 'Sondaggio aggressivo', 'url' => 'Url', 'title' => 'Titolo', diff --git a/resources/lang/nl/app.php b/resources/lang/nl/app.php index 416b38bb..3b029366 100644 --- a/resources/lang/nl/app.php +++ b/resources/lang/nl/app.php @@ -65,6 +65,7 @@ return [ 'apps.add_tag' => 'Tag toevoegen', 'apps.tag_name' => 'Naam van tag', 'apps.tags' => 'Tags', + 'apps.aggressive_polling' => 'Agressieve polling', 'url' => 'URL', 'title' => 'Titel', diff --git a/resources/lang/no/app.php b/resources/lang/no/app.php index 09e497ab..20fc1976 100644 --- a/resources/lang/no/app.php +++ b/resources/lang/no/app.php @@ -61,6 +61,7 @@ return [ 'apps.config' => 'Konfigurasjon', 'apps.apikey' => 'Api nøkkel', 'apps.enable' => 'Aktiver', + 'apps.aggressive_polling' => 'Aggressiv avstemning', 'url' => 'Url', 'title' => 'Tittel', diff --git a/resources/lang/pl/app.php b/resources/lang/pl/app.php index e8d1a2ab..5e10afe3 100644 --- a/resources/lang/pl/app.php +++ b/resources/lang/pl/app.php @@ -61,6 +61,7 @@ return [ 'apps.config' => 'Ustawienia', 'apps.apikey' => 'Klucz API', 'apps.enable' => 'Włącz', + 'apps.aggressive_polling' => 'Agresywny głosowanie', 'url' => 'URL', 'title' => 'Tytuł', diff --git a/resources/lang/sv/app.php b/resources/lang/sv/app.php index a4ffbe50..6eb65344 100644 --- a/resources/lang/sv/app.php +++ b/resources/lang/sv/app.php @@ -44,6 +44,7 @@ return array ( 'apps.username' => 'Användarnamn', 'apps.password' => 'Lösenord', 'apps.config' => 'Konfiguration', + 'apps.aggressive_polling' => 'Aggressiv omröstning', 'url' => 'Url', 'title' => 'Titel', 'delete' => 'Radera', diff --git a/resources/lang/tr/app.php b/resources/lang/tr/app.php index 671cd6db..e62a5a87 100644 --- a/resources/lang/tr/app.php +++ b/resources/lang/tr/app.php @@ -59,6 +59,7 @@ return [ 'apps.username' => 'Kullanıcı adı', 'apps.password' => 'Şifre', 'apps.config' => 'Yapılandırma', + 'apps.aggressive_polling' => 'Agresif oy verme', 'url' => 'Adres', 'title' => 'Başlık', diff --git a/resources/views/supportedapps/couchpotato.blade.php b/resources/views/supportedapps/couchpotato.blade.php new file mode 100644 index 00000000..9490cb21 --- /dev/null +++ b/resources/views/supportedapps/couchpotato.blade.php @@ -0,0 +1,25 @@ +

{{ __('app.apps.config') }} ({{ __('app.optional') }})

+
+ + +
+ + {!! Form::hidden('config[aggressive_polling', '0') !!} + +
+
+ + {!! Form::text('config[apikey]', null, array('placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item')) !!} +
+
+ +
+
diff --git a/storage/app/public/supportedapps/couchpotato.png b/storage/app/public/supportedapps/couchpotato.png new file mode 100644 index 0000000000000000000000000000000000000000..50702517d3eeec4343b809dcc111984c869b808a GIT binary patch literal 26590 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 literal 0 HcmV?d00001