diff options
Diffstat (limited to 'bridges/EconomistBridge.php')
-rw-r--r-- | bridges/EconomistBridge.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bridges/EconomistBridge.php b/bridges/EconomistBridge.php new file mode 100644 index 0000000..1256be4 --- /dev/null +++ b/bridges/EconomistBridge.php @@ -0,0 +1,63 @@ +<?php +class EconomistBridge extends BridgeAbstract { + const NAME = 'The Economist: Latest Updates'; + const URI = 'https://www.economist.com'; + const DESCRIPTION = 'Fetches the latest updates from the Economist.'; + const MAINTAINER = 'thefranke'; + const CACHE_TIMEOUT = 3600; // 1h + + public function getIcon() { + return 'https://www.economist.com/sites/default/files/econfinal_favicon.ico'; + } + + public function collectData() { + $html = getSimpleHTMLDOM(self::URI . '/latest/') + or returnServerError('Could not fetch latest updates form The Economist.'); + + foreach($html->find('article') as $element) { + + $a = $element->find('a', 0); + $href = self::URI . $a->href; + $full = getSimpleHTMLDOMCached($href); + $article = $full->find('article', 0); + + $header = $article->find('h1', 0); + $author = $article->find('span[itemprop="author"]', 0); + $time = $article->find('time[itemprop="dateCreated"]', 0); + $content = $article->find('div[itemprop="description"]', 0); + + // Remove newsletter subscription box + $newsletter = $content->find('div[class="newsletter-form__message"]', 0); + if ($newsletter) + $newsletter->outertext = ''; + + $newsletterForm = $content->find('form', 0); + if ($newsletterForm) + $newsletterForm->outertext = ''; + + // Remove next and previous article URLs at the bottom + $nextprev = $content->find('div[class="blog-post__next-previous-wrapper"]', 0); + if ($nextprev) + $nextprev->outertext = ''; + + $section = [ $article->find('h3[itemprop="articleSection"]', 0)->plaintext ]; + + $item = array(); + $item['title'] = $header->find('span', 0)->innertext . ': ' + . $header->find('span', 1)->innertext; + + $item['uri'] = $href; + $item['timestamp'] = strtotime($time->datetime); + $item['author'] = $author->innertext; + $item['categories'] = $section; + + $item['content'] = '<img style="max-width: 100%" src="' + . $a->find('img', 0)->src . '">' . $content->innertext; + + $this->items[] = $item; + + if (count($this->items) >= 10) + break; + } + } +} |