aboutsummaryrefslogtreecommitdiff
path: root/bridges/DerpibooruBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/DerpibooruBridge.php')
-rw-r--r--bridges/DerpibooruBridge.php208
1 files changed, 107 insertions, 101 deletions
diff --git a/bridges/DerpibooruBridge.php b/bridges/DerpibooruBridge.php
index 8fb2777c..e06e0eff 100644
--- a/bridges/DerpibooruBridge.php
+++ b/bridges/DerpibooruBridge.php
@@ -1,116 +1,122 @@
<?php
-class DerpibooruBridge extends BridgeAbstract {
- const NAME = 'Derpibooru Bridge';
- const URI = 'https://derpibooru.org/';
- const DESCRIPTION = 'Returns newest images from a Derpibooru search';
- const CACHE_TIMEOUT = 300; // 5min
- const MAINTAINER = 'Roliga';
- const PARAMETERS = array(
- array(
- 'f' => array(
- 'name' => 'Filter',
- 'type' => 'list',
- 'values' => array(
- 'Everything' => 56027,
- '18+ R34' => 37432,
- 'Legacy Default' => 37431,
- '18+ Dark' => 37429,
- 'Maximum Spoilers' => 37430,
- 'Default' => 100073
- ),
- 'defaultValue' => 56027
+class DerpibooruBridge extends BridgeAbstract
+{
+ const NAME = 'Derpibooru Bridge';
+ const URI = 'https://derpibooru.org/';
+ const DESCRIPTION = 'Returns newest images from a Derpibooru search';
+ const CACHE_TIMEOUT = 300; // 5min
+ const MAINTAINER = 'Roliga';
- ),
- 'q' => array(
- 'name' => 'Query',
- 'required' => true,
- 'exampleValue' => 'dog',
- )
- )
- );
+ const PARAMETERS = [
+ [
+ 'f' => [
+ 'name' => 'Filter',
+ 'type' => 'list',
+ 'values' => [
+ 'Everything' => 56027,
+ '18+ R34' => 37432,
+ 'Legacy Default' => 37431,
+ '18+ Dark' => 37429,
+ 'Maximum Spoilers' => 37430,
+ 'Default' => 100073
+ ],
+ 'defaultValue' => 56027
- public function detectParameters($url){
- $params = array();
+ ],
+ 'q' => [
+ 'name' => 'Query',
+ 'required' => true,
+ 'exampleValue' => 'dog',
+ ]
+ ]
+ ];
- // Search page e.g. https://derpibooru.org/search?q=cute
- $regex = '/^(https?:\/\/)?(www\.)?derpibooru.org\/search.+q=([^\/&?\n]+)/';
- if(preg_match($regex, $url, $matches) > 0) {
- $params['q'] = urldecode($matches[3]);
- return $params;
- }
+ public function detectParameters($url)
+ {
+ $params = [];
- // Tag page, e.g. https://derpibooru.org/tags/artist-colon-devinian
- $regex = '/^(https?:\/\/)?(www\.)?derpibooru.org\/tags\/([^\/&?\n]+)/';
- if(preg_match($regex, $url, $matches) > 0) {
- $params['q'] = str_replace('-colon-', ':', urldecode($matches[3]));
- return $params;
- }
+ // Search page e.g. https://derpibooru.org/search?q=cute
+ $regex = '/^(https?:\/\/)?(www\.)?derpibooru.org\/search.+q=([^\/&?\n]+)/';
+ if (preg_match($regex, $url, $matches) > 0) {
+ $params['q'] = urldecode($matches[3]);
+ return $params;
+ }
- return null;
- }
+ // Tag page, e.g. https://derpibooru.org/tags/artist-colon-devinian
+ $regex = '/^(https?:\/\/)?(www\.)?derpibooru.org\/tags\/([^\/&?\n]+)/';
+ if (preg_match($regex, $url, $matches) > 0) {
+ $params['q'] = str_replace('-colon-', ':', urldecode($matches[3]));
+ return $params;
+ }
- public function getName(){
- if(!is_null($this->getInput('q'))) {
- return 'Derpibooru search for: '
- . $this->getInput('q');
- } else {
- return parent::getName();
- }
- }
+ return null;
+ }
- public function getURI(){
- if(!is_null($this->getInput('f')) && !is_null($this->getInput('q'))) {
- return self::URI
- . 'search?filter_id='
- . urlencode($this->getInput('f'))
- . '&q='
- . urlencode($this->getInput('q'));
- } else {
- return parent::getURI();
- }
- }
+ public function getName()
+ {
+ if (!is_null($this->getInput('q'))) {
+ return 'Derpibooru search for: '
+ . $this->getInput('q');
+ } else {
+ return parent::getName();
+ }
+ }
- public function collectData(){
- $queryJson = json_decode(getContents(
- self::URI
- . 'api/v1/json/search/images?filter_id='
- . urlencode($this->getInput('f'))
- . '&q='
- . urlencode($this->getInput('q'))
- ));
+ public function getURI()
+ {
+ if (!is_null($this->getInput('f')) && !is_null($this->getInput('q'))) {
+ return self::URI
+ . 'search?filter_id='
+ . urlencode($this->getInput('f'))
+ . '&q='
+ . urlencode($this->getInput('q'));
+ } else {
+ return parent::getURI();
+ }
+ }
- foreach($queryJson->images as $post) {
- $item = array();
+ public function collectData()
+ {
+ $queryJson = json_decode(getContents(
+ self::URI
+ . 'api/v1/json/search/images?filter_id='
+ . urlencode($this->getInput('f'))
+ . '&q='
+ . urlencode($this->getInput('q'))
+ ));
- $postUri = self::URI . $post->id;
+ foreach ($queryJson->images as $post) {
+ $item = [];
- $item['uri'] = $postUri;
- $item['title'] = $post->name;
- $item['timestamp'] = strtotime($post->created_at);
- $item['author'] = $post->uploader;
- $item['enclosures'] = array($post->view_url);
- $item['categories'] = $post->tags;
+ $postUri = self::URI . $post->id;
- $item['content'] = '<p><a href="' // image preview
- . $postUri
- . '"><img src="'
- . $post->representations->medium
- . '"></a></p><p>' // description
- . $post->description
- . '</p><p><b>Size:</b> ' // image size
- . $post->width
- . 'x'
- . $post->height;
- // source link
- if ($post->source_url != null) {
- $item['content'] .= '<br><b>Source:</b> <a href="'
- . $post->source_url
- . '">'
- . $post->source_url
- . '</a></p>';
- };
- $this->items[] = $item;
- }
- }
+ $item['uri'] = $postUri;
+ $item['title'] = $post->name;
+ $item['timestamp'] = strtotime($post->created_at);
+ $item['author'] = $post->uploader;
+ $item['enclosures'] = [$post->view_url];
+ $item['categories'] = $post->tags;
+
+ $item['content'] = '<p><a href="' // image preview
+ . $postUri
+ . '"><img src="'
+ . $post->representations->medium
+ . '"></a></p><p>' // description
+ . $post->description
+ . '</p><p><b>Size:</b> ' // image size
+ . $post->width
+ . 'x'
+ . $post->height;
+ // source link
+ if ($post->source_url != null) {
+ $item['content'] .= '<br><b>Source:</b> <a href="'
+ . $post->source_url
+ . '">'
+ . $post->source_url
+ . '</a></p>';
+ };
+ $this->items[] = $item;
+ }
+ }
}