2015-01-20 17:40:30 +01:00
< ? php
class EZTVBridge extends BridgeAbstract {
2015-11-05 16:50:18 +01:00
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. " ;
2016-08-22 01:25:56 +02:00
$this -> parameters [] = array (
'i' => array (
'name' => 'Show ids' ,
'exampleValue' => 'showID1,showID2,…' ,
'required' => true
)
);
2015-11-05 16:50:18 +01:00
}
2016-08-25 01:24:53 +02:00
public function collectData (){
$param = $this -> parameters [ $this -> queriedContext ];
2015-01-20 17:40:30 +01:00
// 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
2016-08-25 01:24:53 +02:00
if ( ! isset ( $param [ 'i' ][ 'value' ]))
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must provide a list of ID (?i=showID1,showID2,...)' );
2015-01-20 17:40:30 +01:00
// Loop on show ids
2016-08-25 01:24:53 +02:00
$showList = explode ( " , " , $param [ 'i' ][ 'value' ]);
2015-01-20 17:40:30 +01:00
foreach ( $showList as $showID ){
// Get show page
2016-07-08 19:06:35 +02:00
$html = $this -> getSimpleHTMLDOM ( 'https://eztv.ch/shows/' . rawurlencode ( $showID ) . '/' ) or $this -> returnServerError ( 'Could not request EZTV for id "' . $showID . '"' );
2015-01-20 17:40:30 +01:00
// 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
2016-08-22 18:55:59 +02:00
$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' ]))
2015-01-20 17:40:30 +01:00
$this -> items [] = $item ;
}
}
}
}