diff --git a/bridges/CyanideAndHappinessBridge.php b/bridges/CyanideAndHappinessBridge.php deleted file mode 100644 index 2b54affc..00000000 --- a/bridges/CyanideAndHappinessBridge.php +++ /dev/null @@ -1,42 +0,0 @@ -getUri()); - - foreach ($html->find('[class*=ComicImage]') as $element) { - $date = $element->find('[class^=Author__Right] p', 0)->plaintext; - $author = str_replace('by ', '', $element->find('[class^=Author__Right] p', 1)->plaintext); - $image = $element->find('img', 0)->src; - $link = $html->find('[rel=canonical]', 0)->href; - - $item = [ - 'uid' => $link, - 'author' => $author, - 'title' => $date, - 'uri' => $link . '#comic', - 'timestamp' => str_replace('.', '-', $date) . 'T00:00:00Z', - 'content' => "" - ]; - $this->items[] = $item; - } - } -} diff --git a/bridges/ExplosmBridge.php b/bridges/ExplosmBridge.php index 8874c6cb..0312a4c4 100644 --- a/bridges/ExplosmBridge.php +++ b/bridges/ExplosmBridge.php @@ -2,60 +2,57 @@ class ExplosmBridge extends BridgeAbstract { - const MAINTAINER = 'bockiii'; - const NAME = 'Explosm Bridge'; - const URI = 'https://www.explosm.net/'; - const CACHE_TIMEOUT = 4800; //2hours - const DESCRIPTION = 'Returns the last 5 comics'; - const PARAMETERS = [ - 'Get latest posts' => [ + const NAME = 'Explosm: Cyanide & Happiness'; + const URI = 'https://explosm.net/'; + const DESCRIPTION = 'A Webcomic by Kris Wilson, Rob DenBleyker, and Dave McElfatrick.'; + const MAINTAINER = 'sal0max, bockiii'; + const CACHE_TIMEOUT = 60 * 60 * 2; // 2 hours + const PARAMETERS = [[ 'limit' => [ - 'name' => 'Posts limit', + 'name' => 'Limit', 'type' => 'number', - 'title' => 'Maximum number of items to return', + 'title' => 'The number of recent comics to get.', 'defaultValue' => 5 - ] ] - ]; + ] + ]; + + public function getIcon() + { + return self::URI . 'favicon-32x32.png'; + } + + public function getURI() + { + return self::URI . 'comics/latest#comic'; + } public function collectData() { $limit = $this->getInput('limit'); - $latest = getSimpleHTMLDOM('https://explosm.net/comics/latest'); - $image = $latest->find('div[id=comic]', 0)->find('img', 0)->getAttribute('src'); - $date_string = $latest->find('p[class*=Author__P]', 0)->innertext; - $next_data_string = $latest->find('script[id=__NEXT_DATA__]', 0)->innertext; - $exp = '/{\\\"latest\\\":\[{\\\"slug\\\":\\\"(.*?)\\ /'; - $reg_array = []; - preg_match($exp, $next_data_string, $reg_array); - $comic_id = $reg_array[1]; - $comic_id = substr($comic_id, 0, strpos($comic_id, '\\')); - $item = []; - $item['uri'] = $this::URI . 'comics/' . $comic_id; - $item['uid'] = $this::URI . 'comics/' . $comic_id; - $item['title'] = 'Comic for ' . $date_string; - $item['timestamp'] = strtotime($date_string); - $item['author'] = $latest->find('p[class*=Author__P]', 2)->innertext; - $item['content'] = ''; - $this->items[] = $item; + $url = $this->getUri(); - $next_comic = substr($this::URI, 0, -1) - . $latest->find('div[class*=MainComic__Selector]', 0)->find('a', 0)->getAttribute('href'); - // use index 1 as the latest comic was already found - for ($i = 1; $i <= $limit; $i++) { - $this_comic = getSimpleHTMLDOM($next_comic); - $image = $this_comic->find('div[id=comic]', 0)->find('img', 0)->getAttribute('src'); - $date_string = $this_comic->find('p[class*=Author__P]', 0)->innertext; - $item = []; - $item['uri'] = $next_comic; - $item['uid'] = $next_comic; - $item['title'] = 'Comic for ' . $date_string; - $item['timestamp'] = strtotime($date_string); - $item['author'] = $this_comic->find('p[class*=Author__P]', 2)->innertext; - $item['content'] = ''; + for ($i = 0; $i < $limit; $i++) { + $html = getSimpleHTMLDOM($url); + + $element = $html->find('[class*=ComicImage]', 0); + $date = $element->find('[class^=Author__Right] p', 0)->plaintext; + $author = str_replace('by ', '', $element->find('[class^=Author__Right] p', 1)->plaintext); + $image = $element->find('img', 0)->src; + $link = $html->find('[rel=canonical]', 0)->href; + + $item = [ + 'uid' => $link, + 'author' => $author, + 'title' => $date, + 'uri' => $link . '#comic', + 'timestamp' => str_replace('.', '-', $date) . 'T00:00:00Z', + 'content' => "" + ]; $this->items[] = $item; - $next_comic = substr($this::URI, 0, -1) - . $this_comic->find('div[class*=MainComic__Selector]', 0)->find('a', 0)->getAttribute('href'); // get next comic link + + // get next url + $url = self::URI . $html->find('[class*=ComicSelector]>a', 0)->href; } } }