123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- define('GIPHY_LIMIT', 10);
- class GiphyBridge extends BridgeAbstract{
- public function loadMetadatas() {
- $this->maintainer = "kraoc";
- $this->name = "Giphy Bridge";
- $this->uri = "http://giphy.com/";
- $this->description = "Bridge for giphy.com";
- $this->update = "2014-12-05";
- $this->parameters["By tag"] =
- '[
- {
- "name" : "search tag",
- "identifier" : "s"
- }
- ]';
- $this->parameters["Without tag"] =
- '[
- {
- "name" : "max number of returned items",
- "type" : "number",
- "identifier" : "n"
- }
- ]';
- }
- public function collectData(array $param){
- $html = '';
- $base_url = 'http://giphy.com';
- if (isset($param['s'])) { /* keyword search mode */
- $html = $this->file_get_html($base_url.'/search/'.urlencode($param['s'].'/')) or $this->returnError('No results for this query.', 404);
- }
- else {
- $this->returnError('You must specify a search worf (?s=...).', 400);
- }
- $max = GIPHY_LIMIT;
- if (isset($param['n'])) {
- $max = (integer) $param['n'];
- }
-
- $limit = 0;
- $kw = urlencode($param['s']);
- foreach($html->find('div.hoverable-gif') as $entry) {
- if($limit < $max) {
- $node = $entry->first_child();
- $href = $node->getAttribute('href');
-
- $html2 = $this->file_get_html($base_url . $href) or $this->returnError('No results for this query.', 404);
- $figure = $html2->getElementByTagName('figure');
- $img = $figure->firstChild();
- $caption = $figure->lastChild();
-
- $item = new \Item();
- $item->id = $img->getAttribute('data-gif_id');
- $item->uri = $img->getAttribute('data-bitly_gif_url');
- $item->username = 'Giphy - '.ucfirst($kw);
- $title = $caption->innertext();
- $title = preg_replace('/\s+/', ' ',$title);
- $title = str_replace('animated GIF', '', $title);
- $title = str_replace($kw, '', $title);
- $title = preg_replace('/\s+/', ' ',$title);
- $title = trim($title);
- if (strlen($title) <= 0) {
- $title = $item->id;
- }
- $item->title = trim($title);
- $item->content =
- '<a href="'.$item->uri.'">'
- .'<img src="'.$img->getAttribute('src').'" width="'.$img->getAttribute('data-original-width').'" height="'.$img->getAttribute('data-original-height').'" />'
- .'</a>';
-
- $this->items[] = $item;
- $limit++;
- }
- }
- }
- public function getName(){
- return 'Giphy Bridge';
- }
- public function getURI(){
- return 'http://giphy.com/';
- }
- public function getCacheDuration(){
- return 300; // 5 minutes
- }
-
- public function getUsername(){
- return $this->items[0]->username;
- }
- }
|