rss-bridge/bridges/PokemonTVBridge.php

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

153 lines
4.9 KiB
PHP
Raw Normal View History

2021-09-05 10:11:36 +03:00
<?php
class PokemonTVBridge extends BridgeAbstract
{
const NAME = 'PokemonTV Bridge';
const URI = 'https://www.pokemon.com/';
const DESCRIPTION = 'Returns latest episodes from PokemonTV';
const MAINTAINER = 'Bockiii';
const CACHE_TIMEOUT = 3600;
const PARAMETERS = [ [
'language' => [
'name' => 'Language',
'type' => 'list',
'title' => 'Select your language',
'values' => [
'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' => [
'name' => 'Series Name Filter',
'exampleValue' => 'Ultra',
'required' => false
],
'filterseason' => [
'name' => 'Series Season Filter',
'exampleValue' => '22',
2021-09-05 10:11:36 +03:00
'required' => false
]
2021-09-05 10:11:36 +03:00
]];
public function collectData()
{
$link = 'https://www.pokemon.com/api/pokemontv/v2/channels/' . $this->getInput('language');
$html = getSimpleHTMLDOM($link);
2021-09-05 10:11:36 +03:00
$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) {
2021-09-05 10:11:36 +03:00
case 'movie':
case 'junior':
case 'original':
case 'non-animation':
$itemtitle = $element->channel_name;
2021-09-05 10:11:36 +03:00
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;
default:
$itemtitle = '';
2021-09-05 10:11:36 +03:00
}
$streamurl = 'https://watch.pokemon.com/' . $this->getCountryCode() . '/#/player?id=' . $mediaelement->{'id'};
$item = [];
$item['uri'] = $streamurl;
$item['title'] = $itemtitle;
$item['timestamp'] = $mediaelement->{'last_modified'};
$item['content'] = '<h1>' . $itemtitle . ' ' . $mediaelement->{'title'}
. '</h1><br><br><a href="'
. $streamurl
. '"><img src="'
. $mediaelement->{'images'}->{'medium'}
. '" /></a><br><br>'
. $mediaelement->{'description'}
. '<br><br><a href="' . $mediaelement->{'offline_url'} . '">Download</a>';
$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';
}
}