mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-02-16 07:09:54 +03:00
[ComicsKingdomBridge] Fix/Rewrite of ComicsKingdom Bridge (#4003)
* Rewrite ComicsKingdom Bridge Rewrite of bridge as the existing one no longer works: - Now uses REST API - Added optional limit to get desired number of comics - Author now reflects the comic creators name - Feed name and comic titles now pulled from site - Added myself as the maintainer as I've been the one maintaining, and the existing code no longer is used * Change API to URI to pass test * Remove whitespace, add curly braces and switch to single quotes
This commit is contained in:
parent
79699131e8
commit
84b93e0f8f
1 changed files with 36 additions and 30 deletions
|
@ -2,59 +2,65 @@
|
|||
|
||||
class ComicsKingdomBridge extends BridgeAbstract
|
||||
{
|
||||
const MAINTAINER = 'stjohnjohnson';
|
||||
const MAINTAINER = 'TReKiE';
|
||||
// const MAINTAINER = 'stjohnjohnson';
|
||||
const NAME = 'Comics Kingdom Unofficial RSS';
|
||||
const URI = 'https://comicskingdom.com/';
|
||||
const URI = 'https://wp.comicskingdom.com/wp-json/wp/v2/ck_comic';
|
||||
const CACHE_TIMEOUT = 21600; // 6h
|
||||
const DESCRIPTION = 'Comics Kingdom Unofficial RSS';
|
||||
const PARAMETERS = [ [
|
||||
'comicname' => [
|
||||
'name' => 'comicname',
|
||||
'name' => 'Name of comic',
|
||||
'type' => 'text',
|
||||
'exampleValue' => 'mutts',
|
||||
'title' => 'The name of the comic in the URL after https://comicskingdom.com/',
|
||||
'required' => true
|
||||
],
|
||||
'limit' => [
|
||||
'name' => 'Limit',
|
||||
'type' => 'number',
|
||||
'title' => 'The number of recent comics to get',
|
||||
'defaultValue' => 10
|
||||
]
|
||||
]];
|
||||
|
||||
protected $comicName;
|
||||
|
||||
public function collectData()
|
||||
{
|
||||
$html = getSimpleHTMLDOM($this->getURI(), [], [], true, false);
|
||||
$json = getContents($this->getURI());
|
||||
$data = json_decode($json, false);
|
||||
|
||||
// Get author from first page
|
||||
$author = $html->find('div.author p', 0);
|
||||
;
|
||||
if (isset($data[0]->_embedded->{'wp:term'}[0][0])) {
|
||||
$this->comicName = $data[0]->_embedded->{'wp:term'}[0][0]->name;
|
||||
}
|
||||
|
||||
// Get current date/link
|
||||
$link = $html->find('meta[property=og:url]', -1)->content;
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
foreach ($data as $comicitem) {
|
||||
$item = [];
|
||||
|
||||
$page = getSimpleHTMLDOM($link);
|
||||
|
||||
$imagelink = $page->find('meta[property=og:image]', 0)->content;
|
||||
|
||||
$date = explode('/', $link);
|
||||
|
||||
$item['id'] = $imagelink;
|
||||
$item['uri'] = $link;
|
||||
$item['author'] = $author;
|
||||
$item['title'] = 'Comics Kingdom ' . $this->getInput('comicname');
|
||||
$item['timestamp'] = DateTime::createFromFormat('Y-m-d', $date[count($date) - 1])->getTimestamp();
|
||||
$item['content'] = '<img src="' . $imagelink . '" />';
|
||||
|
||||
$item['id'] = $comicitem->id;
|
||||
$item['uri'] = $comicitem->yoast_head_json->og_url;
|
||||
$item['author'] = str_ireplace('By ', '', $comicitem->ck_comic_byline);
|
||||
$item['title'] = $comicitem->yoast_head_json->title;
|
||||
$item['timestamp'] = $comicitem->date;
|
||||
$item['content'] = '<img src="' . $comicitem->yoast_head_json->og_image[0]->url . '" />';
|
||||
$this->items[] = $item;
|
||||
$link = $page->find('div.comic-viewer-inline a', 0)->href;
|
||||
if (empty($link)) {
|
||||
break; // allow bridge to continue if there's less than 3 comics
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getURI()
|
||||
{
|
||||
if (!is_null($this->getInput('comicname'))) {
|
||||
return self::URI . urlencode($this->getInput('comicname'));
|
||||
$params = [
|
||||
'ck_feature' => $this->getInput('comicname'),
|
||||
'per_page' => $this->getInput('limit'),
|
||||
'date_inclusive' => 'true',
|
||||
'order' => 'desc',
|
||||
'page' => '1',
|
||||
'_embed' => 'true'
|
||||
];
|
||||
|
||||
return self::URI . '?' . http_build_query($params);
|
||||
}
|
||||
|
||||
return parent::getURI();
|
||||
|
@ -62,8 +68,8 @@ class ComicsKingdomBridge extends BridgeAbstract
|
|||
|
||||
public function getName()
|
||||
{
|
||||
if (!is_null($this->getInput('comicname'))) {
|
||||
return $this->getInput('comicname') . ' - Comics Kingdom';
|
||||
if ($this->comicName) {
|
||||
return $this->comicName . ' - Comics Kingdom';
|
||||
}
|
||||
|
||||
return parent::getName();
|
||||
|
|
Loading…
Add table
Reference in a new issue