From 324932642dc2652c00df09148405a5dd10f7c2a3 Mon Sep 17 00:00:00 2001 From: Bockiii Date: Sun, 5 Sep 2021 09:11:36 +0200 Subject: [PATCH] [PokemonTVBridge] Add bridge (#2219) --- bridges/PokemonTVBridge.php | 144 ++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 bridges/PokemonTVBridge.php diff --git a/bridges/PokemonTVBridge.php b/bridges/PokemonTVBridge.php new file mode 100644 index 00000000..276171fe --- /dev/null +++ b/bridges/PokemonTVBridge.php @@ -0,0 +1,144 @@ + array( + 'name' => 'Language', + 'type' => 'list', + 'title' => 'Select your language', + 'values' => array( + 'Danish' => 'dk', + 'Dutch' => 'nl', + 'English (UK)' => 'uk', + 'English (US)' => 'us', + 'Finish' => 'fi', + 'French' => 'fr', + 'German' => 'de', + 'Italian' => 'it', + 'Latin America' => 'el', + 'Norwegian' => 'no', + 'Portoguese' => 'br', + 'Russian' => 'ru', + 'Spanish' => 'es', + 'Swedish' => 'se' + ), + 'defaultValue' => 'English (US)' + ), + 'filtername' => array( + 'name' => 'Series Name Filter', + 'exampleValue' => 'Ultra', + 'required' => false + ), + 'filterseason' => array( + 'name' => 'Series Season Filter', + 'exampleValue' => '5', + 'required' => false + ) + )); + + public function collectData(){ + $link = 'https://www.pokemon.com/api/pokemontv/v2/channels/' . $this->getInput('language'); + + $html = getSimpleHTMLDOM($link) + or returnServerError('Could not request Channels for : ' . $link); + $parsed_json = json_decode($html); + + $filtername = $this->getInput('filtername'); + $filterseason = $this->getInput('filterseason'); + + foreach($parsed_json as $element) { + if(strlen($filtername) >= 1) { + if (!(stristr($element->{'channel_name'}, $filtername) !== false)) { + continue; + } + } + foreach($element->{'media'} as $mediaelement) { + if(strlen($filterseason) >= 1) { + if ($mediaelement->{'season'} != $filterseason) { + continue; + } + } + switch($element->{'media_type'}) { + case 'movie': + $itemtitle = $element->{'channel_name'}; + break; + case 'episode': + $season = str_pad($mediaelement->{'season'}, 2, '0', STR_PAD_LEFT); + $episode = str_pad($mediaelement->{'episode'}, 2, '0', STR_PAD_LEFT); + $itemtitle = $element->{'channel_name'} . ' - S' . $season . 'E' . $episode; + break; + } + $streamurl = 'https://watch.pokemon.com/' . $this->getCountryCode() . '/#/player?id=' . $mediaelement->{'id'}; + $item = array(); + $item['uri'] = $streamurl; + $item['title'] = $itemtitle; + $item['timestamp'] = $mediaelement->{'last_modified'}; + $item['content'] = '

' . $itemtitle . ' ' . $mediaelement->{'title'} + . '





' + . $mediaelement->{'description'} + . '

Download'; + $this->items[] = $item; + } + } + } + + private function getCountryCode() { + switch($this->getInput('language')) { + case 'us': + return 'en-us'; + break; + case 'de': + return 'de-de'; + break; + case 'fr': + return 'fr-fr'; + break; + case 'es': + return 'es-es'; + break; + case 'el': + return 'es-xl'; + break; + case 'it': + return 'it-it'; + break; + case 'dk': + return 'da-dk'; + break; + case 'fi': + return 'fi-fi'; + break; + case 'br': + return 'pt-br'; + break; + case 'uk': + return 'en-gb'; + break; + case 'ru': + return 'ru-ru'; + break; + case 'nl': + return 'nl-nl'; + break; + case 'no': + return 'nb-no'; + break; + case 'se': + return 'sv-se'; + break; + } + } + + public function getIcon() { + return 'https://assets.pokemon.com/static2/_ui/img/favicon.ico'; + } +}