2014-05-26 21:45:10 +04:00
< ? php
class ThePirateBayBridge extends BridgeAbstract {
2015-11-05 18:50:18 +03:00
public function loadMetadatas () {
$this -> maintainer = " mitsukarenai " ;
$this -> name = " The Pirate Bay " ;
2016-05-16 16:53:54 +03:00
$this -> uri = " https://thepiratebay.org/ " ;
2015-11-05 18:50:18 +03:00
$this -> description = " Returns results for the keywords. You can put several list of keywords by separating them with a semicolon (e.g. \" one show;another show \" ) " ;
2016-08-22 02:25:56 +03:00
$this -> parameters [] = array (
'q' => array (
'name' => 'keywords, separated by semicolons' ,
'exampleValue' => 'first list;second list;…'
)
);
2015-11-05 18:50:18 +03:00
}
2016-08-25 02:24:53 +03:00
public function collectData (){
$param = $this -> parameters [ $this -> queriedContext ];
2014-05-26 21:45:10 +04:00
2014-12-08 21:39:57 +03:00
function parseDateTimestamp ( $element ){
$guessedDate = $element -> find ( 'font' , 0 ) -> plaintext ;
$guessedDate = explode ( " Uploaded " , $guessedDate )[ 1 ];
$guessedDate = explode ( " , " , $guessedDate )[ 0 ];
if ( count ( explode ( " : " , $guessedDate )) == 1 )
{
$guessedDate = strptime ( $guessedDate , '%m-%d %Y' );
$timestamp = mktime ( 0 , 0 , 0 ,
$guessedDate [ 'tm_mon' ] + 1 , $guessedDate [ 'tm_mday' ], 1900 + $guessedDate [ 'tm_year' ]);
}
else if ( explode ( " " , $guessedDate )[ 0 ] == 'Today' )
{
$guessedDate = strptime ( explode ( " " , $guessedDate )[ 1 ], '%H:%M' );
$timestamp = mktime ( $guessedDate [ 'tm_hour' ], $guessedDate [ 'tm_min' ], 0 ,
date ( 'm' ), date ( 'd' ), date ( 'Y' ));
}
else if ( explode ( " " , $guessedDate )[ 0 ] == 'Y-day' )
{
$guessedDate = strptime ( explode ( " " , $guessedDate )[ 1 ], '%H:%M' );
$timestamp = mktime ( $guessedDate [ 'tm_hour' ], $guessedDate [ 'tm_min' ], 0 ,
date ( 'm' , time () - 24 * 60 * 60 ), date ( 'd' , time () - 24 * 60 * 60 ), date ( 'Y' , time () - 24 * 60 * 60 ));
}
else
{
$guessedDate = strptime ( $guessedDate , '%m-%d %H:%M' );
$timestamp = mktime ( $guessedDate [ 'tm_hour' ], $guessedDate [ 'tm_min' ], 0 ,
$guessedDate [ 'tm_mon' ] + 1 , $guessedDate [ 'tm_mday' ], date ( 'Y' ));
}
return $timestamp ;
}
2016-08-25 02:24:53 +03:00
if ( ! isset ( $param [ 'q' ][ 'value' ]))
2016-08-17 15:45:08 +03:00
$this -> returnClientError ( 'You must specify keywords (?q=...)' );
2014-12-08 21:39:57 +03:00
2016-08-25 02:24:53 +03:00
$keywordsList = explode ( " ; " , $param [ 'q' ][ 'value' ]);
2014-12-08 21:39:57 +03:00
foreach ( $keywordsList as $keywords ){
2016-07-08 20:06:35 +03:00
$html = $this -> getSimpleHTMLDOM ( 'https://thepiratebay.org/search/' . rawurlencode ( $keywords ) . '/0/3/0' ) or $this -> returnServerError ( 'Could not request TPB.' );
2014-12-08 21:39:57 +03:00
if ( $html -> find ( 'table#searchResult' , 0 ) == FALSE )
2016-08-17 15:45:08 +03:00
$this -> returnServerError ( 'No result for query ' . $keywords );
2014-05-26 21:45:10 +04:00
2014-12-08 21:39:57 +03:00
foreach ( $html -> find ( 'tr' ) as $element ) {
2016-08-22 19:55:59 +03:00
$item = array ();
$item [ 'uri' ] = 'https://thepiratebay.org/' . $element -> find ( 'a.detLink' , 0 ) -> href ;
$item [ 'id' ] = $item [ 'uri' ];
$item [ 'timestamp' ] = parseDateTimestamp ( $element );
$item [ 'title' ] = $element -> find ( 'a.detLink' , 0 ) -> plaintext ;
$item [ 'seeders' ] = ( int ) $element -> find ( 'td' , 2 ) -> plaintext ;
$item [ 'leechers' ] = ( int ) $element -> find ( 'td' , 3 ) -> plaintext ;
$item [ 'content' ] = $element -> find ( 'font' , 0 ) -> plaintext . '<br>seeders: ' . $item [ 'seeders' ] . ' | leechers: ' . $item [ 'leechers' ] . '<br><a href="' . $element -> find ( 'a' , 3 ) -> href . '">download</a>' ;
if ( isset ( $item [ 'title' ]))
2014-12-08 21:39:57 +03:00
$this -> items [] = $item ;
}
}
}
2014-05-26 21:45:10 +04:00
}