aboutsummaryrefslogtreecommitdiff
path: root/bridges/GatesNotesBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/GatesNotesBridge.php')
-rw-r--r--bridges/GatesNotesBridge.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/bridges/GatesNotesBridge.php b/bridges/GatesNotesBridge.php
new file mode 100644
index 00000000..bf456d26
--- /dev/null
+++ b/bridges/GatesNotesBridge.php
@@ -0,0 +1,54 @@
+<?php
+class GatesNotesBridge extends FeedExpander {
+
+ const MAINTAINER = 'corenting';
+ const NAME = 'Gates Notes';
+ const URI = 'https://www.gatesnotes.com';
+ const DESCRIPTION = 'Returns the newest articles.';
+ const CACHE_TIMEOUT = 21600; // 6h
+
+ protected function parseItem($item){
+ $item = parent::parseItem($item);
+
+ $article_html = getSimpleHTMLDOMCached($item['uri']);
+ if(!$article_html) {
+ $item['content'] .= '<p><em>Could not request ' . $this->getName() . ': ' . $item['uri'] . '</em></p>';
+ return $item;
+ }
+ $article_html = defaultLinkTo($article_html, $this->getURI());
+
+ $top_description = '<p>' . $article_html->find('div.article_top_description', 0)->innertext . '</p>';
+ $hero_image = '<img src=' . $article_html->find('img.article_top_DMT_Image', 0)->getAttribute('data-src') . '>';
+
+ $article_body = $article_html->find('div.TGN_Article_ReadTimeSection', 0);
+ // Convert iframe of Youtube videos to link
+ foreach($article_body->find('iframe') as $found) {
+
+ $iframeUrl = $found->getAttribute('src');
+
+ if ($iframeUrl) {
+ $text = 'Embedded Youtube video, click here to watch on Youtube.com';
+ $found->outertext = '<p><a href="' . $iframeUrl . '">' . $text . '</a></p>';
+ }
+ }
+ // Remove <link> CSS ressources
+ foreach($article_body->find('link') as $found) {
+
+ $linkedRessourceUrl = $found->getAttribute('href');
+
+ if (str_ends_with($linkedRessourceUrl, '.css')) {
+ $found->outertext = '';
+ }
+ }
+ $article_body = sanitize($article_body->innertext);
+
+ $item['content'] = $top_description . $hero_image . $article_body;
+
+ return $item;
+ }
+
+ public function collectData(){
+ $feed = static::URI . '/rss';
+ $this->collectExpandableDatas($feed);
+ }
+}