2014-05-26 19:45:10 +02:00
< ? php
class FlickrTagBridge extends BridgeAbstract {
2016-08-27 21:03:26 +02:00
public $maintainer = " erwang " ;
public $name = " Flickr TagUser " ;
public $uri = " http://www.flickr.com/ " ;
public $description = " Returns the tagged or user images from Flickr " ;
2015-11-05 16:50:18 +01:00
2016-08-27 21:03:26 +02:00
public $parameters = array (
'By keyword' => array (
'q' => array ( 'name' => 'keyword' )
),
2015-11-05 16:50:18 +01:00
2016-08-27 21:03:26 +02:00
'By username' => array (
'u' => array ( 'name' => 'Username' )
),
);
2015-11-05 16:50:18 +01:00
2016-08-25 01:24:53 +02:00
public function collectData (){
2016-07-08 19:06:35 +02:00
$html = $this -> getSimpleHTMLDOM ( 'http://www.flickr.com/search/?q=vendee&s=rec' ) or $this -> returnServerError ( 'Could not request Flickr.' );
2016-08-28 01:25:33 +02:00
if ( isset ( $this -> getInput ( 'q' ))) { /* keyword search mode */
$this -> request = $this -> getInput ( 'q' );
2016-07-08 19:06:35 +02:00
$html = $this -> getSimpleHTMLDOM ( 'http://www.flickr.com/search/?q=' . urlencode ( $this -> request ) . '&s=rec' ) or $this -> returnServerError ( 'No results for this query.' );
2014-05-26 19:45:10 +02:00
}
2016-08-28 01:25:33 +02:00
elseif ( isset ( $this -> getInput ( 'u' ))) { /* user timeline mode */
$this -> request = $this -> getInput ( 'u' );
2016-07-08 19:06:35 +02:00
$html = $this -> getSimpleHTMLDOM ( 'http://www.flickr.com/photos/' . urlencode ( $this -> request ) . '/' ) or $this -> returnServerError ( 'Requested username can\'t be found.' );
2014-05-26 19:45:10 +02:00
}
2016-07-08 19:06:35 +02:00
2014-05-26 19:45:10 +02:00
else {
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must specify a keyword or a Flickr username.' );
2014-05-26 19:45:10 +02:00
}
foreach ( $html -> find ( 'span.photo_container' ) as $element ) {
2016-08-22 18:55:59 +02:00
$item = array ();
$item [ 'uri' ] = 'http://flickr.com' . $element -> find ( 'a' , 0 ) -> href ;
2016-08-09 15:50:25 +02:00
$thumbnailUri = $element -> find ( 'img' , 0 ) -> getAttribute ( 'data-defer-src' );
2016-08-22 18:55:59 +02:00
$item [ 'content' ] = '<a href="' . $item [ 'uri' ] . '"><img src="' . $thumbnailUri . '" /></a>' ; // FIXME: Filter javascript ?
$item [ 'title' ] = $element -> find ( 'a' , 0 ) -> title ;
2014-05-26 19:45:10 +02:00
$this -> items [] = $item ;
}
}
public function getCacheDuration (){
return 21600 ; // 6 hours
}
}