2014-01-30 17:55:35 +04:00
< ? php
class PinterestBridge extends BridgeAbstract {
2015-11-05 18:50:18 +03:00
2014-01-30 17:55:35 +04:00
private $username ;
private $board ;
2014-01-30 18:25:25 +04:00
private $query ;
2015-11-05 18:50:18 +03:00
public function loadMetadatas () {
$this -> maintainer = " pauder " ;
$this -> name = " Pinterest Bridge " ;
$this -> uri = " http://www.pinterest.com/ " ;
$this -> description = " Returns the newest images on a board " ;
2016-08-06 17:17:58 +03:00
$this -> update = " 2016-08-06 " ;
2015-11-05 18:50:18 +03:00
$this -> parameters [ " By username and board " ] =
' [
{
" name " : " username " ,
" identifier " : " u "
},
{
" name " : " board " ,
" identifier " : " b "
}
] ' ;
$this -> parameters [ " From search " ] =
' [
{
" name " : " Keyword " ,
" identifier " : " q "
}
] ' ;
}
2014-01-30 17:55:35 +04:00
public function collectData ( array $param ){
$html = '' ;
2014-02-09 18:20:52 +04: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 17:55:35 +04:00
$this -> username = $param [ 'u' ];
$this -> board = $param [ 'b' ];
2016-06-26 00:17:42 +03:00
$html = $this -> file_get_html ( $this -> getURI () . '/' . urlencode ( $this -> username ) . '/' . urlencode ( $this -> board )) or $this -> returnError ( 'Username and/or board not found' , 404 );
2016-02-26 17:58:03 +03:00
2014-01-30 18:25:25 +04:00
} else if ( isset ( $param [ 'q' ]))
{
$this -> query = $param [ 'q' ];
2016-06-26 00:17:42 +03:00
$html = $this -> file_get_html ( $this -> getURI () . '/search/?q=' . urlencode ( $this -> query )) or $this -> returnError ( 'Could not request Pinterest.' , 404 );
2014-01-30 17:55:35 +04:00
}
2014-01-30 18:25:25 +04:00
2014-01-30 17:55:35 +04:00
else {
$this -> returnError ( 'You must specify a Pinterest username and a board name (?u=...&b=...).' , 400 );
}
2014-01-30 18:25:25 +04:00
2014-01-30 17:55:35 +04: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 14:17:57 +04:00
$item -> content = '<img src="' . htmlentities ( str_replace ( '/236x/' , '/736x/' , $img -> getAttribute ( 'src' ))) . '" alt="" />' ;
2014-01-30 17:55:35 +04:00
2014-01-30 18:25:25 +04:00
if ( isset ( $this -> query ))
{
2016-02-26 17:58:03 +03:00
$avatar = $div -> find ( 'div.creditImg' , 0 ) -> find ( 'img' , 0 );
$avatar = $avatar -> getAttribute ( 'data-src' );
$avatar = str_replace ( " \\ " , " " , $avatar );
$username = $div -> find ( 'div.creditName' , 0 );
$board = $div -> find ( 'div.creditTitle' , 0 );
2014-01-30 18:25:25 +04:00
$item -> username = $username -> innertext ;
$item -> fullname = $board -> innertext ;
2016-02-26 17:58:03 +03:00
$item -> avatar = $avatar ;
2014-01-30 18:25:25 +04:00
$item -> content .= '<br /><img align="left" style="margin: 2px 4px;" src="' . htmlentities ( $item -> avatar ) . '" /> <strong>' . $item -> username . '</strong>' ;
$item -> content .= '<br />' . $item -> fullname ;
}
2014-01-30 17:55:35 +04:00
2015-01-05 14:16:50 +03:00
$item -> title = $img -> getAttribute ( 'alt' );
2014-01-30 17:55:35 +04:00
//$item->timestamp = $media->created_time;
$this -> items [] = $item ;
}
}
public function getName (){
2014-01-30 18:25:25 +04:00
if ( isset ( $this -> query ))
{
return $this -> query . ' - Pinterest' ;
} else {
return $this -> username . ' - ' . $this -> board . ' - Pinterest' ;
}
2014-01-30 17:55:35 +04:00
}
public function getURI (){
return 'http://www.pinterest.com' ;
}
}