summaryrefslogtreecommitdiff
path: root/bridges/RoadAndTrackBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/RoadAndTrackBridge.php')
-rw-r--r--bridges/RoadAndTrackBridge.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/bridges/RoadAndTrackBridge.php b/bridges/RoadAndTrackBridge.php
new file mode 100644
index 0000000..b3f0acc
--- /dev/null
+++ b/bridges/RoadAndTrackBridge.php
@@ -0,0 +1,68 @@
+<?php
+class RoadAndTrackBridge extends BridgeAbstract {
+ const MAINTAINER = 'teromene';
+ const NAME = 'Road And Track Bridge';
+ const URI = 'https://www.roadandtrack.com/';
+ const CACHE_TIMEOUT = 86400; // 24h
+ const DESCRIPTION = 'Returns the latest news from Road & Track.';
+
+ public function collectData() {
+
+ $page = getSimpleHTMLDOM(self::URI);
+
+ //Process the first element
+ $firstArticleLink = $page->find('.custom-promo-title', 0)->href;
+ $this->items[] = $this->fetchArticle($firstArticleLink);
+
+ $limit = 19;
+ foreach($page->find('.full-item-title') as $article) {
+ $this->items[] = $this->fetchArticle($article->href);
+ $limit -= 1;
+ if($limit == 0) break;
+ }
+
+ }
+
+ private function fixImages($content) {
+
+ $enclosures = [];
+ foreach($content->find('img') as $image) {
+ $image->src = explode('?', $image->getAttribute('data-src'))[0];
+ $enclosures[] = $image->src;
+ }
+
+ foreach($content->find('.embed-image-wrap, .content-lede-image-wrap') as $imgContainer) {
+ $imgContainer->style = '';
+ }
+
+ return $enclosures;
+
+ }
+
+ private function fetchArticle($articleLink) {
+
+ $articleLink = self::URI . $articleLink;
+ $article = getSimpleHTMLDOM($articleLink);
+ $item = array();
+
+ $item['title'] = $article->find('.content-hed', 0)->innertext;
+ $item['author'] = $article->find('.byline-name', 0)->innertext;
+ $item['timestamp'] = strtotime($article->find('.content-info-date', 0)->getAttribute('datetime'));
+
+ $content = $article->find('.content-container', 0);
+ if($content->find('.content-rail', 0) !== null)
+ $content->find('.content-rail', 0)->innertext = '';
+ $enclosures = $this->fixImages($content);
+
+ $item['enclosures'] = $enclosures;
+ $item['content'] = $content;
+ return $item;
+
+ }
+
+ private function getArticleContent($article) {
+
+ return getContents($article->contentUrl);
+
+ }
+}