2014-05-26 19:45:10 +02:00
< ? php
class ThePirateBayBridge extends BridgeAbstract {
2016-08-30 11:23:55 +02:00
const MAINTAINER = " mitsukarenai " ;
const NAME = " The Pirate Bay " ;
const URI = " https://thepiratebay.org/ " ;
const 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 \" ) " ;
2015-11-05 16:50:18 +01:00
2016-08-30 11:23:55 +02:00
const PARAMETERS = array ( array (
2016-08-27 21:03:26 +02:00
'q' => array (
2016-08-22 01:25:56 +02:00
'name' => 'keywords, separated by semicolons' ,
2016-08-29 23:28:16 +02:00
'exampleValue' => 'first list;second list;…' ,
'required' => true
2016-08-27 21:03:26 +02:00
)
));
2015-11-05 16:50:18 +01:00
2016-08-25 01:24:53 +02:00
public function collectData (){
2014-05-26 19:45:10 +02:00
2014-12-08 19:39:57 +01: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-28 01:25:33 +02:00
$keywordsList = explode ( " ; " , $this -> getInput ( 'q' ));
2014-12-08 19:39:57 +01:00
foreach ( $keywordsList as $keywords ){
2016-09-25 23:22:33 +02:00
$html = getSimpleHTMLDOM ( self :: URI . 'search/' . rawurlencode ( $keywords ) . '/0/3/0' )
or returnServerError ( 'Could not request TPB.' );
2014-12-08 19:39:57 +01:00
if ( $html -> find ( 'table#searchResult' , 0 ) == FALSE )
2016-09-25 23:22:33 +02:00
returnServerError ( 'No result for query ' . $keywords );
2014-05-26 19:45:10 +02:00
2014-12-08 19:39:57 +01:00
foreach ( $html -> find ( 'tr' ) as $element ) {
2016-08-22 18:55:59 +02:00
$item = array ();
2016-08-30 11:23:55 +02:00
$item [ 'uri' ] = self :: URI . $element -> find ( 'a.detLink' , 0 ) -> href ;
2016-08-22 18:55:59 +02:00
$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 19:39:57 +01:00
$this -> items [] = $item ;
}
}
}
2014-05-26 19:45:10 +02:00
}