diff --git a/bridges/InstagramBridge.php b/bridges/InstagramBridge.php new file mode 100644 index 0000000..8a5575e --- /dev/null +++ b/bridges/InstagramBridge.php @@ -0,0 +1,80 @@ +request = $param['u']; + $html = file_get_html('http://instagram.com/'.urlencode($this->request)) or $this->returnError('Could not request Instagram.', 404); + } + else { + $this->returnError('You must specify a Instagram username (?u=...).', 400); + } + + $innertext = null; + + foreach($html->find('script') as $script) + { + if ('' === $script->innertext) { + continue; + } + + $pos = strpos(trim($script->innertext), 'window._sharedData'); + if (0 !== $pos) + { + continue; + } + + $innertext = $script->innertext; + break; + } + + + + $json = trim(substr($innertext, $pos+18), ' =;'); + $data = json_decode($json); + + $userMedia = $data->entry_data->UserProfile[0]->userMedia; + + + foreach($userMedia as $media) + { + $image = $media->images->standard_resolution; + + $item = new \Item(); + $item->uri = $media->link; + $item->content = ''; + if (isset($media->caption)) + { + $item->title = $media->caption->text; + } else { + $item->title = basename($image->url); + } + $item->timestamp = $media->created_time; + $this->items[] = $item; + + } + } + + public function getName(){ + return (!empty($this->request) ? $this->request .' - ' : '') .'Instagram Bridge'; + } + + public function getURI(){ + return 'http://instagram.com/'; + } + + public function getCacheDuration(){ + return 3600; + } +} diff --git a/bridges/PinterestBridge.php b/bridges/PinterestBridge.php new file mode 100644 index 0000000..8c24ecd --- /dev/null +++ b/bridges/PinterestBridge.php @@ -0,0 +1,88 @@ +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); + } 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); + } + + else { + $this->returnError('You must specify a Pinterest username and a board name (?u=...&b=...).', 400); + } + + + 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'); + $item->content = ''; + + + 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 .= '
'.$item->username.''; + $item->content .= '
'.$item->fullname; + } else { + + $credit = $div->find('a.creditItem',0); + $item->content .= '
'.$credit->innertext; + } + + $item->title = basename($img->getAttribute('alt')); + + //$item->timestamp = $media->created_time; + $this->items[] = $item; + + } + } + + public function getName(){ + + if (isset($this->query)) + { + return $this->query .' - Pinterest'; + } else { + return $this->username .' - '. $this->board.' - Pinterest'; + } + } + + public function getURI(){ + return 'http://www.pinterest.com'; + } + + public function getCacheDuration(){ + return 0; + } +}