diff options
Diffstat (limited to 'bridges/ExplosmBridge.php')
-rw-r--r-- | bridges/ExplosmBridge.php | 110 |
1 files changed, 56 insertions, 54 deletions
diff --git a/bridges/ExplosmBridge.php b/bridges/ExplosmBridge.php index cfe42195..8874c6cb 100644 --- a/bridges/ExplosmBridge.php +++ b/bridges/ExplosmBridge.php @@ -1,59 +1,61 @@ <?php -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 = array( - 'Get latest posts' => array( - 'limit' => array( - 'name' => 'Posts limit', - 'type' => 'number', - 'title' => 'Maximum number of items to return', - 'defaultValue' => 5 - ) - ) - ); +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' => [ + 'limit' => [ + 'name' => 'Posts limit', + 'type' => 'number', + 'title' => 'Maximum number of items to return', + 'defaultValue' => 5 + ] + ] + ]; - 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 = array(); - preg_match($exp, $next_data_string, $reg_array); - $comic_id = $reg_array[1]; - $comic_id = substr($comic_id, 0, strpos($comic_id, '\\')); - $item = array(); - $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'] = '<img src="' . $image . '" />'; - $this->items[] = $item; + 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'] = '<img src="' . $image . '" />'; + $this->items[] = $item; - $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 = array(); - $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'] = '<img src="' . $image . '" />'; - $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 - } - } + $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'] = '<img src="' . $image . '" />'; + $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 + } + } } |