[ExplosmBridge] Rewrite to work without feedburner (#2417)

* [ExplosmBridge] Rewrite to work without feedburner

re-wrote the bridge to scrap from the new explosm site as the old method of using feedburner is not working anymore, feedburner is stuck on dec/22 when the explosm site changed.
This commit is contained in:
jNullj 2022-01-10 12:44:18 +02:00 committed by GitHub
parent 2f957b6870
commit 799c93a3c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,22 +1,59 @@
<?php <?php
class ExplosmBridge extends FeedExpander { class ExplosmBridge extends BridgeAbstract {
const MAINTAINER = 'bockiii'; const MAINTAINER = 'bockiii';
const NAME = 'Explosm Bridge'; const NAME = 'Explosm Bridge';
const URI = 'https://www.explosm.net/'; const URI = 'https://www.explosm.net/';
const CACHE_TIMEOUT = 4800; //2hours const CACHE_TIMEOUT = 4800; //2hours
const DESCRIPTION = 'Returns the last 5 comics'; 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
)
)
);
public function collectData(){ public function collectData(){
$this->collectExpandableDatas('https://feeds.feedburner.com/Explosm'); $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;
protected function parseItem($feedItem){ $next_comic = substr($this::URI, 0, -1)
$item = parent::parseItem($feedItem); . $latest->find('div[class*=MainComic__Selector]', 0)->find('a', 0)->getAttribute('href');
$comicpage = getSimpleHTMLDOM($item['uri']); // use index 1 as the latest comic was already found
$image = $comicpage->find('div[id=comic-wrap]', 0)->find('img', 0)->getAttribute('src'); for ($i = 1; $i <= $limit; $i++) {
$item['content'] = '<img src="https:' . $image . '" />'; $this_comic = getSimpleHTMLDOM($next_comic);
$image = $this_comic->find('div[id=comic]', 0)->find('img', 0)->getAttribute('src');
return $item; $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
}
} }
} }