forked from blallo/rss-bridge
1b3c8a8aeb
Inputs are not stored in BridgeAbstract::$parameters anymore to separate static data from dynamic data. The getInput method allows for more readable code. Also fix an "undefined index 'global'" notice Probability of breaking bridges: high ! Signed-off-by: Pierre Mazière <pierre.maziere@gmx.com>
69 lines
2.7 KiB
PHP
69 lines
2.7 KiB
PHP
<?php
|
|
class EZTVBridge extends BridgeAbstract{
|
|
|
|
public $maintainer = "alexAubin";
|
|
public $name = "EZTV";
|
|
public $uri = "https://eztv.ch/";
|
|
public $description = "Returns list of *recent* torrents for a specific show on EZTV. Get showID from URLs in https://eztv.ch/shows/showID/show-full-name.";
|
|
|
|
public $parameters = array( array(
|
|
'i'=>array(
|
|
'name'=>'Show ids',
|
|
'exampleValue'=>'showID1,showID2,…',
|
|
'required'=>true
|
|
)
|
|
));
|
|
|
|
public function collectData(){
|
|
|
|
// Make timestamp from relative released time in table
|
|
function makeTimestamp($relativeReleaseTime){
|
|
|
|
$relativeDays = 0;
|
|
$relativeHours = 0;
|
|
|
|
foreach (explode(" ",$relativeReleaseTime) as $relativeTimeElement) {
|
|
if (substr($relativeTimeElement,-1) == "d") $relativeDays = substr($relativeTimeElement,0,-1);
|
|
if (substr($relativeTimeElement,-1) == "h") $relativeHours = substr($relativeTimeElement,0,-1);
|
|
}
|
|
return mktime(date('h')-$relativeHours,0,0,date('m'),date('d')-$relativeDays,date('Y'));
|
|
}
|
|
|
|
// Check for ID provided
|
|
if (!isset($this->getInput('i')))
|
|
$this->returnClientError('You must provide a list of ID (?i=showID1,showID2,...)');
|
|
|
|
// Loop on show ids
|
|
$showList = explode(",",$this->getInput('i'));
|
|
foreach($showList as $showID){
|
|
|
|
// Get show page
|
|
$html = $this->getSimpleHTMLDOM('https://eztv.ch/shows/'.rawurlencode($showID).'/') or $this->returnServerError('Could not request EZTV for id "'.$showID.'"');
|
|
|
|
// Loop on each element that look like an episode entry...
|
|
foreach($html->find('.forum_header_border') as $element) {
|
|
|
|
// Filter entries that are not episode entries
|
|
$ep = $element->find('td',1);
|
|
if (empty($ep)) continue;
|
|
$epinfo = $ep->find('.epinfo',0);
|
|
$released = $element->find('td',3);
|
|
if (empty($epinfo)) continue;
|
|
if (empty($released->plaintext)) continue;
|
|
|
|
// Filter entries that are older than 1 week
|
|
if ($released->plaintext == '>1 week') continue;
|
|
|
|
// Fill item
|
|
$item = array();
|
|
$item['uri'] = 'https://eztv.ch/'.$epinfo->href;
|
|
$item['id'] = $item['uri'];
|
|
$item['timestamp'] = makeTimestamp($released->plaintext);
|
|
$item['title'] = $epinfo->plaintext;
|
|
$item['content'] = $epinfo->alt;
|
|
if(isset($item['title']))
|
|
$this->items[] = $item;
|
|
}
|
|
}
|
|
}
|
|
}
|