rss-bridge/bridges/EZTVBridge.php
Pierre Mazière 955eecc299 use BridgeAbstract::file_get_html in all bridges
instead of simple_html_dom function file_get_html

Signed-off-by: Pierre Mazière <pierre.maziere@gmx.com>
2016-06-25 23:17:42 +02:00

87 lines
2.9 KiB
PHP

<?php
class EZTVBridge extends BridgeAbstract{
public function loadMetadatas() {
$this->maintainer = "alexAubin";
$this->name = "EZTV";
$this->uri = "https://eztv.ch/";
$this->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.";
$this->update = "2014-01-20";
$this->parameters[] =
'[
{
"name" : "Show ids",
"identifier" : "i",
"exampleValue" : "showID1,showID2,..."
}
]';
}
public function collectData(array $param){
// 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($param['i']))
$this->returnError('You must provide a list of ID (?i=showID1,showID2,...)', 400);
// Loop on show ids
$showList = explode(",",$param['i']);
foreach($showList as $showID){
// Get show page
$html = $this->file_get_html('https://eztv.ch/shows/'.rawurlencode($showID).'/') or $this->returnError('Could not request EZTV for id "'.$showID.'"', 404);
// 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 == '&gt;1 week') continue;
// Fill item
$item = new \Item();
$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(!empty($item->title))
$this->items[] = $item;
}
}
}
public function getName(){
return 'EZTV';
}
public function getURI(){
return 'https://eztv.ch/';
}
public function getCacheDuration(){
return 3600; // 1 hour
}
}