2015-01-20 19:40:30 +03:00
< ? php
class EZTVBridge extends BridgeAbstract {
2015-11-05 18:50:18 +03: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. " ;
$this -> update = " 2014-01-20 " ;
$this -> parameters [] =
' [
{
" name " : " Show ids " ,
" identifier " : " i " ,
" exampleValue " : " showID1,showID2,... "
}
] ' ;
}
2015-01-20 19:40:30 +03:00
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 = 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 == '>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
}
}