2014-02-09 15:33:02 +01:00
< ? php
class BandcampBridge extends BridgeAbstract {
2015-11-05 16:50:18 +01:00
2016-08-27 21:03:26 +02:00
public $maintainer = " sebsauvage " ;
public $name = " Bandcamp Tag " ;
public $uri = " http://bandcamp.com/ " ;
public $description = " New bandcamp release by tag " ;
public $parameters = array ( array (
'tag' => array (
2016-08-22 01:25:56 +02:00
'name' => 'tag' ,
'type' => 'text'
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-02-09 15:33:02 +01:00
$html = '' ;
2016-08-28 01:25:33 +02:00
if ( isset ( $this -> getInput ( 'tag' ))) {
$html = $this -> getSimpleHTMLDOM ( 'http://bandcamp.com/tag/' . urlencode ( $this -> getInput ( 'tag' )) . '?sort_field=date' ) or $this -> returnServerError ( 'No results for this query.' );
2014-02-09 15:33:02 +01:00
}
else {
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must specify tag (/tag/...)' );
2014-02-09 15:33:02 +01:00
}
foreach ( $html -> find ( 'li.item' ) as $release ) {
2016-03-02 13:14:22 +01:00
$script = $release -> find ( 'div.art' , 0 ) -> getAttribute ( 'onclick' );
$uri = ltrim ( $script , " return 'url( " );
$uri = rtrim ( $uri , " ') " );
2016-08-22 18:55:59 +02:00
$item = array ();
$item [ 'author' ] = $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
$item [ 'title' ] = $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
$item [ 'content' ] = '<img src="' . $uri . '"/><br/>' . $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
$item [ 'id' ] = $release -> find ( 'a' , 0 ) -> getAttribute ( 'href' );
$item [ 'uri' ] = $release -> find ( 'a' , 0 ) -> getAttribute ( 'href' );
2014-02-09 15:33:02 +01:00
$this -> items [] = $item ;
}
}
public function getName (){
2016-08-27 10:58:00 +02:00
2016-08-28 01:25:33 +02:00
return ( ! empty ( $this -> getInput ( 'tag' )) ? $this -> getInput ( 'tag' ) . ' - ' : '' ) . 'Bandcamp Tag' ;
2014-02-09 15:33:02 +01:00
}
public function getCacheDuration (){
return 600 ; // 10 minutes
}
}