2014-05-26 00:30:46 +02:00
< ? php
class BooruprojectBridge extends BridgeAbstract {
2015-11-05 16:50:18 +01:00
2016-08-27 21:03:26 +02:00
public $maintainer = " mitsukarenai " ;
public $name = " Booruproject " ;
public $uri = " http://booru.org/ " ;
public $description = " Returns images from given page and booruproject instance (****.booru.org) " ;
2015-11-05 16:50:18 +01:00
2016-08-27 21:03:26 +02:00
public $parameters = array ( array (
2016-08-22 01:25:56 +02:00
'i' => array (
'name' => 'instance (required)' ,
'required' => true
),
'p' => array ( 'name' => 'page' ),
't' => array ( 'name' => 'tags' )
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 (){
$param = $this -> parameters [ $this -> queriedContext ];
2014-05-26 00:30:46 +02:00
$page = 0 ; $tags = '' ;
2016-08-25 01:24:53 +02:00
if ( ! empty ( $param [ 'p' ][ 'value' ])) {
$page = ( int ) preg_replace ( " /[^0-9]/ " , '' , $param [ 'p' ][ 'value' ]);
2014-05-26 00:30:46 +02:00
$page = $page - 1 ;
$page = $page * 20 ;
}
2016-08-25 01:24:53 +02:00
if ( ! empty ( $param [ 't' ][ 'value' ])) {
$tags = '&tags=' . urlencode ( $param [ 't' ][ 'value' ]);
2014-05-26 00:30:46 +02:00
}
2016-08-25 01:24:53 +02:00
if ( empty ( $param [ 'i' ][ 'value' ])) {
2016-08-17 14:45:08 +02:00
$this -> returnServerError ( 'Please enter a ***.booru.org instance.' );
2014-05-26 00:30:46 +02:00
}
2016-08-25 01:24:53 +02:00
$html = $this -> getSimpleHTMLDOM ( " http:// " . $param [ 'i' ][ 'value' ] . " .booru.org/index.php?page=post&s=list&pid= " . $page . $tags ) or $this -> returnServerError ( 'Could not request Booruproject.' );
2014-05-26 00:30:46 +02:00
foreach ( $html -> find ( 'div[class=content] span' ) as $element ) {
2016-08-22 18:55:59 +02:00
$item = array ();
2016-08-25 01:24:53 +02:00
$item [ 'uri' ] = 'http://' . $param [ 'i' ][ 'value' ] . '.booru.org/' . $element -> find ( 'a' , 0 ) -> href ;
2016-08-22 18:55:59 +02:00
$item [ 'postid' ] = ( int ) preg_replace ( " /[^0-9]/ " , '' , $element -> find ( 'a' , 0 ) -> getAttribute ( 'id' ));
$item [ 'timestamp' ] = time ();
$item [ 'tags' ] = $element -> find ( 'img' , 0 ) -> getAttribute ( 'title' );
2016-08-25 01:24:53 +02:00
$item [ 'title' ] = 'Booruproject ' . $param [ 'i' ][ 'value' ] . ' | ' . $item [ 'postid' ];
2016-08-22 18:55:59 +02:00
$item [ 'content' ] = '<a href="' . $item [ 'uri' ] . '"><img src="' . $element -> find ( 'img' , 0 ) -> src . '" /></a><br>Tags: ' . $item [ 'tags' ];
2016-07-08 19:06:35 +02:00
$this -> items [] = $item ;
2014-05-26 00:30:46 +02:00
}
}
public function getCacheDuration (){
return 1800 ; // 30 minutes
}
}