From dd0be3f4db6dca1ffef3488f5d82a4140f1e8179 Mon Sep 17 00:00:00 2001 From: ORelio Date: Sun, 14 Feb 2016 13:43:58 +0100 Subject: [PATCH] [Dilbert] Improve metadata extraction --- bridges/DilbertBridge.php | 61 ++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/bridges/DilbertBridge.php b/bridges/DilbertBridge.php index 30cbb1c..1fa5a24 100644 --- a/bridges/DilbertBridge.php +++ b/bridges/DilbertBridge.php @@ -1,45 +1,58 @@ maintainer = "kranack"; - $this->name = "Dilbert Daily Strip"; - $this->uri = "http://dilbert.com/strips/"; - $this->description = "The Unofficial Dilbert Daily Comic Strip"; - $this->update = "30/01/2015"; + $this->maintainer = "kranack"; + $this->name = "Dilbert Daily Strip"; + $this->uri = "http://dilbert.com/"; + $this->description = "The Unofficial Dilbert Daily Comic Strip"; + $this->update = "14/02/2016"; - } + } - public function collectData(array $param){ - $html = file_get_html('http://dilbert.com/strips/') or $this->returnError('Could not request Dilbert.', 404); + public function collectData(array $param) { - foreach($html->find('section.comic-item') as $element) { - $comic = $element->find('img', 0); + $html = file_get_html('http://dilbert.com/') or $this->returnError('Could not request Dilbert.', 500); - $item = new Item(); - $item->uri = $element->find('a',0)->href; - $item->content = '' . $comic->alt . ''; - $item->title = $comic->alt; - $item->timestamp = strtotime($element->find('h3', 0)->plaintext); + foreach ($html->find('section.comic-item') as $element) { + + $img = $element->find('img', 0); + $comic = $img->src; + $title = $img->alt; + $url = $element->find('a', 0)->href; + $author = trim(substr($title, strpos($title, ' - Dilbert by ') + 14)); + $title = trim(substr($title, 0, strpos($title, ' - '))); + $date = substr($url, 25); + if (empty($title)) + $title = "Dilbert Comic Strip on ".$date; + $date = strtotime($date); + + $item = new \Item(); + $item->uri = $url; + $item->thumbnailUri = $comic; + $item->title = $title; + $item->author = $author; + $item->timestamp = $date; + $item->content = ''.$title.''; $this->items[] = $item; } } - public function getName(){ - return 'Dilbert'; + public function getName() { + return 'Dilbert Bridge'; } - public function getURI(){ + public function getURI() { return 'http://dilbert.com'; } - public function getDescription(){ - return 'Dilbert via rss-bridge'; + public function getDescription() { + return 'Dilbert Daily Strip Bridge'; } - public function getCacheDuration(){ - return 14400; // 4 hours + public function getCacheDuration() { + return 21600; // 6 hours } } ?>