[ 'p' => [ 'name' => 'page', 'defaultValue' => 0, 'type' => 'number' ], 't' => [ 'name' => 'tags', 'exampleValue' => 'solo', 'title' => 'Tags to search for' ], 'l' => [ 'name' => 'limit', 'exampleValue' => 100, 'title' => 'How many posts to retrieve (hard limit of 1000)' ] ], 0 => [] ]; protected function getFullURI() { return $this->getURI() . 'index.php?&page=dapi&s=post&q=index&json=1&pid=' . $this->getInput('p') . '&limit=' . $this->getInput('l') . '&tags=' . urlencode($this->getInput('t') ?? ''); } /* This function is superfluous for GelbooruBridge, but useful for Bridges that inherit from it */ protected function buildThumbnailURI($element) { return $this->getURI() . 'thumbnails/' . $element->directory . '/thumbnail_' . $element->md5 . '.jpg'; } protected function getItemFromElement($element) { $item = []; $item['uri'] = $this->getURI() . 'index.php?page=post&s=view&id=' . $element->id; $item['postid'] = $element->id; $item['author'] = $element->owner; $item['timestamp'] = date('d F Y H:i:s', $element->change); $item['tags'] = $element->tags; $item['title'] = $this->getName() . ' | ' . $item['postid']; if (isset($element->preview_url)) { $thumbnailUri = $element->preview_url; } else { $thumbnailUri = $this->buildThumbnailURI($element); } $item['content'] = '

Dimensions: ' . strval($element->width) . ' x ' . strval($element->height) . '

Tags: ' . $item['tags']; if (isset($element->source)) { $item['content'] .= '

Source: ' . $element->source . ''; } return $item; } public function collectData() { $url = $this->getFullURI(); $content = getContents($url); if ($content === '') { return; } $posts = Json::decode($content, false); if (isset($posts->post)) { $posts = $posts->post; } foreach ($posts as $post) { $this->items[] = $this->getItemFromElement($post); } } }