2014-02-09 18:33:02 +04:00
< ? php
class BandcampBridge extends BridgeAbstract {
2015-11-05 18:50:18 +03:00
2014-02-09 18:33:02 +04:00
private $request ;
2015-11-05 18:50:18 +03:00
public function loadMetadatas () {
$this -> maintainer = " sebsauvage " ;
$this -> name = " Bandcamp Tag " ;
$this -> uri = " http://bandcamp.com/ " ;
$this -> description = " New bandcamp release by tag " ;
2016-08-22 02:25:56 +03:00
$this -> parameters [] = array (
'tag' => array (
'name' => 'tag' ,
'type' => 'text'
)
);
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-02-09 18:33:02 +04:00
$html = '' ;
2016-08-25 02:24:53 +03:00
if ( isset ( $param [ 'tag' ][ 'value' ])) {
$this -> request = $param [ 'tag' ][ 'value' ];
2016-07-08 20:06:35 +03:00
$html = $this -> getSimpleHTMLDOM ( 'http://bandcamp.com/tag/' . urlencode ( $this -> request ) . '?sort_field=date' ) or $this -> returnServerError ( 'No results for this query.' );
2014-02-09 18:33:02 +04:00
}
else {
2016-08-17 15:45:08 +03:00
$this -> returnClientError ( 'You must specify tag (/tag/...)' );
2014-02-09 18:33:02 +04:00
}
foreach ( $html -> find ( 'li.item' ) as $release ) {
2016-03-02 15:14:22 +03:00
$script = $release -> find ( 'div.art' , 0 ) -> getAttribute ( 'onclick' );
$uri = ltrim ( $script , " return 'url( " );
$uri = rtrim ( $uri , " ') " );
2016-08-22 19:55:59 +03: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 18:33:02 +04:00
$this -> items [] = $item ;
}
}
public function getName (){
return ( ! empty ( $this -> request ) ? $this -> request . ' - ' : '' ) . 'Bandcamp Tag' ;
}
public function getCacheDuration (){
return 600 ; // 10 minutes
}
}