From 493e76e4b915468badaa1064f1c92ae1557986ad Mon Sep 17 00:00:00 2001 From: fulmeek <36341513+fulmeek@users.noreply.github.com> Date: Tue, 15 Jan 2019 16:36:42 +0100 Subject: [PATCH] [BakaUpdatesMangaReleasesBridge] Add new bridge (#999) --- bridges/BakaUpdatesMangaReleasesBridge.php | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 bridges/BakaUpdatesMangaReleasesBridge.php diff --git a/bridges/BakaUpdatesMangaReleasesBridge.php b/bridges/BakaUpdatesMangaReleasesBridge.php new file mode 100644 index 00000000..e6da64b6 --- /dev/null +++ b/bridges/BakaUpdatesMangaReleasesBridge.php @@ -0,0 +1,93 @@ + array( + 'name' => 'Series ID', + 'type' => 'number', + 'required' => true, + 'exampleValue' => '12345' + ) + )); + const LIMIT_ITEMS = 10; + + private $feedName = ''; + + public function collectData() { + $html = getSimpleHTMLDOM($this->getURI()) + or returnServerError('Series not found'); + + $objTitle = $html->find('td[class="text pad"]', 1); + if ($objTitle) + $this->feedName = $objTitle->plaintext; + + $itemlist = $html->find('td#main_content table table table tr'); + if (!$itemlist) + returnServerError('No releases'); + + $limit = self::LIMIT_ITEMS; + foreach($itemlist as $element) { + $cols = $element->find('td[class="text pad"]'); + if (!$cols) + continue; + if ($limit <= 0) + break; + + $item = array(); + $title = array(); + + $item['content'] = ''; + + $objDate = $cols[0]; + if ($objDate) + $item['timestamp'] = strtotime($objDate->plaintext); + + $objTitle = $cols[1]; + if ($objTitle) { + $title[] = html_entity_decode($objTitle->plaintext); + $item['content'] .= '

Series: ' . $objTitle->innertext . '

'; + } + + $objVolume = $cols[2]; + if ($objVolume && !empty($objVolume->plaintext)) + $title[] = 'Vol.' . $objVolume->plaintext; + + $objChapter = $cols[3]; + if ($objChapter && !empty($objChapter->plaintext)) + $title[] = 'Chp.' . $objChapter->plaintext; + + $objAuthor = $cols[4]; + if ($objAuthor && !empty($objAuthor->plaintext)) { + $item['author'] = html_entity_decode($objAuthor->plaintext); + $item['content'] .= '

Groups: ' . $objAuthor->innertext . '

'; + } + + $item['title'] = implode(' ', $title); + $item['uri'] = $this->getURI() . '#' . hash('sha1', $item['title']); + + $this->items[] = $item; + + if(count($this->items) >= $limit) { + break; + } + } + } + + public function getURI(){ + $series_id = $this->getInput('series_id'); + if (!empty($series_id)) { + return self::URI . 'releases.html?search=' . $series_id . '&stype=series'; + } + return self::URI; + } + + public function getName(){ + if(!empty($this->feedName)) { + return $this->feedName . ' - ' . self::NAME; + } + return parent::getName(); + } +}