diff options
Diffstat (limited to 'bridges/UnogsBridge.php')
-rw-r--r-- | bridges/UnogsBridge.php | 371 |
1 files changed, 188 insertions, 183 deletions
diff --git a/bridges/UnogsBridge.php b/bridges/UnogsBridge.php index f03555b4..021b75ed 100644 --- a/bridges/UnogsBridge.php +++ b/bridges/UnogsBridge.php @@ -1,191 +1,196 @@ <?php -class UnogsBridge extends BridgeAbstract { - - const MAINTAINER = 'csisoap'; - const NAME = 'uNoGS Bridge'; - const URI = 'https://unogs.com'; - const DESCRIPTION = 'Return what\'s new or removal on Netflix'; - - const PARAMETERS = array( - 'global' => array( - 'feed' => array( - 'name' => 'feed', - 'type' => 'list', - 'title' => 'Choose whether you want latest movies or removal on Netflix', - 'values' => array( - 'What\'s New' => 'new last 7 days', - 'Expiring' => 'expiring' - ) - ), - 'limit' => self::LIMIT, - ), - 'Global' => array(), - 'Country' => array( - 'country_code' => array( - 'name' => 'Country', - 'type' => 'list', - 'title' => 'Choose your preferred country', - 'values' => array( - 'Argentina' => 21, - 'Australia' => 23, - 'Belgium' => 26, - 'Brazil' => 29, - 'Canada' => 33, - 'Colombia' => 36, - 'Czech Republic' => 307, - 'France' => 45, - 'Germany' => 39, - 'Greece' => 327, - 'Hong Kong' => 331, - 'Hungary' => 334, - 'Iceland' => 265, - 'India' => 337, - 'Israel' => 336, - 'Italy' => 269, - 'Japan' => 267, - 'Lithuania' => 357, - 'Malaysia' => 378, - 'Mexico' => 65, - 'Netherlands' => 67, - 'Philippines' => 390, - 'Poland' => 392, - 'Portugal' => 268, - 'Romania' => 400, - 'Russia' => 402, - 'Singapore' => 408, - 'Slovakia' => 412, - 'South Africa' => 447, - 'South Korea' => 348, - 'Spain' => 270, - 'Sweden' => 73, - 'Switzerland' => 34, - 'Thailand' => 425, - 'Turkey' => 432, - 'Ukraine' => 436, - 'United Kingdom' => 46, - 'United States' => 78 - ) - ) - ) - ); - - public function getName() { - $feedName = ''; - if($this->queriedContext == 'Global') { - $feedName .= 'Netflix Global - '; - } elseif($this->queriedContext == 'Country') { - $feedName .= 'Netflix ' . $this->getParametersKey('country_code') . ' - '; - } - if($this->getInput('feed') == 'expiring') { - $feedName .= 'Expiring title'; - } elseif($this->getInput('feed') == 'new last 7 days') { - $feedName .= 'What\'s New'; - } else { - $feedName = self::NAME; - } - return $feedName; - } - - private function getParametersKey($input = '') { - $params = $this->getParameters(); - $tab = 'Country'; - if (!isset($params[$tab][$input])) { - return ''; - } - - return array_search( - $this->getInput($input), - $params[$tab][$input]['values'] - ); - - } - - private function getJSON($url) { - $header = array( - 'Referer: https://unogs.com/', - 'referrer: http://unogs.com' - ); - - $raw = getContents($url, $header); - return json_decode($raw, true); - } - - private function getImage($nfid) { - $url = self::URI . '/api/title/bgimages?netflixid=' . $nfid; - $json = $this->getJSON($url); - $image_wrapper = ''; - if(isset($json['bo1280x448'])) { - $image_wrapper = 'bo1280x448'; - } else { - $image_wrapper = 'bo665x375'; - } - end($json[$image_wrapper]); - $position = key($json[$image_wrapper]); - $image_link = $json[$image_wrapper][$position]['url']; - return $image_link; - } - - private function handleData($data) { - $item = array(); - $item['title'] = $data['title'] . ' - ' . $data['year']; - $item['timestamp'] = $data['titledate']; - $netflix_id = $data['nfid']; - $item['uri'] = 'https://www.netflix.com/title/' . $netflix_id; - $image_url = $this->getImage($netflix_id); - $netflix_synopsis = $data['synopsis']; - $expired_warning = ''; - if(isset($data['expires'])) { - $expired_warning .= '<p><b>Expired on: ' . $data['expires'] . '</b></p>'; - $item['timestamp'] = $data['expires']; - } - $unogs_url = self::URI . '/title/' . $netflix_id; - - $item['content'] = <<<EOD +class UnogsBridge extends BridgeAbstract +{ + const MAINTAINER = 'csisoap'; + const NAME = 'uNoGS Bridge'; + const URI = 'https://unogs.com'; + const DESCRIPTION = 'Return what\'s new or removal on Netflix'; + + const PARAMETERS = [ + 'global' => [ + 'feed' => [ + 'name' => 'feed', + 'type' => 'list', + 'title' => 'Choose whether you want latest movies or removal on Netflix', + 'values' => [ + 'What\'s New' => 'new last 7 days', + 'Expiring' => 'expiring' + ] + ], + 'limit' => self::LIMIT, + ], + 'Global' => [], + 'Country' => [ + 'country_code' => [ + 'name' => 'Country', + 'type' => 'list', + 'title' => 'Choose your preferred country', + 'values' => [ + 'Argentina' => 21, + 'Australia' => 23, + 'Belgium' => 26, + 'Brazil' => 29, + 'Canada' => 33, + 'Colombia' => 36, + 'Czech Republic' => 307, + 'France' => 45, + 'Germany' => 39, + 'Greece' => 327, + 'Hong Kong' => 331, + 'Hungary' => 334, + 'Iceland' => 265, + 'India' => 337, + 'Israel' => 336, + 'Italy' => 269, + 'Japan' => 267, + 'Lithuania' => 357, + 'Malaysia' => 378, + 'Mexico' => 65, + 'Netherlands' => 67, + 'Philippines' => 390, + 'Poland' => 392, + 'Portugal' => 268, + 'Romania' => 400, + 'Russia' => 402, + 'Singapore' => 408, + 'Slovakia' => 412, + 'South Africa' => 447, + 'South Korea' => 348, + 'Spain' => 270, + 'Sweden' => 73, + 'Switzerland' => 34, + 'Thailand' => 425, + 'Turkey' => 432, + 'Ukraine' => 436, + 'United Kingdom' => 46, + 'United States' => 78 + ] + ] + ] + ]; + + public function getName() + { + $feedName = ''; + if ($this->queriedContext == 'Global') { + $feedName .= 'Netflix Global - '; + } elseif ($this->queriedContext == 'Country') { + $feedName .= 'Netflix ' . $this->getParametersKey('country_code') . ' - '; + } + if ($this->getInput('feed') == 'expiring') { + $feedName .= 'Expiring title'; + } elseif ($this->getInput('feed') == 'new last 7 days') { + $feedName .= 'What\'s New'; + } else { + $feedName = self::NAME; + } + return $feedName; + } + + private function getParametersKey($input = '') + { + $params = $this->getParameters(); + $tab = 'Country'; + if (!isset($params[$tab][$input])) { + return ''; + } + + return array_search( + $this->getInput($input), + $params[$tab][$input]['values'] + ); + } + + private function getJSON($url) + { + $header = [ + 'Referer: https://unogs.com/', + 'referrer: http://unogs.com' + ]; + + $raw = getContents($url, $header); + return json_decode($raw, true); + } + + private function getImage($nfid) + { + $url = self::URI . '/api/title/bgimages?netflixid=' . $nfid; + $json = $this->getJSON($url); + $image_wrapper = ''; + if (isset($json['bo1280x448'])) { + $image_wrapper = 'bo1280x448'; + } else { + $image_wrapper = 'bo665x375'; + } + end($json[$image_wrapper]); + $position = key($json[$image_wrapper]); + $image_link = $json[$image_wrapper][$position]['url']; + return $image_link; + } + + private function handleData($data) + { + $item = []; + $item['title'] = $data['title'] . ' - ' . $data['year']; + $item['timestamp'] = $data['titledate']; + $netflix_id = $data['nfid']; + $item['uri'] = 'https://www.netflix.com/title/' . $netflix_id; + $image_url = $this->getImage($netflix_id); + $netflix_synopsis = $data['synopsis']; + $expired_warning = ''; + if (isset($data['expires'])) { + $expired_warning .= '<p><b>Expired on: ' . $data['expires'] . '</b></p>'; + $item['timestamp'] = $data['expires']; + } + $unogs_url = self::URI . '/title/' . $netflix_id; + + $item['content'] = <<<EOD <img src={$image_url}> $expired_warning <p>$netflix_synopsis</p> <p>Details: <a href={$unogs_url}>$unogs_url</a></p> EOD; - $this->items[] = $item; - } - - public function collectData() { - $feed = $this->getInput('feed'); - $is_global = false; - $country_code = ''; - - switch ($this->queriedContext) { - case 'Country': - $country_code = $this->getInput('country_code'); - break; - } - - $limit = $this->getInput('limit') ?? 30; - - // https://rapidapi.com/unogs/api/unogsng/details - $api_url = sprintf( - '%s/api/search?query=%s%s&limit=%s', - self::URI, - urlencode($feed), - $country_code ? '&countrylist=' . $country_code : '', - $limit - ); - - $json_data = $this->getJSON($api_url); - $movies = $json_data['results']; - - if($this->getInput('feed') == 'expiring') { - /* uNoGS API returns movies/series that going to remove - * today according to the day you fetch the data. - * They put items that going to remove in the future on the last - * so I reverse this to get those items, not to bothers those that already removed today. - */ - $movies = array_reverse($movies); - } - - foreach($movies as $movie) { - $this->handleData($movie); - } - } + $this->items[] = $item; + } + + public function collectData() + { + $feed = $this->getInput('feed'); + $is_global = false; + $country_code = ''; + + switch ($this->queriedContext) { + case 'Country': + $country_code = $this->getInput('country_code'); + break; + } + + $limit = $this->getInput('limit') ?? 30; + + // https://rapidapi.com/unogs/api/unogsng/details + $api_url = sprintf( + '%s/api/search?query=%s%s&limit=%s', + self::URI, + urlencode($feed), + $country_code ? '&countrylist=' . $country_code : '', + $limit + ); + + $json_data = $this->getJSON($api_url); + $movies = $json_data['results']; + + if ($this->getInput('feed') == 'expiring') { + /* uNoGS API returns movies/series that going to remove + * today according to the day you fetch the data. + * They put items that going to remove in the future on the last + * so I reverse this to get those items, not to bothers those that already removed today. + */ + $movies = array_reverse($movies); + } + + foreach ($movies as $movie) { + $this->handleData($movie); + } + } } |