2014-12-05 13:18:37 +01:00
|
|
|
<?php
|
2015-11-04 00:05:10 +01:00
|
|
|
define('GIPHY_LIMIT', 10);
|
2014-12-05 13:18:37 +01:00
|
|
|
|
|
|
|
class GiphyBridge extends BridgeAbstract{
|
|
|
|
|
2016-08-30 11:23:55 +02:00
|
|
|
const MAINTAINER = "kraoc";
|
|
|
|
const NAME = "Giphy Bridge";
|
|
|
|
const URI = "http://giphy.com/";
|
2016-09-25 17:04:28 +02:00
|
|
|
const CACHE_TIMEOUT = 300; //5min
|
2016-08-30 11:23:55 +02:00
|
|
|
const DESCRIPTION = "Bridge for giphy.com";
|
2015-11-05 16:50:18 +01:00
|
|
|
|
2016-08-30 11:23:55 +02:00
|
|
|
const PARAMETERS = array( array(
|
2016-08-28 20:36:00 +02:00
|
|
|
's'=>array(
|
|
|
|
'name'=>'search tag',
|
|
|
|
'required'=>true
|
|
|
|
),
|
2016-08-27 21:03:26 +02:00
|
|
|
'n'=>array(
|
|
|
|
'name'=>'max number of returned items',
|
|
|
|
'type'=>'number'
|
|
|
|
)
|
|
|
|
));
|
2015-11-05 16:50:18 +01:00
|
|
|
|
2016-08-25 01:24:53 +02:00
|
|
|
public function collectData(){
|
2016-07-08 19:06:35 +02:00
|
|
|
$html = '';
|
2014-12-05 13:18:37 +01:00
|
|
|
$base_url = 'http://giphy.com';
|
2016-08-30 11:23:55 +02:00
|
|
|
$html = $this->getSimpleHTMLDOM(self::URI.'/search/'.urlencode($this->getInput('s').'/'))
|
2016-08-28 20:36:00 +02:00
|
|
|
or $this->returnServerError('No results for this query.');
|
2014-12-05 13:18:37 +01:00
|
|
|
|
|
|
|
$max = GIPHY_LIMIT;
|
2016-08-28 20:38:01 +02:00
|
|
|
if ($this->getInput('n')) {
|
2016-08-28 20:36:00 +02:00
|
|
|
$max = $this->getInput('n');
|
2014-12-05 13:18:37 +01:00
|
|
|
}
|
2016-07-08 19:06:35 +02:00
|
|
|
|
2014-12-05 13:18:37 +01:00
|
|
|
$limit = 0;
|
2016-08-28 01:25:33 +02:00
|
|
|
$kw = urlencode($this->getInput('s'));
|
2014-12-05 13:18:37 +01:00
|
|
|
foreach($html->find('div.hoverable-gif') as $entry) {
|
|
|
|
if($limit < $max) {
|
2016-07-08 19:06:35 +02:00
|
|
|
$node = $entry->first_child();
|
|
|
|
$href = $node->getAttribute('href');
|
|
|
|
|
2016-08-30 11:23:55 +02:00
|
|
|
$html2 = $this->getSimpleHTMLDOM(self::URI . $href)
|
2016-08-28 20:36:00 +02:00
|
|
|
or $this->returnServerError('No results for this query.');
|
2014-12-05 13:18:37 +01:00
|
|
|
$figure = $html2->getElementByTagName('figure');
|
|
|
|
$img = $figure->firstChild();
|
|
|
|
$caption = $figure->lastChild();
|
2016-07-08 19:06:35 +02:00
|
|
|
|
2016-08-22 18:55:59 +02:00
|
|
|
$item = array();
|
|
|
|
$item['id'] = $img->getAttribute('data-gif_id');
|
|
|
|
$item['uri'] = $img->getAttribute('data-bitly_gif_url');
|
|
|
|
$item['username'] = 'Giphy - '.ucfirst($kw);
|
2014-12-05 13:18:37 +01:00
|
|
|
$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) {
|
2016-08-22 18:55:59 +02:00
|
|
|
$title = $item['id'];
|
2014-12-05 13:18:37 +01:00
|
|
|
}
|
2016-08-22 18:55:59 +02:00
|
|
|
$item['title'] = trim($title);
|
|
|
|
$item['content'] =
|
|
|
|
'<a href="'.$item['uri'].'">'
|
2014-12-05 13:18:37 +01:00
|
|
|
.'<img src="'.$img->getAttribute('src').'" width="'.$img->getAttribute('data-original-width').'" height="'.$img->getAttribute('data-original-height').'" />'
|
|
|
|
.'</a>';
|
2016-07-08 19:06:35 +02:00
|
|
|
|
|
|
|
$this->items[] = $item;
|
2014-12-05 13:18:37 +01:00
|
|
|
$limit++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|