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
}
2014-02-09 18:33:02 +04:00
public function collectData ( array $param ){
$html = '' ;
if ( isset ( $param [ 'tag' ])) {
$this -> request = $param [ 'tag' ];
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 , " ') " );
2014-02-09 18:33:02 +04:00
$item = new \Item ();
2016-08-09 15:54:44 +03:00
$item -> author = $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
2014-02-09 18:33:02 +04:00
$item -> title = $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
2016-03-02 15:14:22 +03:00
$item -> content = '<img src="' . $uri . '"/><br/>' . $release -> find ( 'div.itemsubtext' , 0 ) -> plaintext . ' - ' . $release -> find ( 'div.itemtext' , 0 ) -> plaintext ;
2014-02-09 18:33:02 +04:00
$item -> id = $release -> find ( 'a' , 0 ) -> getAttribute ( 'href' );
$item -> uri = $release -> find ( 'a' , 0 ) -> getAttribute ( 'href' );
$this -> items [] = $item ;
}
}
public function getName (){
return ( ! empty ( $this -> request ) ? $this -> request . ' - ' : '' ) . 'Bandcamp Tag' ;
}
public function getCacheDuration (){
return 600 ; // 10 minutes
}
}