array( 'name'=>'Show ids', 'exampleValue'=>'showID1,showID2,…', 'required'=>true ) )); public function collectData(){ $param=$this->parameters[$this->queriedContext]; // 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']['value'])) $this->returnClientError('You must provide a list of ID (?i=showID1,showID2,...)'); // Loop on show ids $showList = explode(",",$param['i']['value']); 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; } } } }