2014-01-30 14:55:35 +01:00
< ? php
/**
* RssBridgePinterest
* Returns the newest photos on a board
2014-05-25 23:27:14 +02:00
* 2014 - 05 - 25
2014-01-30 14:55:35 +01:00
*
* @ name Pinterest Bridge
2014-05-25 23:27:14 +02:00
* @ homepage http :// www . pinterest . com /
2014-01-30 14:55:35 +01:00
* @ description Returns the newest images on a board
2014-05-21 19:44:14 +02:00
* @ maintainer pauder
2014-01-30 14:55:35 +01:00
* @ use1 ( u = " username " , b = " board " )
2014-01-30 15:25:25 +01:00
* @ use2 ( q = " keyword " )
2014-01-30 14:55:35 +01:00
*/
class PinterestBridge extends BridgeAbstract {
private $username ;
private $board ;
2014-01-30 15:25:25 +01:00
private $query ;
2014-01-30 14:55:35 +01:00
public function collectData ( array $param ){
$html = '' ;
2014-02-09 15:20:52 +01:00
if ( isset ( $param [ 'u' ]) || isset ( $param [ 'b' ])) {
if ( empty ( $param [ 'u' ]))
{
$this -> returnError ( 'You must specify a Pinterest username (?u=...).' , 400 );
}
if ( empty ( $param [ 'b' ]))
{
$this -> returnError ( 'You must specify a Pinterest board for this username (?b=...).' , 400 );
}
2014-01-30 14:55:35 +01:00
$this -> username = $param [ 'u' ];
$this -> board = $param [ 'b' ];
$html = file_get_html ( $this -> getURI () . '/' . urlencode ( $this -> username ) . '/' . urlencode ( $this -> board )) or $this -> returnError ( 'Could not request Pinterest.' , 404 );
2014-01-30 15:25:25 +01:00
} else if ( isset ( $param [ 'q' ]))
{
$this -> query = $param [ 'q' ];
$html = file_get_html ( $this -> getURI () . '/search/?q=' . urlencode ( $this -> query )) or $this -> returnError ( 'Could not request Pinterest.' , 404 );
2014-01-30 14:55:35 +01:00
}
2014-01-30 15:25:25 +01:00
2014-01-30 14:55:35 +01:00
else {
$this -> returnError ( 'You must specify a Pinterest username and a board name (?u=...&b=...).' , 400 );
}
2014-01-30 15:25:25 +01:00
2014-01-30 14:55:35 +01:00
foreach ( $html -> find ( 'div.pinWrapper' ) as $div )
{
$a = $div -> find ( 'a.pinImageWrapper' , 0 );
$img = $a -> find ( 'img' , 0 );
$item = new \Item ();
$item -> uri = $this -> getURI () . $a -> getAttribute ( 'href' );
2014-03-11 11:17:57 +01:00
$item -> content = '<img src="' . htmlentities ( str_replace ( '/236x/' , '/736x/' , $img -> getAttribute ( 'src' ))) . '" alt="" />' ;
2014-01-30 14:55:35 +01:00
2014-01-30 15:25:25 +01:00
if ( isset ( $this -> query ))
{
$avatar = $div -> find ( 'img.creditImg' , 0 );
$username = $div -> find ( 'span.creditName' , 0 );
$board = $div -> find ( 'span.creditTitle' , 0 );
$item -> username = $username -> innertext ;
$item -> fullname = $board -> innertext ;
$item -> avatar = $avatar -> getAttribute ( 'src' );
$item -> content .= '<br /><img align="left" style="margin: 2px 4px;" src="' . htmlentities ( $item -> avatar ) . '" /> <strong>' . $item -> username . '</strong>' ;
$item -> content .= '<br />' . $item -> fullname ;
} else {
$credit = $div -> find ( 'a.creditItem' , 0 );
$item -> content .= '<br />' . $credit -> innertext ;
}
2014-01-30 14:55:35 +01:00
$item -> title = basename ( $img -> getAttribute ( 'alt' ));
//$item->timestamp = $media->created_time;
$this -> items [] = $item ;
}
}
public function getName (){
2014-01-30 15:25:25 +01:00
if ( isset ( $this -> query ))
{
return $this -> query . ' - Pinterest' ;
} else {
return $this -> username . ' - ' . $this -> board . ' - Pinterest' ;
}
2014-01-30 14:55:35 +01:00
}
public function getURI (){
return 'http://www.pinterest.com' ;
}
public function getCacheDuration (){
2014-03-11 11:17:57 +01:00
return 3600 ;
2014-01-30 14:55:35 +01:00
}
}