From e564559bdafbb1cfe01849d0932182a31bf6cfdd Mon Sep 17 00:00:00 2001 From: Nicolas Delsaux Date: Wed, 26 Mar 2014 11:22:53 +0100 Subject: [PATCH] Fixes #42 by adding a working bridge, complete with section specific feeds --- bridges/Freenews.php | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 bridges/Freenews.php diff --git a/bridges/Freenews.php b/bridges/Freenews.php new file mode 100644 index 00000000..dad8eb6d --- /dev/null +++ b/bridges/Freenews.php @@ -0,0 +1,69 @@ +uri = RUBRIQUE.$param['id']; + } + $html = file_get_html($this->getURI()) or $this->returnError('Could not request '.$this->getURI(), 404); +// $this->message("loaded HTML from ".$this->getURI()); + // customize name + $this->name = $html->find('title', 0)->innertext; + foreach($html->find('.news_line') as $newsLines) { + $this->parseLine($newsLines); + } + } + + public function parseLine($newsLines) { + foreach($newsLines->find('span') as $newsSpan) { + foreach($newsSpan->find('a') as $newsLink) { + $item = new Item(); + $item->title = trim($newsLink->title); + $item->uri = FREENEWS.$newsLink->href; + // now load that uri from cache + $articlePage = str_get_html($this->get_cached($item->uri)); + $content = $articlePage->find('.chapo', 0); + foreach($content->find('img') as $image) { + $image->src = FREENEWS.$image->src; + } + $redaction = $articlePage->find('.redac', 0); + $rubrique = $redaction->find('a', 0); + $auteur = $redaction->find('a', 1); + $item->content = $content->innertext; + $item->name = $auteur->innertext; + // format should parse 2014-03-25T16:21:20Z. But, according to http://stackoverflow.com/a/10478469, it is not that simple + $item->timestamp = DateTime::createFromFormat('Y-m-d\TH:i:s+', $redaction->title)->getTimestamp(); + $this->items[] = $item; + // return after first link, as there are hidden treasures in those pages + return; + } + } + } + + public function getName(){ + return $this->name; + } + + public function getURI(){ + return $this->uri; + } + + public function getCacheDuration(){ + return 3600; // 2h hours + } + public function getDescription(){ + return "Un site d'actualité pour les freenautes (mais ne parlant pas que de la freebox). par rss-bridge"; + } +}