Skip to content

Commit

Permalink
[EconomistBridge] Add new bridge (RSS-Bridge#1067)
Browse files Browse the repository at this point in the history
* [EconomistBridge] Added new bridge
  • Loading branch information
thefranke authored and teromene committed Apr 4, 2019
1 parent 66ea189 commit 420a8e7
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions bridges/EconomistBridge.php
Original file line number Diff line number Diff line change
@@ -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;
}
}
}

0 comments on commit 420a8e7

Please sign in to comment.