2014-01-30 14:55:35 +01:00
< ? php
class PinterestBridge extends BridgeAbstract {
2015-11-05 16:50:18 +01:00
2014-01-30 14:55:35 +01:00
private $username ;
private $board ;
2014-01-30 15:25:25 +01:00
private $query ;
2015-11-05 16:50:18 +01:00
public function loadMetadatas () {
$this -> maintainer = " pauder " ;
$this -> name = " Pinterest Bridge " ;
2016-08-06 18:40:36 +02:00
$this -> uri = " http://www.pinterest.com " ;
2015-11-05 16:50:18 +01:00
$this -> description = " Returns the newest images on a board " ;
2016-08-17 14:45:08 +02:00
$this -> update = '2016-08-17' ;
2015-11-05 16:50:18 +01: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 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' ]))
{
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must specify a Pinterest username (?u=...).' );
2014-02-09 15:20:52 +01:00
}
if ( empty ( $param [ 'b' ]))
{
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must specify a Pinterest board for this username (?b=...).' );
2014-02-09 15:20:52 +01:00
}
2014-01-30 14:55:35 +01:00
$this -> username = $param [ 'u' ];
$this -> board = $param [ 'b' ];
2016-08-17 14:45:08 +02:00
$html = $this -> file_get_html ( $this -> getURI () . '/' . urlencode ( $this -> username ) . '/' . urlencode ( $this -> board )) or $this -> returnServerError ( 'Username and/or board not found' );
2016-02-26 15:58:03 +01:00
2014-01-30 15:25:25 +01:00
} else if ( isset ( $param [ 'q' ]))
{
$this -> query = $param [ 'q' ];
2016-08-17 14:45:08 +02:00
$html = $this -> file_get_html ( $this -> getURI () . '/search/?q=' . urlencode ( $this -> query )) or $this -> returnServerError ( 'Could not request Pinterest.' );
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 {
2016-08-17 14:45:08 +02:00
$this -> returnClientError ( 'You must specify a Pinterest username and a board name (?u=...&b=...).' );
2014-01-30 14:55:35 +01:00
}
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 ))
{
2016-02-26 15:58:03 +01: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 15:25:25 +01:00
$item -> username = $username -> innertext ;
$item -> fullname = $board -> innertext ;
2016-02-26 15:58:03 +01:00
$item -> avatar = $avatar ;
2014-01-30 15:25:25 +01: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 14:55:35 +01:00
2015-01-05 12:16:50 +01:00
$item -> title = $img -> getAttribute ( 'alt' );
2014-01-30 14:55:35 +01:00
//$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
}
}