Browse Source

bridges: use BridgeAbstract::getSimpleHTMLDOM

instead of BridgeAbstract::file_get_html

Signed-off-by: Pierre Mazière <pierre.maziere@gmx.com>
Pierre Mazière 8 years ago
parent
commit
3c0d13c1bb
100 changed files with 899 additions and 329 deletions
  1. 2 2
      bridges/ABCTabsBridge.php
  2. 1 1
      bridges/AcrimedBridge.php
  3. 4 4
      bridges/AllocineFRBridge.php
  4. 2 2
      bridges/AnimeUltimeBridge.php
  5. 1 1
      bridges/BandcampBridge.php
  6. 4 4
      bridges/BastaBridge.php
  7. 2 2
      bridges/BlaguesDeMerdeBridge.php
  8. 7 7
      bridges/BooruprojectBridge.php
  9. 3 4
      bridges/CADBridge.php
  10. 2 2
      bridges/CNETBridge.php
  11. 56 0
      bridges/CoinDeskBridge.php
  12. 1 1
      bridges/CollegeDeFranceBridge.php
  13. 2 2
      bridges/CommonDreamsBridge.php
  14. 4 4
      bridges/CopieDoubleBridge.php
  15. 17 17
      bridges/CourrierInternationalBridge.php
  16. 4 4
      bridges/CpasbienBridge.php
  17. 1 1
      bridges/CryptomeBridge.php
  18. 6 6
      bridges/DailymotionBridge.php
  19. 7 7
      bridges/DanbooruBridge.php
  20. 1 1
      bridges/DansTonChatBridge.php
  21. 4 4
      bridges/DauphineLibereBridge.php
  22. 3 3
      bridges/DeveloppezDotComBridge.php
  23. 1 1
      bridges/DilbertBridge.php
  24. 7 7
      bridges/DollbooruBridge.php
  25. 1 1
      bridges/DuckDuckGoBridge.php
  26. 2 2
      bridges/EZTVBridge.php
  27. 2 2
      bridges/EliteDangerousGalnetBridge.php
  28. 3 3
      bridges/ElsevierBridge.php
  29. 56 0
      bridges/FSBridge.php
  30. 3 3
      bridges/FacebookBridge.php
  31. 1 1
      bridges/FierPandaBridge.php
  32. 1 1
      bridges/FlickrExploreBridge.php
  33. 4 4
      bridges/FlickrTagBridge.php
  34. 8 8
      bridges/FootitoBridge.php
  35. 2 2
      bridges/FourchanBridge.php
  36. 69 0
      bridges/FrandroidBridge.php
  37. 2 2
      bridges/FuturaSciencesBridge.php
  38. 3 3
      bridges/GBAtempBridge.php
  39. 7 7
      bridges/GelbooruBridge.php
  40. 11 11
      bridges/GiphyBridge.php
  41. 1 1
      bridges/GithubIssueBridge.php
  42. 1 1
      bridges/GitlabCommitsBridge.php
  43. 2 2
      bridges/GizmodoFRBridge.php
  44. 2 2
      bridges/GooglePlusPostBridge.php
  45. 2 2
      bridges/GoogleSearchBridge.php
  46. 1 1
      bridges/GuruMedBridge.php
  47. 1 1
      bridges/HDWallpapersBridge.php
  48. 1 1
      bridges/HentaiHavenBridge.php
  49. 1 1
      bridges/IdenticaBridge.php
  50. 9 9
      bridges/InstagramBridge.php
  51. 2 2
      bridges/JapanExpoBridge.php
  52. 7 7
      bridges/KonachanBridge.php
  53. 2 2
      bridges/KoreusBridge.php
  54. 12 12
      bridges/LeBonCoinBridge.php
  55. 2 2
      bridges/LeJournalDuGeekBridge.php
  56. 2 2
      bridges/LeMondeInformatiqueBridge.php
  57. 55 0
      bridges/LeMotDuJourBridge.php
  58. 8 8
      bridges/LesJoiesDuCodeBridge.php
  59. 2 2
      bridges/LichessBridge.php
  60. 1 1
      bridges/LinkedInCompany.php
  61. 7 7
      bridges/LolibooruBridge.php
  62. 60 0
      bridges/MalikiBridge.php
  63. 58 0
      bridges/MemoLinuxBridge.php
  64. 7 7
      bridges/MilbooruBridge.php
  65. 2 2
      bridges/MondeDiploBridge.php
  66. 2 2
      bridges/MsnMondeBridge.php
  67. 7 7
      bridges/MspabooruBridge.php
  68. 3 3
      bridges/NakedSecurityBridge.php
  69. 2 2
      bridges/NasaApodBridge.php
  70. 2 2
      bridges/NeuviemeArtBridge.php
  71. 2 2
      bridges/NextInpactBridge.php
  72. 4 4
      bridges/NiceMatinBridge.php
  73. 1 1
      bridges/NovelUpdatesBridge.php
  74. 0 1
      bridges/NumeramaBridge.php
  75. 2 2
      bridges/OpenClassroomsBridge.php
  76. 56 0
      bridges/OpenTheoryBridge.php
  77. 9 9
      bridges/ParuVenduImmoBridge.php
  78. 1 1
      bridges/PickyWallpapersBridge.php
  79. 18 18
      bridges/PinterestBridge.php
  80. 2 2
      bridges/PlanetLibreBridge.php
  81. 1 1
      bridges/ProjectMGameBridge.php
  82. 1 1
      bridges/RTBFBridge.php
  83. 53 0
      bridges/RaymondBridge.php
  84. 1 1
      bridges/Releases3DSBridge.php
  85. 2 2
      bridges/ReporterreBridge.php
  86. 1 1
      bridges/Rue89Bridge.php
  87. 7 7
      bridges/Rule34Bridge.php
  88. 7 7
      bridges/Rule34pahealBridge.php
  89. 7 7
      bridges/SafebooruBridge.php
  90. 7 7
      bridges/SakugabooruBridge.php
  91. 54 0
      bridges/ScilogsBridge.php
  92. 7 7
      bridges/ScmbBridge.php
  93. 3 3
      bridges/ScoopItBridge.php
  94. 55 0
      bridges/SegfaultMintBridge.php
  95. 7 7
      bridges/Sexactu.php
  96. 2 2
      bridges/SiliconBridge.php
  97. 1 1
      bridges/StripeAPIChangeLogBridge.php
  98. 2 2
      bridges/SuperbWallpapersBridge.php
  99. 2 2
      bridges/T411Bridge.php
  100. 3 3
      bridges/TagBoardBridge.php

+ 2 - 2
bridges/ABCTabsBridge.php

@@ -15,9 +15,9 @@ class ABCTabsBridge extends BridgeAbstract{
 
 	public function collectData(array $param){
 		$html = '';
-        $html = $this->file_get_html('http://www.abc-tabs.com/tablatures/nouveautes.html') or $this->returnClientError('No results for this query.');
+        $html = $this->getSimpleHTMLDOM('http://www.abc-tabs.com/tablatures/nouveautes.html') or $this->returnClientError('No results for this query.');
 		$table = $html->find('table#myTable', 0)->children(1);
-		
+
 		foreach ($table->find('tr') as $tab)
 		{
 		    $item = new \Item();

+ 1 - 1
bridges/AcrimedBridge.php

@@ -29,7 +29,7 @@ class AcrimedBridge extends RssExpander{
         	$item->title = trim($newsItem->title);
         	$item->timestamp = strtotime($dc->date);
 
-			$articlePage = $this->file_get_html($newsItem->link);
+			$articlePage = $this->getSimpleHTMLDOM($newsItem->link);
 			$article = $hs->sanitize($articlePage->find('article.article1', 0)->innertext);
 			$article = HTMLSanitizer::defaultImageSrcTo($article, "http://www.acrimed.org/");
 

+ 4 - 4
bridges/AllocineFRBridge.php

@@ -9,7 +9,7 @@ class AllocineFRBridge extends BridgeAbstract{
         $this->description = "Bridge for allocine.fr";
         $this->update = '2016-08-17';
 
-        $this->parameters[] = 
+        $this->parameters[] =
         '[
             {
                 "name" : "category",
@@ -18,7 +18,7 @@ class AllocineFRBridge extends BridgeAbstract{
                 "required" : true,
                 "exampleValue" : "Faux Raccord",
                 "title" : "Select your category",
-                "values" : 
+                "values" :
                 [
                     {
                         "name" : "Faux Raccord",
@@ -64,12 +64,12 @@ class AllocineFRBridge extends BridgeAbstract{
         // Update bridge name to match selection
         $this->name .= ' : ' . $category;
 
-        $html = $this->file_get_html($this->uri) or $this->returnServerError("Could not request {$this->uri}!");
+        $html = $this->getSimpleTMLOM($this->uri) or $this->returnServerError("Could not request {$this->uri}!");
 
         foreach($html->find('figure.media-meta-fig') as $element)
         {
             $item = new Item();
-            
+
             $title = $element->find('div.titlebar h3.title a', 0);
             $content = trim($element->innertext);
             $figCaption = strpos($content, $category);

+ 2 - 2
bridges/AnimeUltimeBridge.php

@@ -67,7 +67,7 @@ class AnimeUltimeBridge extends BridgeAbstract {
             //Retrive page contents
             $website = 'http://www.anime-ultime.net/';
             $url = $website.'history-0-1/'.$requestFilter;
-            $html = $this->file_get_html($url) or $this->returnServerError('Could not request Anime-Ultime: '.$url);
+            $html = $this->getSimpleHTMLDOM($url) or $this->returnServerError('Could not request Anime-Ultime: '.$url);
 
             //Relases are sorted by day : process each day individually
             foreach ($html->find('div.history', 0)->find('h3') as $daySection) {
@@ -110,7 +110,7 @@ class AnimeUltimeBridge extends BridgeAbstract {
                             $item->content = $item_description;
                             $this->items[] = $item;
                             $processedOK++;
-                            
+
                             //Stop processing once limit is reached
                             if ($processedOK >= 10)
                                 return;

+ 1 - 1
bridges/BandcampBridge.php

@@ -26,7 +26,7 @@ class BandcampBridge extends BridgeAbstract{
         $html = '';
         if (isset($param['tag'])) {
             $this->request = $param['tag'];
-            $html = $this->file_get_html('http://bandcamp.com/tag/'.urlencode($this->request).'?sort_field=date') or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM('http://bandcamp.com/tag/'.urlencode($this->request).'?sort_field=date') or $this->returnServerError('No results for this query.');
         }
         else {
             $this->returnClientError('You must specify tag (/tag/...)');

+ 4 - 4
bridges/BastaBridge.php

@@ -7,14 +7,14 @@ class BastaBridge extends BridgeAbstract{
 		$this->description = "Returns the newest articles.";
 		$this->update = '2016-08-17';
 	}
-	
+
 	public function collectData(array $param){
 		// Replaces all relative image URLs by absolute URLs. Relative URLs always start with 'local/'!
 		function ReplaceImageUrl($content){
 			return preg_replace('/src=["\']{1}([^"\']+)/ims', 'src=\'http://www.bastamag.net/$1\'', $content);
 		}
-		
-		$html = $this->file_get_html('http://www.bastamag.net/spip.php?page=backend') or $this->returnServerError('Could not request Bastamag.');
+
+		$html = $this->getSimpleHTMLDOM('http://www.bastamag.net/spip.php?page=backend') or $this->returnServerError('Could not request Bastamag.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {
@@ -34,4 +34,4 @@ class BastaBridge extends BridgeAbstract{
 		return 3600*2; // 2 hours
 	}
 }
-?>
+?>

+ 2 - 2
bridges/BlaguesDeMerdeBridge.php

@@ -12,8 +12,8 @@ class BlaguesDeMerdeBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://www.blaguesdemerde.fr/') or $this->returnServerError('Could not request BDM.');
-    
+        $html = $this->getSimpleHTMLDOM('http://www.blaguesdemerde.fr/') or $this->returnServerError('Could not request BDM.');
+
         foreach($html->find('article.joke_contener') as $element) {
             $item = new Item();
             $temp = $element->find('a');

+ 7 - 7
bridges/BooruprojectBridge.php

@@ -32,29 +32,29 @@ class BooruprojectBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0; $tags = '';
-        if (!empty($param['p'])) { 
-		$page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (!empty($param['p'])) {
+		$page = (int)preg_replace("/[^0-9]/",'', $param['p']);
 		$page = $page - 1;
 		$page = $page * 20;
         }
-        if (!empty($param['t'])) { 
-            $tags = '&tags='.urlencode($param['t']); 
+        if (!empty($param['t'])) {
+            $tags = '&tags='.urlencode($param['t']);
         }
 	if (empty($param['i'])) {
 		$this->returnServerError('Please enter a ***.booru.org instance.');
 	}
-        $html = $this->file_get_html("http://".$param['i'].".booru.org/index.php?page=post&s=list&pid=".$page.$tags) or $this->returnServerError('Could not request Booruproject.');
+        $html = $this->getSimpleHTMLDOM("http://".$param['i'].".booru.org/index.php?page=post&s=list&pid=".$page.$tags) or $this->returnServerError('Could not request Booruproject.');
 
 
 	foreach($html->find('div[class=content] span') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://'.$param['i'].'.booru.org/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('a', 0)->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('a', 0)->getAttribute('id'));
 		$item->timestamp = time();
 		$item->tags = $element->find('img', 0)->getAttribute('title');
 		$item->title = 'Booruproject '.$param['i'].' | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $element->find('img', 0)->src . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 3 - 4
bridges/CADBridge.php

@@ -9,7 +9,7 @@ class CADBridge extends BridgeAbstract{
 	}
 
 	private function CADExtractContent($url) {
-		$html3 = $this->file_get_html($url);
+		$html3 = $this->getSimpleHTMLDOM($url);
 
 		// The request might fail due to missing https support or wrong URL
 		if($html3 == false)
@@ -27,7 +27,6 @@ class CADBridge extends BridgeAbstract{
 			default:
 				return 'Daily comic not released yet';
 		}
-
 		$img = implode ($url2[0]);
 		$html3->clear();
 		unset ($html3);
@@ -45,7 +44,7 @@ class CADBridge extends BridgeAbstract{
 			return $string;
 		}
 
-		$html = $this->file_get_html('http://cdn2.cad-comic.com/rss.xml') or $this->returnServerError('Could not request CAD.');
+		$html = $this->getSimpleHTMLDOM('http://cdn2.cad-comic.com/rss.xml') or $this->returnServerError('Could not request CAD.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {
@@ -67,4 +66,4 @@ class CADBridge extends BridgeAbstract{
 		return 3600*2; // 2 hours
 	}
 }
-?>
+?>

+ 2 - 2
bridges/CNETBridge.php

@@ -51,7 +51,7 @@ class CNETBridge extends BridgeAbstract {
             $this->topicName = $param['topic'];
 
         $pageUrl = 'http://www.cnet.com/'.(empty($this->topicName) ? '' : 'topics/'.$this->topicName.'/');
-        $html = $this->file_get_html($pageUrl) or $this->returnServerError('Could not request CNET: '.$pageUrl);
+        $html = $this->getSimpleHTMLDOM($pageUrl) or $this->returnServerError('Could not request CNET: '.$pageUrl);
         $limit = 0;
 
         foreach($html->find('div.assetBody') as $element) {
@@ -64,7 +64,7 @@ class CNETBridge extends BridgeAbstract {
 
                 if (!empty($article_title) && !empty($article_uri) && strpos($article_uri, '/news/') !== false) {
 
-                    $article_html = $this->file_get_html($article_uri) or $this->returnServerError('Could not request CNET: '.$article_uri);
+                    $article_html = $this->getSimpleHTMLDOM($article_uri) or $this->returnServerError('Could not request CNET: '.$article_uri);
 
                     $article_content = trim(CleanArticle(ExtractFromDelimiters($article_html, '<div class="articleContent', '<footer>')));
 

+ 56 - 0
bridges/CoinDeskBridge.php

@@ -0,0 +1,56 @@
+<?php
+class CoinDeskBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "mitsukarenai";
+		$this->name = "CoinDesk";
+		$this->uri = "http://www.coindesk.com/";
+		$this->description = "Returns the 5 newest posts from CoinDesk (full text)";
+		$this->update = "2014-05-30";
+
+	}
+
+    public function collectData(array $param){
+
+    function CoinDeskStripCDATA($string) {
+    	$string = str_replace('<![CDATA[', '', $string);
+    	$string = str_replace(']]>', '', $string);
+    	return $string;
+    }
+    function CoinDeskExtractContent($url) {
+	$html2 = $this->getSimpleHTMLDOM($url);
+	$text = $html2->find('div.single-content', 0)->innertext;
+	$text = strip_tags($text, '<p><a><img>');
+	return $text;
+    }
+        $html = $this->getSimpleHTMLDOM('http://www.coindesk.com/feed/atom/') or $this->returnError('Could not request CoinDesk.', 404);
+	$limit = 0;
+
+	foreach($html->find('entry') as $element) {
+	 if($limit < 5) {
+	 $item = new \Item();
+	 $item->title = CoinDeskStripCDATA($element->find('title', 0)->innertext);
+	 $item->author = $element->find('author', 0)->plaintext;
+	 $item->uri = $element->find('link', 0)->href;
+	 $item->timestamp = strtotime($element->find('published', 0)->plaintext);
+	 $item->content = CoinDeskExtractContent($item->uri);
+	 $this->items[] = $item;
+	 $limit++;
+	 }
+	}
+    
+    }
+
+    public function getName(){
+        return 'CoinDesk';
+    }
+
+    public function getURI(){
+        return 'http://www.coindesk.com/';
+    }
+
+    public function getCacheDuration(){
+        return 1800; // 30min
+    }
+}

+ 1 - 1
bridges/CollegeDeFranceBridge.php

@@ -33,7 +33,7 @@ class CollegeDeFranceBridge extends BridgeAbstract{
 		 * 	</a>
 		 * </li>
 		 */
-		$html = $this->file_get_html('http://www.college-de-france.fr/components/search-audiovideo.jsp?fulltext=&siteid=1156951719600&lang=FR&type=all') or $this->returnServerError('Could not request CollegeDeFrance.');
+		$html = $this->getSimpleHTMLDOM('http://www.college-de-france.fr/components/search-audiovideo.jsp?fulltext=&siteid=1156951719600&lang=FR&type=all') or $this->returnServerError('Could not request CollegeDeFrance.');
 		foreach($html->find('a[data-target]') as $element) {
 			$item = new \Item();
 			$item->title = $element->find('.title', 0)->plaintext;

+ 2 - 2
bridges/CommonDreamsBridge.php

@@ -10,7 +10,7 @@ class CommonDreamsBridge extends BridgeAbstract{
 	}
 
 	private function CommonDreamsExtractContent($url) {
-		$html3 = $this->file_get_html($url);
+		$html3 = $this->getSimpleHTMLDOM($url);
 		$text = $html3->find('div[class=field--type-text-with-summary]', 0)->innertext;
 		$html3->clear();
 		unset ($html3);
@@ -25,7 +25,7 @@ class CommonDreamsBridge extends BridgeAbstract{
 			return $string;
 		}
 
-		$html = $this->file_get_html('http://www.commondreams.org/rss.xml') or $this->returnServerError('Could not request CommonDreams.');
+		$html = $this->getSimpleHTMLDOM('http://www.commondreams.org/rss.xml') or $this->returnServerError('Could not request CommonDreams.');
 		$limit = 0;
 		foreach($html->find('item') as $element) {
 			if($limit < 4) {

+ 4 - 4
bridges/CopieDoubleBridge.php

@@ -13,9 +13,9 @@ class CopieDoubleBridge extends BridgeAbstract{
 
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://www.copie-double.com/') or $this->returnServerError('Could not request CopieDouble.');
+        $html = $this->getSimpleHTMLDOM('http://www.copie-double.com/') or $this->returnServerError('Could not request CopieDouble.');
         $table = $html->find('table table', 2);
-        
+
         foreach($table->find('tr') as $element)
         {
             $td = $element->find('td', 0);
@@ -23,7 +23,7 @@ class CopieDoubleBridge extends BridgeAbstract{
             if($td->class == "couleur_1")
             {
                 $item = new Item();
-                
+
                 $title = $td->innertext;
                 $pos = strpos($title, "<a");
                 $title = substr($title, 0, $pos);
@@ -33,7 +33,7 @@ class CopieDoubleBridge extends BridgeAbstract{
             {
                 $a=$element->find("a", 0);
                 $item->uri = "http://www.copie-double.com" . $a->href;
-                
+
                 $content = str_replace('src="/', 'src="http://www.copie-double.com/',$element->find("td", 0)->innertext);
                 $content = str_replace('href="/', 'href="http://www.copie-double.com/',$content);
                 $item->content = $content;

+ 17 - 17
bridges/CourrierInternationalBridge.php

@@ -12,49 +12,49 @@ class CourrierInternationalBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-	
+
         $html = '';
 
-        $html = $this->file_get_html('http://www.courrierinternational.com/') or $this->returnServerError('Error.');
-	
+        $html = $this->getSimpleHTMLDOM('http://www.courrierinternational.com/') or $this->returnServerError('Error.');
+
+
 
-	
         $element = $html->find("article");
 
-        $article_count = 1;	
+        $article_count = 1;
 
         foreach($element as $article) {
-		
+
             $item = new \Item();
-		
+
             $item->uri = $article->parent->getAttribute("href");
 
             if(strpos($item->uri, "http") === FALSE) {
                 $item->uri = "http://courrierinternational.fr/".$item->uri;
             }
-        
-            $page = $this->file_get_html($item->uri);
+
+            $page = $this->getSimpleHTMLDOM($item->uri);
 
             $cleaner = new HTMLSanitizer();
-        
+
             $item->content = $cleaner->sanitize($page->find("div.article-text")[0]);
             $item->title = strip_tags($article->find(".title")[0]);
 
             $dateTime = date_parse($page->find("time")[0]);
 
             $item->timestamp = mktime(
-       			$dateTime['hour'], 
-        		$dateTime['minute'], 
-        		$dateTime['second'], 
-        		$dateTime['month'], 
-        		$dateTime['day'], 
+       			$dateTime['hour'],
+        		$dateTime['minute'],
+        		$dateTime['second'],
+        		$dateTime['month'],
+        		$dateTime['day'],
         		$dateTime['year']
             );
-		
+
             $this->items[] = $item;
             $article_count ++;
             if($article_count > 5) break;
-	
+
         }
 
 

+ 4 - 4
bridges/CpasbienBridge.php

@@ -15,7 +15,7 @@ function content_get_html($contents, $maxLen=-1, $lowercase = true, $forceTagsCl
 }
 
 class CpasbienBridge extends HttpCachingBridgeAbstract{
-    
+
     private $request;
 
 	public function loadMetadatas() {
@@ -44,7 +44,7 @@ class CpasbienBridge extends HttpCachingBridgeAbstract{
         $html = '';
         if (isset($param['q'])) {   /* keyword search mode */
             $this->request = str_replace(" ","-",trim($param['q']));
-            $html = $this->file_get_html($this->uri.'/recherche/'.urlencode($this->request).'.html') or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM($this->uri.'/recherche/'.urlencode($this->request).'.html') or $this->returnServerError('No results for this query.');
         }
         else {
             $this->returnClientError('You must specify a keyword (?q=...).');
@@ -53,7 +53,7 @@ class CpasbienBridge extends HttpCachingBridgeAbstract{
         foreach ($html->find('#gauche',0)->find('div') as $episode) {
             if ($episode->getAttribute('class')=='ligne0' || $episode->getAttribute('class')=='ligne1')
             {
-                
+
                 $htmlepisode=content_get_html($this->get_cached($episode->find('a', 0)->getAttribute('href')));
 
                 $item = new \Item();
@@ -65,7 +65,7 @@ class CpasbienBridge extends HttpCachingBridgeAbstract{
                     $item->content = $textefiche->text();
                 }
                 else {
-                    $item->content = $htmlepisode->find('#textefiche', 0)->find('p',0)->text();    
+                    $item->content = $htmlepisode->find('#textefiche', 0)->find('p',0)->text();
                 }
 
                 $item->id = $episode->find('a', 0)->getAttribute('href');

+ 1 - 1
bridges/CryptomeBridge.php

@@ -28,7 +28,7 @@ class CryptomeBridge extends BridgeAbstract{
         // If you want HTTPS access instead, uncomment the following line:
         //$link = 'https://secure.netsolhost.com/cryptome.org/';
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request Cryptome.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request Cryptome.');
         if (!empty($param['n'])) {   /* number of documents */
             $num = min(max(1, $param['n']+0), $num);
         }

+ 6 - 6
bridges/DailymotionBridge.php

@@ -47,14 +47,14 @@ class DailymotionBridge extends BridgeAbstract{
 
 		function getMetadata($id) {
 			$metadata=array();
-			$html2 = file_get_html('http://www.dailymotion.com/video/'.$id) or $this->returnServerError('Could not request Dailymotion.');
+			$html2 = $this->getSimpleHTMLDOM('http://www.dailymotion.com/video/'.$id) or $this->returnServerError('Could not request Dailymotion.');
 			$metadata['title'] = $html2->find('meta[property=og:title]', 0)->getAttribute('content');
 			$metadata['timestamp'] = strtotime($html2->find('meta[property=video:release_date]', 0)->getAttribute('content') );
 			$metadata['thumbnailUri'] = $html2->find('meta[property=og:image]', 0)->getAttribute('content');
 			$metadata['uri'] = $html2->find('meta[property=og:url]', 0)->getAttribute('content');
 
 			return $metadata;
-		} 
+		}
 
 
         	$html = '';
@@ -63,15 +63,15 @@ class DailymotionBridge extends BridgeAbstract{
 
 		if (isset($param['u'])) {   // user timeline mode
 			$this->request = $param['u'];
-			$html = $this->file_get_html('http://www.dailymotion.com/user/'.urlencode($this->request).'/1') or $this->returnServerError('Could not request Dailymotion.');
+			$html = $this->getSimpleHTMLDOM('http://www.dailymotion.com/user/'.urlencode($this->request).'/1') or $this->returnServerError('Could not request Dailymotion.');
 		}
 		else if (isset($param['p'])) {    // playlist mode
 			$this->request = strtok($param['p'], '_');
-			$html = $this->file_get_html('http://www.dailymotion.com/playlist/'.urlencode($this->request).'') or $this->returnServerError('Could not request Dailymotion.');
+			$html = $this->getSimpleHTMLDOM('http://www.dailymotion.com/playlist/'.urlencode($this->request).'') or $this->returnServerError('Could not request Dailymotion.');
 		}
 		else if (isset($param['s'])) {   // search mode
-			$this->request = $param['s']; $page = 1; if (isset($param['pa'])) $page = (int)preg_replace("/[^0-9]/",'', $param['pa']); 
-			$html = $this->file_get_html('http://www.dailymotion.com/search/'.urlencode($this->request).'/'.$page.'') or $this->returnServerError('Could not request Dailymotion.');
+			$this->request = $param['s']; $page = 1; if (isset($param['pa'])) $page = (int)preg_replace("/[^0-9]/",'', $param['pa']);
+			$html = $this->getSimpleHTMLDOM('http://www.dailymotion.com/search/'.urlencode($this->request).'/'.$page.'') or $this->returnServerError('Could not request Dailymotion.');
 		}
 		else {
 			$this->returnClientError('You must either specify a Dailymotion username (?u=...) or a playlist id (?p=...) or search (?s=...)');

+ 7 - 7
bridges/DanbooruBridge.php

@@ -25,23 +25,23 @@ class DanbooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 1;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://donmai.us/posts?&page=$page&tags=$tags") or $this->returnServerError('Could not request Danbooru.');
+        $html = $this->getSimpleHTMLDOM("http://donmai.us/posts?&page=$page&tags=$tags") or $this->returnServerError('Could not request Danbooru.');
 	foreach($html->find('div[id=posts] article') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://donmai.us'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('data-id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('data-id'));
 		$item->timestamp = time();
 		$thumbnailUri = 'http://donmai.us'.$element->find('img', 0)->src;
 		$item->tags = $element->find('img', 0)->getAttribute('alt');
 		$item->title = 'Danbooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 1 - 1
bridges/DansTonChatBridge.php

@@ -15,7 +15,7 @@ class DansTonChatBridge extends BridgeAbstract{
         $html = '';
         $link = 'http://danstonchat.com/latest.html';
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request DansTonChat.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request DansTonChat.');
 
         foreach($html->find('div.item') as $element) {
                 $item = new \Item();

+ 4 - 4
bridges/DauphineLibereBridge.php

@@ -82,7 +82,7 @@ class DauphineLibereBridge extends BridgeAbstract {
 	}
 
 	private function ExtractContent($url, $context) {
-		$html2 = $this->file_get_html($url, false, $context);
+		$html2 = $this->getSimpleHTMLDOM($url,false,$context);
 		$text = $html2->find('div.column', 0)->innertext;
 		$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
 		return $text;
@@ -102,10 +102,10 @@ class DauphineLibereBridge extends BridgeAbstract {
 
 		if (isset($param['u'])) { /* user timeline mode */
 			$this->request = $param['u'];
-			$html = $this->file_get_html('http://www.ledauphine.com/'.$this->request.'/rss', false, $context) or $this->returnServerError('Could not request DauphineLibere.');
+			$html = $this->getSimpleHTMLDOM('http://www.ledauphine.com/'.$this->request.'/rss',false,$context) or $this->returnServerError('Could not request DauphineLibere.');
 		}
 		else {
-			$html = $this->file_get_html('http://www.ledauphine.com/rss', false, $context) or $this->returnServerError('Could not request DauphineLibere.');
+			$html = $this->getSimpleHTMLDOM('http://www.ledauphine.com/rss',false,$context) or $this->returnServerError('Could not request DauphineLibere.');
 		}
 		$limit = 0;
 
@@ -126,4 +126,4 @@ class DauphineLibereBridge extends BridgeAbstract {
 		return 3600*2; // 2 hours
 	}
 }
-?>
+?>

+ 3 - 3
bridges/DeveloppezDotComBridge.php

@@ -15,7 +15,7 @@ class DeveloppezDotComBridge extends BridgeAbstract{
 		return $string;
 	}
 
-	// F***ing quotes from Microsoft Word badly encoded, here was the trick: 
+	// F***ing quotes from Microsoft Word badly encoded, here was the trick:
 	// http://stackoverflow.com/questions/1262038/how-to-replace-microsoft-encoded-quotes-in-php
 	private function convert_smart_quotes($string)
 	{
@@ -35,14 +35,14 @@ class DeveloppezDotComBridge extends BridgeAbstract{
 	}
 
 	private function DeveloppezDotComExtractContent($url) {
-		$articleHTMLContent = $this->file_get_html($url);
+		$articleHTMLContent = $this->getSimpleHTMLDOM($url);
 		$text = $this->convert_smart_quotes($articleHTMLContent->find('div.content', 0)->innertext);
 		$text = utf8_encode($text);
 		return trim($text);
 	}
 
 	public function collectData(array $param){
-		$rssFeed = $this->file_get_html('http://www.developpez.com/index/rss') or $this->returnServerError('Could not request http://www.developpez.com/index/rss');
+		$rssFeed = $this->getSimpleHTMLDOM('http://www.developpez.com/index/rss') or $this->returnServerError('Could not request http://www.developpez.com/index/rss');
 		$limit = 0;
 
 		foreach($rssFeed->find('item') as $element) {

+ 1 - 1
bridges/DilbertBridge.php

@@ -13,7 +13,7 @@ class DilbertBridge extends BridgeAbstract {
 
     public function collectData(array $param) {
 
-        $html = $this->file_get_html($this->getURI()) or $this->returnServerError('Could not request Dilbert: '.$this->getURI());
+        $html = $this->getSimpleHTMLDOM($this->getURI()) or $this->returnServerError('Could not request Dilbert: '.$this->getURI());
 
         foreach ($html->find('section.comic-item') as $element) {
 

+ 7 - 7
bridges/DollbooruBridge.php

@@ -26,25 +26,25 @@ class DollbooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://dollbooru.org/post/list/$tags/$page") or $this->returnServerError('Could not request Dollbooru.');
+        $html = $this->getSimpleHTMLDOM("http://dollbooru.org/post/list/$tags/$page") or $this->returnServerError('Could not request Dollbooru.');
 
 
 	foreach($html->find('div[class=shm-image-list] a') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://dollbooru.org'.$element->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('data-post-id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('data-post-id'));
 		$item->timestamp = time();
 		$thumbnailUri = 'http://dollbooru.org'.$element->find('img', 0)->src;
 		$item->tags = $element->getAttribute('data-tags');
 		$item->title = 'Dollbooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 1 - 1
bridges/DuckDuckGoBridge.php

@@ -22,7 +22,7 @@ class DuckDuckGoBridge extends BridgeAbstract{
         $html = '';
         $link = 'http://duckduckgo.com/html/?q='.$param[u].'+sort:date';
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request DuckDuckGo.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request DuckDuckGo.');
 
         foreach($html->find('div.results_links') as $element) {
                 $item = new \Item();

+ 2 - 2
bridges/EZTVBridge.php

@@ -40,11 +40,11 @@ class EZTVBridge extends BridgeAbstract{
 			$this->returnClientError('You must provide a list of ID (?i=showID1,showID2,...)');
 
         // Loop on show ids
-        $showList = explode(",",$param['i']); 
+        $showList = explode(",",$param['i']);
         foreach($showList as $showID){
 
             // Get show page
-            $html = $this->file_get_html('https://eztv.ch/shows/'.rawurlencode($showID).'/') or $this->returnServerError('Could not request EZTV for id "'.$showID.'"');
+            $html = $this->getSimpleHTMLDOM('https://eztv.ch/shows/'.rawurlencode($showID).'/') or $this->returnServerError('Could not request EZTV for id "'.$showID.'"');
 
             // Loop on each element that look like an episode entry...
             foreach($html->find('.forum_header_border') as $element) {

+ 2 - 2
bridges/EliteDangerousGalnetBridge.php

@@ -13,7 +13,7 @@ class EliteDangerousGalnetBridge extends BridgeAbstract
 
 	public function collectData(array $param)
 	{
-		$html = $this->file_get_html('https://community.elitedangerous.com/galnet') or $this->returnServerError('Error while downloading the website content');
+		$html = $this->getSimpleHTMLDOM('https://community.elitedangerous.com/galnet') or $this->returnServerError('Error while downloading the website content');
 		foreach($html->find('div.article') as $element) {
 			$item = new Item();
 
@@ -40,4 +40,4 @@ class EliteDangerousGalnetBridge extends BridgeAbstract
 	{
 		return 3600 * 2; // 2 hours
 	}
-}
+}

+ 3 - 3
bridges/ElsevierBridge.php

@@ -33,7 +33,7 @@ class ElsevierBridge extends BridgeAbstract{
 		$time = $article->find('.article-info', 0);
 		if($time){
 			$timestring = trim($time->plaintext);
-			/* 
+			/*
 				The format depends on the age of an article:
 				- Available online 29 July 2016
 				- July 2016
@@ -63,7 +63,7 @@ class ElsevierBridge extends BridgeAbstract{
 
 	public function collectData(array $param){
 		$uri = 'http://www.journals.elsevier.com/' . $param['j'] . '/recent-articles/';
-		$html = file_get_html($uri) or $this->returnServerError('No results for Elsevier journal '.$param['j']);
+		$html = $this->getSimpleHTMLDOM($uri) or $this->returnServerError('No results for Elsevier journal '.$param['j']);
 
 		foreach($html->find('.pod-listing') as $article){
 			$item = new \Item();
@@ -80,4 +80,4 @@ class ElsevierBridge extends BridgeAbstract{
 		return 43200; // 12h
 	}
 }
-?>
+?>

+ 56 - 0
bridges/FSBridge.php

@@ -0,0 +1,56 @@
+<?php
+class FSBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "qwertygc";
+		$this->name = "Futurasciences";
+		$this->uri = "http://www.futura-sciences.com";
+		$this->description = "Returns the 5 newest posts from FS (full text)";
+		$this->update = "03/11/2015";
+
+	}
+
+    public function collectData(array $param){
+
+    function FS_StripCDATA($string) {
+    	$string = str_replace('<![CDATA[', '', $string);
+    	$string = str_replace(']]>', '', $string);
+    	return $string;
+    }
+    function FS_ExtractContent($url) {
+	$html2 = $this->getSimpleHTMLDOM($url);
+	$text = $html2->find('div.fiche-actualite', 0)->innertext;
+	$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
+	return $text;
+    }
+        $html = $this->getSimpleHTMLDOM('http://www.futura-sciences.com/rss/actualites.xml') or $this->returnError('Could not request Futura Sciences.', 404);
+	$limit = 0;
+
+	foreach($html->find('item') as $element) {
+	 if($limit < 5) {
+	 $item = new \Item();
+	 $item->title = FS_StripCDATA($element->find('title', 0)->innertext);
+	 $item->uri = FS_StripCDATA($element->find('guid', 0)->plaintext);
+	 $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+	 $item->content = FS_ExtractContent($item->uri);
+	 $this->items[] = $item;
+	 $limit++;
+	 }
+	}
+    
+    }
+
+    public function getName(){
+        return 'Futura Sciences';
+    }
+
+    public function getURI(){
+        return 'http://www.futura-sciences.com/';
+    }
+
+    public function getCacheDuration(){
+        return 3600; // 1 hour
+        // return 0; // 1 hour
+    }
+}

+ 3 - 3
bridges/FacebookBridge.php

@@ -109,9 +109,9 @@ class FacebookBridge extends BridgeAbstract{
 		if (is_null($html)) {
 			if (isset($param['u'])) {
 				if (!strpos($param['u'], "/")) {
-					$html = $this->file_get_html('https://www.facebook.com/'.urlencode($param['u']).'?_fb_noscript=1') or $this->returnServerError('No results for this query.');
+					$html = $this->getSimpleHTMLDOM('https://www.facebook.com/'.urlencode($param['u']).'?_fb_noscript=1') or $this->returnServerError('No results for this query.');
 				} else {
-					$html = $this->file_get_html('https://www.facebook.com/pages/'.$param['u'].'?_fb_noscript=1') or $this->returnServerError('No results for this query.');
+					$html = $this->getSimpleHTMLDOM('https://www.facebook.com/pages/'.$param['u'].'?_fb_noscript=1') or $this->returnServerError('No results for this query.');
 				}
 			} else {
 				$this->returnClientError('You must specify a Facebook username.');
@@ -155,7 +155,7 @@ class FacebookBridge extends BridgeAbstract{
 			$this->name = $author;
 
 			foreach($element->children() as $post) {
-			
+
 				$item = new \Item();
 
 				if (count($post->find('abbr')) > 0) {

+ 1 - 1
bridges/FierPandaBridge.php

@@ -14,7 +14,7 @@ Class FierPandaBridge extends BridgeAbstract{
     public function collectData(array $param){
         $link = 'http://www.fier-panda.fr/';
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request Fier Panda.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request Fier Panda.');
 
         foreach($html->find('div.container-content article') as $element) {
             $item = new \Item();

+ 1 - 1
bridges/FlickrExploreBridge.php

@@ -12,7 +12,7 @@ class FlickrExploreBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('https://www.flickr.com/explore') or $this->returnServerError('Could not request Flickr.');
+        $html = $this->getSimpleHTMLDOM('https://www.flickr.com/explore') or $this->returnServerError('Could not request Flickr.');
 
         foreach($html->find('.photo-list-photo-view') as $element) {
 						// Get the styles

+ 4 - 4
bridges/FlickrTagBridge.php

@@ -27,16 +27,16 @@ class FlickrTagBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://www.flickr.com/search/?q=vendee&s=rec') or $this->returnServerError('Could not request Flickr.');
+        $html = $this->getSimpleHTMLDOM('http://www.flickr.com/search/?q=vendee&s=rec') or $this->returnServerError('Could not request Flickr.');
         if (isset($param['q'])) {   /* keyword search mode */
             $this->request = $param['q'];
-            $html = $this->file_get_html('http://www.flickr.com/search/?q='.urlencode($this->request).'&s=rec') or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM('http://www.flickr.com/search/?q='.urlencode($this->request).'&s=rec') or $this->returnServerError('No results for this query.');
         }
         elseif (isset($param['u'])) {   /* user timeline mode */
             $this->request = $param['u'];
-            $html = $this->file_get_html('http://www.flickr.com/photos/'.urlencode($this->request).'/') or $this->returnServerError('Requested username can\'t be found.');
+            $html = $this->getSimpleHTMLDOM('http://www.flickr.com/photos/'.urlencode($this->request).'/') or $this->returnServerError('Requested username can\'t be found.');
         }
-        
+
         else {
             $this->returnClientError('You must specify a keyword or a Flickr username.');
         }

+ 8 - 8
bridges/FootitoBridge.php

@@ -12,11 +12,11 @@ class FootitoBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://www.footito.fr/') or $this->returnServerError('Could not request Footito.');
-    
+        $html = $this->getSimpleHTMLDOM('http://www.footito.fr/') or $this->returnServerError('Could not request Footito.');
+
         foreach($html->find('div.post') as $element) {
             $item = new Item();
-            
+
             $content = trim($element->innertext);
             $content = str_replace("<img", "<img style='float : left;'", $content );
             $content = str_replace("class=\"logo\"", "style='float : left;'", $content );
@@ -27,17 +27,17 @@ class FootitoBridge extends BridgeAbstract{
             $content = str_replace("class=\"report-abuse-button\"", "style='display : none;'", $content );
             $content = str_replace("class=\"reaction clearfix\"", "style='margin : 10px 0px; padding : 5px; border-bottom : 1px #DDD solid;'", $content );
             $content = str_replace("class=\"infos\"", "style='font-size : 0.7em;'", $content );
-            
+
             $item->content = $content;
-            
+
             $title = $element->find('.contenu .texte ', 0)->plaintext;
             $item->title = $title;
-            
+
             $info = $element->find('div.infos', 0);
-            
+
             $item->timestamp = strtotime($info->find('time', 0)->datetime);
             $item->author = $info->find('a.auteur', 0)->plaintext;
-            
+
             $this->items[] = $item;
         }
     }

+ 2 - 2
bridges/FourchanBridge.php

@@ -32,7 +32,7 @@ class FourchanBridge extends BridgeAbstract{
 		$this->returnClientError('You must specify the thread URL.');
 
 	$url = 'https://boards.4chan.org'.$thread['path'].'';
-	$html = $this->file_get_html($url) or $this->returnServerError("Could not request 4chan, thread not found");
+	$html = $this->getSimpleHTMLDOM($url) or $this->returnServerError("Could not request 4chan, thread not found");
 
 	foreach($html->find('div.postContainer') as $element) {
 		$item = new \Item();
@@ -59,7 +59,7 @@ class FourchanBridge extends BridgeAbstract{
 	}
 	$this->items = array_reverse($this->items);
   }
-    
+
     public function getCacheDuration(){
         return 300; // 5min
     }

+ 69 - 0
bridges/FrandroidBridge.php

@@ -0,0 +1,69 @@
+<?php
+class FrandroidBridge extends BridgeAbstract
+{
+	public function loadMetadatas() {
+
+		$this->maintainer = "Daiyousei";
+		$this->name = "Frandroid";
+		$this->uri = "http://www.frandroid.com/";
+		$this->description = "Returns the RSS feed from Frandroid (full text articles)";
+		$this->update = "2015-03-05";
+
+	}
+    
+    public function collectData(array $param)
+    {
+        
+        function FrandroidStripCDATA($string)
+        {
+            $string = str_replace('<![CDATA[', '', $string);
+            $string = str_replace(']]>', '', $string);
+            return $string;
+        }
+        function FrandroidExtractContent($url)
+        {
+            $html2 = $this->getSimpleHTMLDOM($url);
+            $html3 = $html2->find('div.post-content', 0);
+            $html3->find('div.no-sidebar-ad-top', 0)->outertext = '';
+            $ret = $html3->find('div.shortcode-container');
+            foreach ($ret as $value) {
+                $value->outertext = '';
+            }
+            
+            $html3->find('div#hrr-link', 0)->outertext = '';
+            $text = $html3->innertext;
+            $text = strip_tags($text, '<h1><span><h2><p><b><a><blockquote><img><em><ul><ol>');
+            return $text;
+        }
+        $html = $this->getSimpleHTMLDOM('http://feeds.feedburner.com/Frandroid?format=xml') or $this->returnError('Could not request Frandroid.', 404);
+        $limit = 0;
+        
+        foreach ($html->find('item') as $element) {
+            if ($limit < 5) {
+                $item = new \Item();
+                $item->title = FrandroidStripCDATA($element->find('title', 0)->innertext);
+                $item->uri = FrandroidStripCDATA($element->find('guid', 0)->plaintext);
+                $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+                $item->content = FrandroidExtractContent($item->uri);
+                $this->items[] = $item;
+                $limit++;
+            }
+        }
+        
+    }
+    
+    public function getName()
+    {
+        return 'Frandroid';
+    }
+    
+    public function getURI()
+    {
+        return 'http://www.frandroid.com/';
+    }
+    
+    public function getCacheDuration()
+    {
+        return 300; // 5min
+    }
+}

+ 2 - 2
bridges/FuturaSciencesBridge.php

@@ -172,13 +172,13 @@ class FuturaSciencesBridge extends BridgeAbstract {
             $this->returnClientError('Invalid "feed" parameter.'.$url);
 
         $url = $this->getURI().'rss/'.$param['feed'].'.xml';
-        $html = $this->file_get_html($url) or $this->returnServerError('Could not request Futura-Sciences: '.$url);
+        $html = $this->getSimpleHTMLDOM($url) or $this->returnServerError('Could not request Futura-Sciences: '.$url);
         $limit = 0;
 
         foreach($html->find('item') as $element) {
             if ($limit < 10) {
                 $article_url = str_replace('#xtor=RSS-8', '', StripCDATA($element->find('guid', 0)->plaintext));
-                $article = $this->file_get_html($article_url) or $this->returnServerError('Could not request Futura-Sciences: '.$article_url);
+                $article = $this->getSimpleHTMLDOM($article_url) or $this->returnServerError('Could not request Futura-Sciences: '.$article_url);
                 $contents = $article->find('div.content', 0)->innertext;
 
                 foreach (array(

+ 3 - 3
bridges/GBAtempBridge.php

@@ -74,7 +74,7 @@ class GBAtempBridge extends BridgeAbstract {
     }
 
     private function fetch_post_content($uri, $site_url) {
-        $html = $this->file_get_html($uri) or $this->returnServerError('Could not request GBAtemp: '.$uri);
+        $html = $this->getSimpleHTMLDOM($uri) or $this->returnServerError('Could not request GBAtemp: '.$uri);
         $content = $html->find('div.messageContent', 0)->innertext;
         return $this->cleanup_post_content($content, $site_url);
     }
@@ -91,7 +91,7 @@ class GBAtempBridge extends BridgeAbstract {
             } else $this->returnClientError('The provided type filter is invalid. Expecting N, R, T, or F.');
         } else $this->returnClientError('Please provide a type filter. Expecting N, R, T, or F.');
 
-        $html = $this->file_get_html($this->uri) or $this->returnServerError('Could not request GBAtemp.');
+        $html = $this->getSimpleHTMLDOM($this->uri) or $this->returnServerError('Could not request GBAtemp.');
 
         if ($typeFilter == 'N') {
             foreach ($html->find('li[class=news_item full]') as $newsItem) {
@@ -106,7 +106,7 @@ class GBAtempBridge extends BridgeAbstract {
             foreach ($html->find('li.portal_review') as $reviewItem) {
                 $url = $this->uri.$reviewItem->find('a', 0)->href;
                 $title = $reviewItem->find('span.review_title', 0)->plaintext;
-                $content = $this->file_get_html($url) or $this->returnServerError('Could not request GBAtemp: '.$uri);
+                $content = $this->getSimpleHTMLDOM($url) or $this->returnServerError('Could not request GBAtemp: '.$uri);
                 $author = $content->find('a.username', 0)->plaintext;
                 $time = intval($this->ExtractFromDelimiters($content->find('abbr.DateTime', 0)->outertext, 'data-time="', '"'));
                 $intro = '<p><b>'.($content->find('div#review_intro', 0)->plaintext).'</b></p>';

+ 7 - 7
bridges/GelbooruBridge.php

@@ -26,27 +26,27 @@ class GelbooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;
-        if (isset($param['p'])) { 
-		$page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+		$page = (int)preg_replace("/[^0-9]/",'', $param['p']);
 		$page = $page - 1;
 		$page = $page * 63;
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://gelbooru.com/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Gelbooru.');
+        $html = $this->getSimpleHTMLDOM("http://gelbooru.com/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Gelbooru.');
 
 
 	foreach($html->find('div[class=content] span') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://gelbooru.com/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));
 		$item->timestamp = time();
 		$thumbnailUri = $element->find('img', 0)->src;
 		$item->tags = $element->find('img', 0)->getAttribute('alt');
 		$item->title = 'Gelbooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 11 - 11
bridges/GiphyBridge.php

@@ -30,10 +30,10 @@ class GiphyBridge extends BridgeAbstract{
 	}
 
 	public function collectData(array $param){
-		$html = ''; 
+		$html = '';
         $base_url = 'http://giphy.com';
 		if (isset($param['s'])) {   /* keyword search mode */
-			$html = $this->file_get_html($base_url.'/search/'.urlencode($param['s'].'/')) or $this->returnServerError('No results for this query.');
+			$html = $this->getSimpleHTMLDOM($base_url.'/search/'.urlencode($param['s'].'/')) or $this->returnServerError('No results for this query.');
 		}
 		else {
 			$this->returnClientError('You must specify a search worf (?s=...).');
@@ -43,22 +43,22 @@ class GiphyBridge extends BridgeAbstract{
         if (isset($param['n'])) {
             $max = (integer) $param['n'];
         }
-        
+
         $limit = 0;
         $kw = urlencode($param['s']);
         foreach($html->find('div.hoverable-gif') as $entry) {
             if($limit < $max) {
-                $node = $entry->first_child();                                
-                $href = $node->getAttribute('href');                
-                
-                $html2 = $this->file_get_html($base_url . $href) or $this->returnServerError('No results for this query.');                                
+                $node = $entry->first_child();
+                $href = $node->getAttribute('href');
+
+                $html2 = $this->getSimpleHTMLDOM($base_url . $href) or $this->returnServerError('No results for this query.');
                 $figure = $html2->getElementByTagName('figure');
                 $img = $figure->firstChild();
                 $caption = $figure->lastChild();
-                
+
                 $item = new \Item();
                 $item->id = $img->getAttribute('data-gif_id');
-                $item->uri = $img->getAttribute('data-bitly_gif_url');	
+                $item->uri = $img->getAttribute('data-bitly_gif_url');
                 $item->username = 'Giphy - '.ucfirst($kw);
                 $title = $caption->innertext();
                     $title = preg_replace('/\s+/', ' ',$title);
@@ -74,8 +74,8 @@ class GiphyBridge extends BridgeAbstract{
                     '<a href="'.$item->uri.'">'
                         .'<img src="'.$img->getAttribute('src').'" width="'.$img->getAttribute('data-original-width').'" height="'.$img->getAttribute('data-original-height').'" />'
                     .'</a>';
-                
-                $this->items[] = $item;                
+
+                $this->items[] = $item;
                 $limit++;
             }
         }

+ 1 - 1
bridges/GithubIssueBridge.php

@@ -34,7 +34,7 @@ class GithubIssueBridge extends BridgeAbstract{
 
   public function collectData(array $param){
     $uri = 'https://github.com/'.$param['u'].'/'.$param['p'].'/issues/'.$param['i'];
-    $html = file_get_html($uri)
+    $html = $this->getSimpleHTMLDOM($uri)
       or $this->returnServerError('No results for Github Issue '.$param['i'].' in project '.$param['u'].'/'.$param['p']);
 
     foreach($html->find('.js-comment-container') as $comment){

+ 1 - 1
bridges/GitlabCommitsBridge.php

@@ -44,7 +44,7 @@ class GitlabCommitsBridge extends BridgeAbstract{
       $uri.='master';
     }
 
-    $html = file_get_html($uri)
+    $html = $this->getSimpleHTMLDOM($uri)
       or $this->returnServerError('No results for Gitlab Commits of project '.$param['uri'].'/'.$param['u'].'/'.$param['p']);
 
 

+ 2 - 2
bridges/GizmodoFRBridge.php

@@ -14,7 +14,7 @@ class GizmodoFRBridge extends BridgeAbstract{
     public function collectData(array $param){
 
         function GizmodoFRExtractContent($url) {
-            $articleHTMLContent = $this->file_get_html($url);
+            $articleHTMLContent = $this->getSimpleHTMLDOM($url);
             $text = $articleHTMLContent->find('div.entry-thumbnail', 0)->innertext;
             $text = $text.$articleHTMLContent->find('div.entry-excerpt', 0)->innertext;
             $text = $text.$articleHTMLContent->find('div.entry-content', 0)->innertext;
@@ -26,7 +26,7 @@ class GizmodoFRBridge extends BridgeAbstract{
             return $text;
         }
 
-        $rssFeed = $this->file_get_html('http://www.gizmodo.fr/feed') or $this->returnServerError('Could not request http://www.gizmodo.fr/feed');
+        $rssFeed = $this->getSimpleHTMLDOM('http://www.gizmodo.fr/feed') or $this->returnServerError('Could not request http://www.gizmodo.fr/feed');
     	$limit = 0;
 
     	foreach($rssFeed->find('item') as $element) {

+ 2 - 2
bridges/GooglePlusPostBridge.php

@@ -33,8 +33,8 @@ class GooglePlusPostBridge extends BridgeAbstract
 
 		$this->request = $param['username'];
 		// get content parsed
-//		$html = $this->file_get_html(__DIR__ . '/../posts2.html'
-		$html = $this->file_get_html(self::GOOGLE_PLUS_BASE_URL . urlencode($this->request) . '/posts'
+//		$html = $this->getSimpleHTMLDOM(__DIR__ . '/../posts2.html'
+		$html = $this->getSimpleHTMLDOM(self::GOOGLE_PLUS_BASE_URL . urlencode($this->request) . '/posts'
 			// force language
 			, false, stream_context_create(array('http'=> array(
 			'header'    => 'Accept-Language: fr,fr-be,fr-fr;q=0.8,en;q=0.4,en-us;q=0.2;*' . "\r\n"

+ 2 - 2
bridges/GoogleSearchBridge.php

@@ -35,7 +35,7 @@ class GoogleSearchBridge extends BridgeAbstract{
 
         if (isset($param['q'])) {   /* keyword search mode */
             $this->request = $param['q'];
-            $html = $this->file_get_html('https://www.google.com/search?q=' . urlencode($this->request) . '&num=100&complete=0&tbs=qdr:y,sbd:1') or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM('https://www.google.com/search?q=' . urlencode($this->request) . '&num=100&complete=0&tbs=qdr:y,sbd:1') or $this->returnServerError('No results for this query.');
         }
         else{
             $this->returnClientError('You must specify a keyword (?q=...).');
@@ -45,7 +45,7 @@ class GoogleSearchBridge extends BridgeAbstract{
         if( !is_null($emIsRes) ){
             foreach($emIsRes->find('li[class=g]') as $element) {
                 $item = new Item();
-                
+
                 // Extract direct URL from google href (eg. /url?q=...)
                 $t = $element->find('a[href]',0)->href;
                 $item->uri = ''.$t;

+ 1 - 1
bridges/GuruMedBridge.php

@@ -16,7 +16,7 @@ class GuruMedBridge extends BridgeAbstract{
 	}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html('http://gurumed.org/feed') or $this->returnServerError('Could not request Gurumed.');
+		$html = $this->getSimpleHTMLDOM('http://gurumed.org/feed') or $this->returnServerError('Could not request Gurumed.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {

+ 1 - 1
bridges/HDWallpapersBridge.php

@@ -48,7 +48,7 @@ class HDWallpapersBridge extends BridgeAbstract {
 
         for ($page = 1; $page <= $lastpage; $page++) {
             $link = $baseUri.'/'.$category.'/page/'.$page;
-            $html = $this->file_get_html($link) or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('No results for this query.');
 
             if ($page === 1) {
                 preg_match('/page\/(\d+)$/', $html->find('.pagination a', -2)->href, $matches);

+ 1 - 1
bridges/HentaiHavenBridge.php

@@ -12,7 +12,7 @@ class HentaiHavenBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://hentaihaven.org/') or $this->returnServerError('Could not request Hentai Haven.');
+        $html = $this->getSimpleHTMLDOM('http://hentaihaven.org/') or $this->returnServerError('Could not request Hentai Haven.');
         foreach($html->find('div.zoe-grid') as $element) {
             $item = new \Item();
             $item->uri = $element->find('div.brick-content h3 a', 0)->href;

+ 1 - 1
bridges/IdenticaBridge.php

@@ -25,7 +25,7 @@ class IdenticaBridge extends BridgeAbstract{
         $html = '';
         if (isset($param['u'])) {   /* user timeline mode */
         	$this->request = $param['u'];
-            $html = $this->file_get_html('https://identi.ca/'.urlencode($this->request)) or $this->returnServerError('Requested username can\'t be found.');
+            $html = $this->getSimpleHTMLDOM('https://identi.ca/'.urlencode($this->request)) or $this->returnServerError('Requested username can\'t be found.');
         }
         else {
             $this->returnClientError('You must specify an Identica username (?u=...).');

+ 9 - 9
bridges/InstagramBridge.php

@@ -25,35 +25,35 @@ class InstagramBridge extends BridgeAbstract{
         $html = '';
         if (isset($param['u'])) {   /* user timeline mode */
             $this->request = $param['u'];
-            $html = $this->file_get_html('http://instagram.com/'.urlencode($this->request)) or $this->returnServerError('Could not request Instagram.');
+            $html = $this->getSimpleHTMLDOM('http://instagram.com/'.urlencode($this->request)) or $this->returnServerError('Could not request Instagram.');
         }
         else {
             $this->returnClientError('You must specify a Instagram username (?u=...).');
         }
-        
+
         $innertext = null;
-        
+
         foreach($html->find('script') as $script)
         {
         	if ('' === $script->innertext) {
         		continue;
         	}
-        	
+
         	$pos = strpos(trim($script->innertext), 'window._sharedData');
         	if (0 !== $pos)
         	{
         		continue;
         	}
-        	
+
         	$innertext = $script->innertext;
         	break;
         }
 
         $json = trim(substr($innertext, $pos+18), ' =;');
         $data = json_decode($json);
-        
-        
-        
+
+
+
         $userMedia = $data->entry_data->ProfilePage[0]->user->media->nodes;
 
         foreach($userMedia as $media)
@@ -70,7 +70,7 @@ class InstagramBridge extends BridgeAbstract{
         	}
         	$item->timestamp = $media->date;
         	$this->items[] = $item;
-        	
+
         }
     }
 

+ 2 - 2
bridges/JapanExpoBridge.php

@@ -59,7 +59,7 @@ class JapanExpoBridge extends BridgeAbstract{
         };
 
         $link = 'http://www.japan-expo-paris.com/fr/actualites';
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request JapanExpo: '.$link);
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request JapanExpo: '.$link);
         $fullcontent = (!empty($param['mode']) && $param['mode'] == 'full');
         $count = 0;
 
@@ -73,7 +73,7 @@ class JapanExpoBridge extends BridgeAbstract{
 
             if ($fullcontent) {
                 if ($count < 5) {
-                    $article_html = $this->file_get_html($url) or $this->returnServerError('Could not request JapanExpo: '.$url);
+                    $article_html = $this->getSimpleHTMLDOM($url) or $this->returnServerError('Could not request JapanExpo: '.$url);
                     $header = $article_html->find('header.pageHeadBox', 0);
                     $timestamp = strtotime($header->find('time', 0)->datetime);
                     $title_html = $header->find('div.section', 0)->next_sibling();

+ 7 - 7
bridges/KonachanBridge.php

@@ -25,18 +25,18 @@ class KonachanBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 1;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://konachan.com/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Konachan.');
+        $html = $this->getSimpleHTMLDOM("http://konachan.com/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Konachan.');
 	$input_json = explode('Post.register(', $html);
 	foreach($input_json as $element)
 	 $data[] = preg_replace('/}\)(.*)/', '}', $element);
 	unset($data[0]);
-    
+
         foreach($data as $datai) {
 	    $json = json_decode($datai, TRUE);
             $item = new \Item();
@@ -45,7 +45,7 @@ class KonachanBridge extends BridgeAbstract{
             $item->timestamp = $json['created_at'];
             $item->imageUri = $json['file_url'];
             $item->title = 'Konachan | '.$json['id'];
-            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags']; 
+            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags'];
             $this->items[] = $item;
         }
     }

+ 2 - 2
bridges/KoreusBridge.php

@@ -16,14 +16,14 @@ class KoreusBridge extends BridgeAbstract{
 	}
 
 	private function KoreusExtractContent($url) {
-		$html2 = $this->file_get_html($url);
+		$html2 = $this->getSimpeHTMLDOM($url);
 		$text = $html2->find('p[class=itemText]', 0)->innertext;
 		$text = utf8_encode(preg_replace('/(Sur le m.+?)+$/i','',$text));
 		return $text;
 	}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html('http://feeds.feedburner.com/Koreus-articles') or $this->returnServerError('Could not request Koreus.');
+		$html = $this->getSimpleHTMLDOM('http://feeds.feedburner.com/Koreus-articles') or $this->returnServerError('Could not request Koreus.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {

+ 12 - 12
bridges/LeBonCoinBridge.php

@@ -134,10 +134,10 @@ class LeBonCoinBridge extends BridgeAbstract{
 				"type" : "list",
 				"values" : [
 						{ "name" : "---- Select ----", "value" : "" },
-						
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "EMPLOI", "value" : "_emploi_" },
-						
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "VEHICULES", "value" : "_vehicules_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Voitures", "value" : "voitures" },
@@ -149,14 +149,14 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Equipement Caravaning", "value" : "equipement_caravaning" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Nautisme", "value" : "nautisme" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Equipement Nautisme", "value" : "equipement_nautisme" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "IMMOBILIER", "value" : "_immobilier_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Ventes immobilieres", "value" : "ventes_immobilieres" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Locations", "value" : "locations" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Colocations", "value" : "colocations" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Bureaux &amp; Commerces", "value" : "bureaux_commerces" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "VACANCES", "value" : "_vacances_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Locations gites", "value" : "locations_gites" },
@@ -164,14 +164,14 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Campings", "value" : "campings" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Hôtels", "value" : "hotels" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Hébergements insolites", "value" : "hebergements_insolites" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "MULTIMEDIA", "value" : "_multimedia_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Informatique", "value" : "informatique" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Consoles & Jeux vidéo", "value" : "consoles_jeux_video" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Image & Son", "value" : "image_son" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Téléphonie", "value" : "telephonie" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "LOISIRS", "value" : "_loisirs_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;DVD / Films", "value" : "dvd_films" },
@@ -184,7 +184,7 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Collection", "value" : "collection" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Jeux & Jouets", "value" : "jeux_jouets" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Vins & Gastronomie", "value" : "vins_gastronomie" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "MATERIEL PROFESSIONNEL", "value" : "_materiel_professionnel_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Materiel Agricole", "value" : "materiel_agricole" },
@@ -196,7 +196,7 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Fournitures de Bureau", "value" : "fournitures_de_bureau" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Commerces & Marchés", "value" : "commerces_marches" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Matériel médical", "value" : "materiel_medical" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "SERVICES", "value" : "_services_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Prestations de services", "value" : "prestations_de_services" },
@@ -204,7 +204,7 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Evénements", "value" : "evenements" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Cours particuliers", "value" : "cours_particuliers" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Covoiturage", "value" : "covoiturage" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "MAISON", "value" : "_maison_" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Ameublement", "value" : "ameublement" },
@@ -220,7 +220,7 @@ class LeBonCoinBridge extends BridgeAbstract{
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Montres & Bijoux", "value" : "montres_bijoux" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Equipement bébé", "value" : "equipement_bebe" },
 							{ "name" : "&nbsp;&nbsp;&nbsp;&nbsp;Vêtements bébé", "value" : "vetements_bebe" },
-							
+
 						{ "name" : "", "value" : "" },
 						{ "name" : "AUTRES", "value" : "autres" }
 				]
@@ -239,7 +239,7 @@ class LeBonCoinBridge extends BridgeAbstract{
 		else {
 			$link = 'http://www.leboncoin.fr/' . $param['c'] . '/offres/' . $param['r'] . '/?f=a&th=1&q=' . urlencode($param['k']);
 		}
-		$html = $this->file_get_html($link) or $this->returnServerError('Could not request LeBonCoin.');
+		$html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request LeBonCoin.');
 
 		$list = $html->find('.tabsContent', 0);
 		if($list === NULL) {
@@ -275,4 +275,4 @@ class LeBonCoinBridge extends BridgeAbstract{
 			$this->items[] = $item;
 		}
 	}
-}
+}

+ 2 - 2
bridges/LeJournalDuGeekBridge.php

@@ -16,7 +16,7 @@ class LeJournalDuGeekBridge extends BridgeAbstract{
 	}
 
 	private function LeJournalDuGeekExtractContent($url) {
-		$articleHTMLContent = $this->file_get_html($url);
+		$articleHTMLContent = $this->getSimpleHMLDOM($url);
 		$text = $articleHTMLContent->find('div.post-content', 0)->innertext;
 
 		foreach($articleHTMLContent->find('a.more') as $element) {
@@ -38,7 +38,7 @@ class LeJournalDuGeekBridge extends BridgeAbstract{
 	}
 
 	public function collectData(array $param){
-		$rssFeed = $this->file_get_html('http://www.journaldugeek.com/rss') or $this->returnServerError('Could not request http://www.journaldugeek.com/rss');
+		$rssFeed = $this->getSimpleHTMLDOM('http://www.journaldugeek.com/rss') or $this->returnServerError('Could not request http://www.journaldugeek.com/rss');
 		$limit = 0;
 
 		foreach($rssFeed->find('item') as $element) {

+ 2 - 2
bridges/LeMondeInformatiqueBridge.php

@@ -34,7 +34,7 @@ class LeMondeInformatiqueBridge extends BridgeAbstract {
         }
 
         $feedUrl = 'http://www.lemondeinformatique.fr/rss/rss.xml';
-        $html = $this->file_get_html($feedUrl) or $this->returnServerError('Could not request LeMondeInformatique: '.$feedUrl);
+        $html = $this->getSimpleHTMLDOM($feedUrl) or $this->returnServerError('Could not request LeMondeInformatique: '.$feedUrl);
         $limit = 0;
 
         foreach($html->find('item') as $element) {
@@ -44,7 +44,7 @@ class LeMondeInformatiqueBridge extends BridgeAbstract {
                 $article_uri = $element->innertext;
                 $article_uri = substr($article_uri, strpos($article_uri, '<link>') + 6);
                 $article_uri = substr($article_uri, 0, strpos($article_uri, '</link>'));
-                $article_html = $this->file_get_html($article_uri) or $this->returnServerError('Could not request LeMondeInformatique: '.$article_uri);
+                $article_html = $this->getSimpleHTMLDOM($article_uri) or $this->returnServerError('Could not request LeMondeInformatique: '.$article_uri);
                 $article_content = CleanArticle($article_html->find('div#article', 0)->innertext);
                 $article_title = $article_html->find('h1.cleanprint-title', 0)->plaintext;
 

+ 55 - 0
bridges/LeMotDuJourBridge.php

@@ -0,0 +1,55 @@
+<?php
+class LeMotDuJourBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "qwertygc";
+		$this->name = "LeMotDuJour Bridge";
+		$this->uri = "http://www.lemotdujour.com/";
+		$this->description = "Returns the newest articles.";
+		$this->update = "2014-05-25";
+
+	}
+    
+        public function collectData(array $param){
+
+			function StripCDATA($string) {
+			$string = str_replace('<![CDATA[', '', $string);
+			$string = str_replace(']]>', '', $string);
+			return $string;
+		}
+		function ExtractContent($url) {
+		$html2 = $this->getSimpleHTMLDOM($url);
+		$text = $html2->find('div.single-contenu', 0)->innertext;
+		return $text;
+		}
+		$html = $this->getSimpleHTMLDOM('http://feeds2.feedburner.com/lemotdujour/lemotdujour') or $this->returnError('Could not request LeMotDuJour.', 404);
+		$limit = 0;
+
+		foreach($html->find('item') as $element) {
+		 if($limit < 10) {
+		 $item = new \Item();
+		 $item->title = StripCDATA($element->find('title', 0)->innertext);
+		 $item->uri = StripCDATA($element->find('guid', 0)->plaintext);
+		 $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+		 $item->content = ExtractContent($item->uri);
+		 $this->items[] = $item;
+		 $limit++;
+		 }
+		}
+    
+    }
+
+    public function getName(){
+        return 'LeMotDuJour Bridge';
+    }
+
+    public function getURI(){
+        return 'http://lemotdujour.com/';
+    }
+
+    public function getCacheDuration(){
+        return 3600*2; // 2 hours
+        // return 0; // 2 hours
+    }
+}

+ 8 - 8
bridges/LesJoiesDuCodeBridge.php

@@ -12,14 +12,14 @@ class LesJoiesDuCodeBridge extends BridgeAbstract{
 	}
 
     public function collectData(array $param){
-        $html = $this->file_get_html('http://lesjoiesducode.fr/') or $this->returnServerError('Could not request LesJoiesDuCode.');
-    
+        $html = $this->getSimpleHTMLDOM('http://lesjoiesducode.fr/') or $this->returnServerError('Could not request LesJoiesDuCode.');
+
         foreach($html->find('div.blog-post') as $element) {
             $item = new Item();
             $temp = $element->find('h1 a', 0);
             $titre = html_entity_decode($temp->innertext);
             $url = $temp->href;
-            
+
             $temp = $element->find('div.blog-post-content', 0);
 
             // retrieve .gif instead of static .jpg
@@ -29,21 +29,21 @@ class LesJoiesDuCodeBridge extends BridgeAbstract{
               $image->src = $img_src;
             }
             $content = $temp->innertext;
-            
+
             $auteur = $temp->find('i', 0);
             $pos = strpos($auteur->innertext, "by");
-            
+
             if($pos > 0)
             {
                 $auteur = trim(str_replace("*/", "", substr($auteur->innertext, ($pos + 2))));
                 $item->author = $auteur;
             }
-            
-            
+
+
             $item->content .= trim($content);
             $item->uri = $url;
             $item->title = trim($titre);
-            
+
             $this->items[] = $item;
         }
     }

+ 2 - 2
bridges/LichessBridge.php

@@ -13,7 +13,7 @@ class LichessBridge  extends BridgeAbstract
 
     public function collectData(array $param)
     {
-        $xml_feed = $this->file_get_html('http://fr.lichess.org/blog.atom') or $this->returnServerError('Could not retrieve Lichess blog feed.');
+        $xml_feed = $this->getSimpleHTMLDOM('http://fr.lichess.org/blog.atom') or $this->returnServerError('Could not retrieve Lichess blog feed.');
 
         $posts_loaded = 0;
         foreach($xml_feed->find('entry') as $entry)
@@ -37,7 +37,7 @@ class LichessBridge  extends BridgeAbstract
 
     private function retrieve_lichess_post($blog_post_uri)
     {
-        $blog_post_html = $this->file_get_html($blog_post_uri);
+        $blog_post_html = $this->getSimpleHTMLDOM($blog_post_uri);
         $blog_post_div  = $blog_post_html->find('#lichess_blog', 0);
 
         $post_chapo   = $blog_post_div->find('.shortlede', 0)->innertext;

+ 1 - 1
bridges/LinkedInCompany.php

@@ -22,7 +22,7 @@ class LinkedInCompany extends BridgeAbstract{
         $html = '';
         $link = 'https://www.linkedin.com/company/'.$param[c];
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request LinkedIn.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request LinkedIn.');
 
         foreach($html->find('//*[@id="my-feed-post"]/li') as $element) {
             $title = $element->find('span.share-body', 0)->innertext;

+ 7 - 7
bridges/LolibooruBridge.php

@@ -26,18 +26,18 @@ class LolibooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 1; $tags = '';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://lolibooru.moe/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Lolibooru.');
+        $html = $this->getSimpleHTMLDOM("http://lolibooru.moe/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Lolibooru.');
 	$input_json = explode('Post.register(', $html);
 	foreach($input_json as $element)
 	 $data[] = preg_replace('/}\)(.*)/', '}', $element);
 	unset($data[0]);
-    
+
         foreach($data as $datai) {
 	    $json = json_decode($datai, TRUE);
             $item = new \Item();
@@ -46,7 +46,7 @@ class LolibooruBridge extends BridgeAbstract{
             $item->timestamp = $json['created_at'];
             $item->imageUri = $json['file_url'];
             $item->title = 'Lolibooru | '.$json['id'];
-            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags']; 
+            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags'];
             $this->items[] = $item;
         }
     }

+ 60 - 0
bridges/MalikiBridge.php

@@ -0,0 +1,60 @@
+<?php
+class MalikiBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "mitsukarenai";
+		$this->name = "Maliki";
+		$this->uri = "http://www.maliki.com/";
+		$this->description = "Returns Maliki's newest strips";
+		$this->update = "2014-05-30";
+
+	}
+
+    public function collectData(array $param){
+        $html = $this->getSimpleHTMLDOM('http://www.maliki.com/') or $this->returnError('Could not request Maliki.', 404);
+	$count=0;
+	$latest=1; $latest_title="";
+	$latest = $html->find('div.conteneur_page a', 1)->href;
+	$latest_title = $html->find('div.conteneur_page img', 0)->title;
+
+	function MalikiExtractContent($url) {
+		$html2 = $this->getSimpleHTMLDOM($url);
+		$text = 'http://www.maliki.com/'.$html2->find('img', 0)->src;
+		$text = '<img alt="" src="'.$text.'"/><br>'.$html2->find('div.imageetnews', 0)->plaintext;
+		return $text;
+    	}
+
+            $item = new \Item();
+            $item->uri = 'http://www.maliki.com/'.$latest;
+            $item->title = $latest_title;
+            $item->timestamp = time();
+            $item->content = MalikiExtractContent($item->uri);
+            $this->items[] = $item;
+	
+
+        foreach($html->find('div.boite_strip') as $element) {
+	  if(!empty($element->find('a',0)->href) and $count < 3) {
+            $item = new \Item();
+            $item->uri = 'http://www.maliki.com/'.$element->find('a',0)->href;
+            $item->title = $element->find('img',0)->title;
+            $item->timestamp = strtotime(str_replace('/', '-', $element->find('span.stylepetit', 0)->innertext));
+            $item->content = MalikiExtractContent($item->uri);
+            $this->items[] = $item;
+	    $count++;
+          }
+        }
+    }
+
+    public function getName(){
+        return 'Maliki';
+    }
+
+    public function getURI(){
+        return 'http://www.maliki.com/';
+    }
+
+    public function getCacheDuration(){
+        return 86400*6; // 6 days
+    }
+}

+ 58 - 0
bridges/MemoLinuxBridge.php

@@ -0,0 +1,58 @@
+<?php
+class MemoLinuxBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "qwertygc";
+		$this->name = "MemoLinux";
+		$this->uri = "http://memo-linux.com/";
+		$this->description = "Returns the 10 newest posts from MemoLinux (full text)";
+		$this->update = "2015-01-30";
+
+	}
+
+    public function collectData(array $param){
+
+      function StripCDATA($string) {
+      	$string = str_replace('<![CDATA[', '', $string);
+      	$string = str_replace(']]>', '', $string);
+      	return $string;
+      }
+
+      function ExtractContent($url) {
+        $html2 = $this->getSimpleHTMLDOM($url);
+        $text = $html2->find('div.entry-content', 0)->innertext;
+        $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
+        $text = preg_replace('@<div[^>]*?>.*?</div>@si', '', $text);
+        $text = preg_replace("/<h1.*/", '', $text);
+        return $text;
+      }
+
+      $html = $this->getSimpleHTMLDOM('http://memo-linux.com/feed/') or $this->returnError('Could not request MemoLinux.', 404);
+      $limit = 0;
+
+    	foreach($html->find('item') as $element) {
+        if($limit < 10) {
+          $item = new \Item();
+          $item->title = StripCDATA($element->find('title', 0)->innertext);
+          $item->uri = StripCDATA($element->find('guid', 0)->plaintext);
+          $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+          $item->content = ExtractContent($item->uri);
+          $this->items[] = $item;
+          $limit++;
+        }
+    	}
+    }
+
+    public function getName(){
+        return 'MemoLinux';
+    }
+
+    public function getURI(){
+        return 'http://memo-linux.com/feed/';
+    }
+
+    public function getCacheDuration(){
+        return 3600*12; // 12 hours
+    }
+}

+ 7 - 7
bridges/MilbooruBridge.php

@@ -25,25 +25,25 @@ class MilbooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://sheslostcontrol.net/moe/shimmie/index.php?q=/post/list/$tags/$page") or $this->returnServerError('Could not request Milbooru.');
+        $html = $this->getSimpleHTMLDOM("http://sheslostcontrol.net/moe/shimmie/index.php?q=/post/list/$tags/$page") or $this->returnServerError('Could not request Milbooru.');
 
 
 	foreach($html->find('div[class=shm-image-list] span[class=thumb]') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://sheslostcontrol.net/moe/shimmie/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('a', 0)->getAttribute('data-post-id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('a', 0)->getAttribute('data-post-id'));
 		$item->timestamp = time();
 		$thumbnailUri = 'http://sheslostcontrol.net/moe/shimmie/'.$element->find('img', 0)->src;
 		$item->tags = $element->find('a', 0)->getAttribute('data-tags');
 		$item->title = 'Milbooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 2 - 2
bridges/MondeDiploBridge.php

@@ -9,8 +9,8 @@ class MondeDiploBridge extends BridgeAbstract{
 		$this->update = '2016-08-17';
 	}
 
-	public function collectData(array $param){	
-		$html = $this->file_get_html($this->uri) or $this->returnServerError('Could not request MondeDiplo. for : ' . $link);
+	public function collectData(array $param){
+		$html = $this->getSimpleHTMLDOM($this->uri) or $this->returnServerError('Could not request MondeDiplo. for : ' . $link);
 
 		foreach($html->find('div.unarticle') as $article) {
 			$element = $article->parent();

+ 2 - 2
bridges/MsnMondeBridge.php

@@ -10,13 +10,13 @@ class MsnMondeBridge extends BridgeAbstract{
 	}
 
 	private function MsnMondeExtractContent($url, &$item) {
-		$html2 = $this->file_get_html($url);
+		$html2 = $this->getSimpleHTLDOM($url);
 		$item->content = $html2->find('#content', 0)->find('article', 0)->find('section', 0)->plaintext;
 		$item->timestamp = strtotime($html2->find('.authorinfo-txt', 0)->find('time', 0)->datetime);
 	}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html($this->uri) or $this->returnServerError('Could not request MsnMonde.');
+		$html = $this->getSimpleHTMLDOM($this->uri) or $this->returnServerError('Could not request MsnMonde.');
 		$limit = 0;
 		foreach($html->find('.smalla') as $article) {
 			if($limit < 10) {

+ 7 - 7
bridges/MspabooruBridge.php

@@ -26,27 +26,27 @@ class MspabooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-		$page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+		$page = (int)preg_replace("/[^0-9]/",'', $param['p']);
 		$page = $page - 1;
 		$page = $page * 50;
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://mspabooru.com/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Mspabooru.');
+        $html = $this->getSimpleHTMLDOM("http://mspabooru.com/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Mspabooru.');
 
 
 	foreach($html->find('div[class=content] span') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://mspabooru.com/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));
 		$item->timestamp = time();
 		$thumbnailUri = $element->find('img', 0)->src;
 		$item->tags = $element->find('img', 0)->getAttribute('alt');
 		$item->title = 'Mspabooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 3 - 3
bridges/NakedSecurityBridge.php

@@ -36,7 +36,7 @@ class NakedSecurityBridge extends BridgeAbstract {
         }
 
         $feedUrl = 'https://feeds.feedburner.com/nakedsecurity?format=xml';
-        $html = $this->file_get_html($feedUrl) or $this->returnServerError('Could not request '.$this->getName().': '.$feedUrl);
+        $html = $this->getSimpleHTMLDOM($feedUrl) or $this->returnServerError('Could not request '.$this->getName().': '.$feedUrl);
         $limit = 0;
 
         foreach ($html->find('item') as $element) {
@@ -44,7 +44,7 @@ class NakedSecurityBridge extends BridgeAbstract {
 
                 //Retrieve article Uri and get that page
                 $article_uri = $element->find('guid', 0)->plaintext;
-                $article_html = $this->file_get_html($article_uri) or $this->returnServerError('Could not request '.$this->getName().': '.$article_uri);
+                $article_html = $this->getSimpleHTMLDOM($article_uri) or $this->returnServerError('Could not request '.$this->getName().': '.$article_uri);
 
                 //Build article contents from corresponding elements
                 $article_title = trim($element->find('title', 0)->plaintext);
@@ -68,4 +68,4 @@ class NakedSecurityBridge extends BridgeAbstract {
             }
         }
     }
-}
+}

+ 2 - 2
bridges/NasaApodBridge.php

@@ -13,7 +13,7 @@ class NasaApodBridge extends BridgeAbstract{
 
   public function collectData(array $param) {
 
-    $html = $this->file_get_html('http://apod.nasa.gov/apod/archivepix.html') or $this->returnServerError('Error while downloading the website content');
+    $html = $this->getSimpleHTMLDOM('http://apod.nasa.gov/apod/archivepix.html') or $this->returnServerError('Error while downloading the website content');
     $list = explode("<br>", $html->find('b', 0)->innertext);
 
     for($i = 0; $i < 3;$i++)
@@ -25,7 +25,7 @@ class NasaApodBridge extends BridgeAbstract{
       $uri = 'http://apod.nasa.gov/apod/'.$uri_page;
       $item->uri = $uri;
 
-      $picture_html = $this->file_get_html($uri);
+      $picture_html = $this->getSimpleHTMLDOM($uri);
       $picture_html_string = $picture_html->innertext;
 
       //Extract image and explanation

+ 2 - 2
bridges/NeuviemeArtBridge.php

@@ -20,7 +20,7 @@ class NeuviemeArtBridge extends BridgeAbstract {
         }
 
         $feedUrl = 'http://www.9emeart.fr/9emeart.rss';
-        $html = $this->file_get_html($feedUrl) or $this->returnServerError('Could not request 9eme Art: '.$feedUrl);
+        $html = $this->getSimpleHTMLDOM($feedUrl) or $this->returnServerError('Could not request 9eme Art: '.$feedUrl);
         $limit = 0;
 
         foreach ($html->find('item') as $element) {
@@ -28,7 +28,7 @@ class NeuviemeArtBridge extends BridgeAbstract {
 
                 //Retrieve article Uri and get that page
                 $article_uri = $element->find('guid', 0)->plaintext;
-                $article_html = $this->file_get_html($article_uri) or $this->returnServerError('Could not request 9eme Art: '.$article_uri);
+                $article_html = $this->getSimpleHTMLDOM($article_uri) or $this->returnServerError('Could not request 9eme Art: '.$article_uri);
 
                 //Build article contents from corresponding elements
                 $article_title = trim($element->find('title', 0)->plaintext);

+ 2 - 2
bridges/NextInpactBridge.php

@@ -16,7 +16,7 @@ class NextInpactBridge extends BridgeAbstract {
 	}
 
 	private function ExtractContent($url) {
-		$html2 = $this->file_get_html($url);
+		$html2 = $this->getSimpleHTLDOM($url);
 		$text = '<p><em>'.$html2->find('span.sub_title', 0)->innertext.'</em></p>'
 			.'<p><img src="'.$html2->find('div.container_main_image_article', 0)->find('img.dedicated',0)->src.'" alt="-" /></p>'
 			.'<div>'.$html2->find('div[itemprop=articleBody]', 0)->innertext.'</div>';
@@ -27,7 +27,7 @@ class NextInpactBridge extends BridgeAbstract {
 	}
 
 	public function collectData(array $param) {
-		$html = $this->file_get_html('http://www.nextinpact.com/rss/news.xml') or $this->returnServerError('Could not request NextInpact.');
+		$html = $this->getSimpleHTMLDOM('http://www.nextinpact.com/rss/news.xml') or $this->returnServerError('Could not request NextInpact.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {

+ 4 - 4
bridges/NiceMatinBridge.php

@@ -10,21 +10,21 @@ class NiceMatinBridge extends BridgeAbstract{
 	}
 
 	private function NiceMatinExtractContent($url) {
-		$html = $this->file_get_html($url);
+		$html = $this->getSimpleHTMLDOM($url);
 		if(!$html)
 			$this->returnServerError('Could not acquire content from url: ' . $url . '!');
-		
+
 		$content = $html->find('article', 0);
 		if(!$content)
 			$this->returnServerError('Could not find \'section\'!');
-		
+
 		$text = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $content->innertext);
 		$text = strip_tags($text, '<p><a><img>');
 		return $text;
 	}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html('http://www.nicematin.com/derniere-minute/rss') or $this->returnServerError('Could not request NiceMatin.');
+		$html = $this->getSimpleHTMLDOM('http://www.nicematin.com/derniere-minute/rss') or $this->returnServerError('Could not request NiceMatin.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {

+ 1 - 1
bridges/NovelUpdatesBridge.php

@@ -26,7 +26,7 @@ class NovelUpdatesBridge extends BridgeAbstract{
       	if(strpos($thread['path'], 'series/') === FALSE)
             $this->returnClientError('You must specify the novel URL.');
         $url = 'http://www.novelupdates.com'.$thread['path'].'';
-        $fullhtml = $this->file_get_html($url) or $this->returnServerError("Could not request NovelUpdates, novel not found");
+        $fullhtml = $this->getSimpleHTMLDOM($url) or $this->returnServerError("Could not request NovelUpdates, novel not found");
         $this->request = $fullhtml->find('h4.seriestitle', 0)->plaintext;
         // dirty fix for nasty simpledom bug: https://github.com/sebsauvage/rss-bridge/issues/259
         // forcefully removes tbody

+ 0 - 1
bridges/NumeramaBridge.php

@@ -42,7 +42,6 @@ class NumeramaBridge extends BridgeAbstract{
                 $limit++;
             }
         }
-
     }
 
     public function getCacheDuration() {

+ 2 - 2
bridges/OpenClassroomsBridge.php

@@ -64,11 +64,11 @@ class OpenClassroomsBridge extends BridgeAbstract{
         {
             $this->returnServerError('Error: You must chose a category.');
         }
-    
+
         $html = '';
         $link = 'https://openclassrooms.com/courses?categories='.$param['u'].'&title=&sort=updatedAt+desc';
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request OpenClassrooms.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request OpenClassrooms.');
 
         foreach($html->find('.courseListItem') as $element) {
                 $item = new \Item();

+ 56 - 0
bridges/OpenTheoryBridge.php

@@ -0,0 +1,56 @@
+<?php
+class OpenTheoryBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "qwertygc";
+		$this->name = "Opentheory";
+		$this->uri = "http://open1theory.com";
+		$this->description = "Returns the 5 newest posts from OpenTheory (full text)";
+		$this->update = "02-08-2014";
+
+	}
+
+    public function collectData(array $param){
+
+    function StripCDATA($string) {
+    	$string = str_replace('<![CDATA[', '', $string);
+    	$string = str_replace(']]>', '', $string);
+    	return $string;
+    }
+    function ExtractContent($url) {
+	$html2 = $this->getSimpleHTMLDOM($url);
+	$text = $html2->find('div.entry-content', 0)->innertext;
+	$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
+	return $text;
+    }
+        $html = $this->getSimpleHTMLDOM('http://open1theory.com/feed') or $this->returnError('Could not request OpenTheory.', 404);
+	$limit = 0;
+
+	foreach($html->find('item') as $element) {
+	 if($limit < 5) {
+	 $item = new \Item();
+	 $item->title = StripCDATA($element->find('title', 0)->innertext);
+	 $item->uri = StripCDATA($element->find('guid', 0)->plaintext);
+	 $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+	 $item->content = ExtractContent($item->uri);
+	 $this->items[] = $item;
+	 $limit++;
+	 }
+	}
+    
+    }
+
+    public function getName(){
+        return 'OpenTheory';
+    }
+
+    public function getURI(){
+        return 'http://open1theory.com/feed';
+    }
+
+    public function getCacheDuration(){
+        return 3600; // 1 hour
+        // return 0; // 1 hour
+    }
+}

+ 9 - 9
bridges/ParuVenduImmoBridge.php

@@ -47,7 +47,7 @@ class ParuVenduImmoBridge extends BridgeAbstract
         $appartment = '&tbApp=1&tbDup=1&tbChb=1&tbLof=1&tbAtl=1&tbPla=1';
         $maison = '&tbMai=1&tbVil=1&tbCha=1&tbPro=1&tbHot=1&tbMou=1&tbFer=1';
         $link = $this->uri.'/immobilier/annonceimmofo/liste/listeAnnonces?tt=1'.$appartment.$maison;
-        
+
         if (isset($param['minarea'])) {
             $this->request .= ' '.$param['minarea'].' m2';
             $link .= '&sur0='.urlencode($param['minarea']);
@@ -56,39 +56,39 @@ class ParuVenduImmoBridge extends BridgeAbstract
         if (isset($param['maxprice'])) {
             $link .= '&px1='.urlencode($param['maxprice']);
         }
-        
+
         if (isset($param['pa'])) {
             $link .= '&pa='.urlencode($param['pa']);
         }
-        
+
         if (isset($param['lo'])) {
             $this->request .= ' In: '.$param['lo'];
             $link .= '&lo='.urlencode($param['lo']);
         }
 
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request paruvendu.');
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request paruvendu.');
 
 
         foreach($html->find('div.annonce a') as $element) {
-            
+
             if (!$element->title) {
                 continue;
             }
-            
+
             $img ='';
             foreach($element->find('span.img img') as $img) {
                 if ($img->original) {
                     $img = '<img src="'.$img->original.'" />';
                 }
             }
-            
+
             $desc = $element->find('span.desc')[0]->innertext;
             $desc = str_replace("voir l'annonce", '', $desc);
-            
+
             $price = $element->find('span.price')[0]->innertext;
 
             list($href) = explode('#', $element->href);
-            
+
             $item = new \Item();
             $item->uri = $this->uri.$href;
             $item->title = $element->title;

+ 1 - 1
bridges/PickyWallpapersBridge.php

@@ -55,7 +55,7 @@ class PickyWallpapersBridge extends BridgeAbstract {
 
             for ($page = 1; $page <= $lastpage; $page++) {
                 $link = $baseUri.'/'.$this->resolution.'/'.$this->category.'/'.(!empty($this->subcategory)?$this->subcategory.'/':'').'page-'.$page.'/';
-                $html = $this->file_get_html($link) or $this->returnServerError('No results for this query.');
+                $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('No results for this query.');
 
                 if ($page === 1) {
                     preg_match('/page-(\d+)\/$/', $html->find('.pages li a', -2)->href, $matches);

+ 18 - 18
bridges/PinterestBridge.php

@@ -38,7 +38,7 @@ class PinterestBridge extends BridgeAbstract{
     public function collectData(array $param){
         $html = '';
         if (isset($param['u']) || isset($param['b'])) {
-        
+
             if (empty($param['u']))
             {
                 $this->returnClientError('You must specify a Pinterest username (?u=...).');
@@ -48,33 +48,33 @@ class PinterestBridge extends BridgeAbstract{
             {
                 $this->returnClientError('You must specify a Pinterest board for this username (?b=...).');
             }
-            
+
             $this->username = $param['u'];
             $this->board = $param['b'];
-            $html = $this->file_get_html($this->getURI().'/'.urlencode($this->username).'/'.urlencode($this->board)) or $this->returnServerError('Username and/or board not found');
+            $html = $this->getSimpleHTMLDOM($this->getURI().'/'.urlencode($this->username).'/'.urlencode($this->board)) or $this->returnServerError('Username and/or board not found');
 
         } else if (isset($param['q']))
         {
         	$this->query = $param['q'];
-        	$html = $this->file_get_html($this->getURI().'/search/?q='.urlencode($this->query)) or $this->returnServerError('Could not request Pinterest.');
+        	$html = $this->getSimpleHTMLDOM($this->getURI().'/search/?q='.urlencode($this->query)) or $this->returnServerError('Could not request Pinterest.');
         }
-        
+
         else {
             $this->returnClientError('You must specify a Pinterest username and a board name (?u=...&b=...).');
         }
-       
-        
+
+
         foreach($html->find('div.pinWrapper') as $div)
         {
         	$a = $div->find('a.pinImageWrapper',0);
-        	
+
         	$img = $a->find('img', 0);
-        	
+
         	$item = new \Item();
         	$item->uri = $this->getURI().$a->getAttribute('href');
         	$item->content = '<img src="' . htmlentities(str_replace('/236x/', '/736x/', $img->getAttribute('src'))) . '" alt="" />';
-        	
-        	
+
+
         	if (isset($this->query))
         	{
         		$avatar = $div->find('div.creditImg', 0)->find('img', 0);
@@ -84,25 +84,25 @@ class PinterestBridge extends BridgeAbstract{
 
         		$username = $div->find('div.creditName', 0);
         		$board = $div->find('div.creditTitle', 0);
-        		
-        		$item->username =$username->innertext;	
+
+        		$item->username =$username->innertext;
         		$item->fullname = $board->innertext;
         		$item->avatar = $avatar;
-        		
+
         		$item->content .= '<br /><img align="left" style="margin: 2px 4px;" src="'.htmlentities($item->avatar).'" /> <strong>'.$item->username.'</strong>';
         		$item->content .= '<br />'.$item->fullname;
         	}
-        	
+
         	$item->title = $img->getAttribute('alt');
-        	
+
         	//$item->timestamp = $media->created_time;
         	$this->items[] = $item;
-        	
+
         }
     }
 
     public function getName(){
-    	
+
     	if (isset($this->query))
     	{
     		return $this->query .' - Pinterest';

+ 2 - 2
bridges/PlanetLibreBridge.php

@@ -10,13 +10,13 @@ class PlanetLibreBridge extends BridgeAbstract{
 	}
 
 	private function PlanetLibreExtractContent($url){
-		$html2 = $this->file_get_html($url);
+		$html2 = $this->geSimpleHTMLDOM($url);
 		$text = $html2->find('div[class="post-text"]', 0)->innertext;
 		return $text;
 	}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html('http://www.planet-libre.org/') or $this->returnServerError('Could not request PlanetLibre.');
+		$html = $this->getSimpleHTMLDOM('http://www.planet-libre.org/') or $this->returnServerError('Could not request PlanetLibre.');
 		$limit = 0;
 		foreach($html->find('div.post') as $element) {
 			if($limit < 5) {

+ 1 - 1
bridges/ProjectMGameBridge.php

@@ -14,7 +14,7 @@ class ProjectMGameBridge extends BridgeAbstract{
 
   public function collectData(array $param){
     $html = '';
-    $html = $this->file_get_html('http://projectmgame.com/en/') or $this->returnServerError('Error while downloading the Project M homepage');
+    $html = $this->getSimpleHTMLDOM('http://projectmgame.com/en/') or $this->returnServerError('Error while downloading the Project M homepage');
 
     foreach($html->find('article') as $article) {
       $item = new \Item();

+ 1 - 1
bridges/RTBFBridge.php

@@ -25,7 +25,7 @@ class RTBFBridge extends BridgeAbstract {
 		$count = 0;
 
 		if (isset($param['c'])) {
-			$html = $this->file_get_html('http://www.rtbf.be/auvio/emissions/detail?id='.$param['c']) or $this->returnServerError('Could not request RTBF.');
+			$html = $this->getSimpleHTMLDOM('http://www.rtbf.be/auvio/emissions/detail?id='.$param['c']) or $this->returnServerError('Could not request RTBF.');
 
 			foreach($html->find('section[id!=widget-ml-avoiraussi-] .rtbf-media-grid article') as $element) {
 				if($count < $limit) {

+ 53 - 0
bridges/RaymondBridge.php

@@ -0,0 +1,53 @@
+<?php
+class RaymondBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "pit-fgfjiudghdf";
+		$this->name = "Raymond";
+		$this->uri = "http://www.raymond.cc";
+		$this->description = "Returns the 3 newest posts from Raymond.cc (full text)";
+		$this->update = "2014-05-26";
+
+	}
+
+    public function collectData(array $param){
+    function raymondStripCDATA($string) {
+        $string = str_replace('<![CDATA[', '', $string);
+        $string = str_replace(']]>', '', $string);
+        return $string;
+    }
+    function raymondExtractContent($url) {
+        $html2 = $this->getSimpleHTMLDOM($url);
+        $text = $html2->find('div.entry-content', 0)->innertext;
+	$text = preg_replace('/class="ad".*/', '', $text);
+	$text = strip_tags($text, '<p><a><i><strong><em><img>');
+	$text = str_replace('(adsbygoogle = window.adsbygoogle || []).push({});', '', $text);
+        return $text;
+    }
+        $html = $this->getSimpleHTMLDOM('http://www.raymond.cc/blog/feed') or $this->returnError('Could not request raymond.', 404);
+        $limit = 0;
+        foreach($html->find('item') as $element) {
+         if($limit < 3) {
+         $item = new \Item();
+         $item->title = raymondStripCDATA($element->find('title', 0)->innertext);
+         $item->uri = raymondStripCDATA($element->find('guid', 0)->plaintext);
+         $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+         $item->content = raymondExtractContent($item->uri);
+         $this->items[] = $item;
+         $limit++;
+         }
+        }
+
+    }
+    public function getName(){
+        return 'raymond';
+    }
+    public function getURI(){
+        return 'http://www.raymond.cc/blog';
+    }
+    public function getCacheDuration(){
+        return 3600*12; // 12 hour
+    }
+}
+

+ 1 - 1
bridges/Releases3DSBridge.php

@@ -66,7 +66,7 @@ class Releases3DSBridge extends BridgeAbstract {
                         //Retrieve cover art and short desc from IGN?
                         $ignResult = false; $ignDescription = ''; $ignLink = ''; $ignDate = time(); $ignCoverArt = '';
                         $ignSearchUrl = 'http://www.ign.com/search?q='.urlencode($name);
-                        if ($ignResult = $this->file_get_html($ignSearchUrl)) {
+                        if ($ignResult = $this->getSimpleHTMLDOM($ignSearchUrl)) {
                             $ignCoverArt = $ignResult->find('div.search-item-media', 0)->find('img', 0)->src;
                             $ignDesc = $ignResult->find('div.search-item-description', 0)->plaintext;
                             $ignLink = $ignResult->find('div.search-item-sub-title', 0)->find('a', 1)->href;

+ 2 - 2
bridges/ReporterreBridge.php

@@ -10,7 +10,7 @@ class ReporterreBridge extends BridgeAbstract{
 		}
 
 		private function ExtractContentReporterre($url) {
-			$html2 = $this->file_get_html($url);
+			$html2 = $this->getSimpleHTMLDOM($url);
 
 			foreach($html2->find('div[style=text-align:justify]') as $e) {
 				$text = $e->outertext;
@@ -27,7 +27,7 @@ class ReporterreBridge extends BridgeAbstract{
 		}
 
 	public function collectData(array $param){
-		$html = $this->file_get_html('http://www.reporterre.net/spip.php?page=backend') or $this->returnServerError('Could not request Reporterre.');
+		$html = $this->getSimpleHTMLDOM('http://www.reporterre.net/spip.php?page=backend') or $this->returnServerError('Could not request Reporterre.');
 		$limit = 0;
 
 		foreach($html->find('item') as $element) {

+ 1 - 1
bridges/Rue89Bridge.php

@@ -22,7 +22,7 @@ class Rue89Bridge extends BridgeAbstract{
 
     public function collectData(array $param){
 
-        $html = $this->file_get_html('http://api.rue89.nouvelobs.com/feed') or $this->returnServerError('Could not request Rue89.');
+        $html = $this->getSimpleHTMLDOM('http://api.rue89.nouvelobs.com/feed') or $this->returnServerError('Could not request Rue89.');
 
         $limit = 0;
         foreach($html->find('item') as $element) {

+ 7 - 7
bridges/Rule34Bridge.php

@@ -25,27 +25,27 @@ class Rule34Bridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-		$page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+		$page = (int)preg_replace("/[^0-9]/",'', $param['p']);
 		$page = $page - 1;
 		$page = $page * 50;
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://rule34.xxx/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Rule34.');
+        $html = $this->getSimpleHTMLDOM("http://rule34.xxx/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Rule34.');
 
 
 	foreach($html->find('div[class=content] span') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://rule34.xxx/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));
 		$item->timestamp = time();
 		$thumbnailUri = $element->find('img', 0)->src;
 		$item->tags = $element->find('img', 0)->getAttribute('alt');
 		$item->title = 'Rule34 | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 7 - 7
bridges/Rule34pahealBridge.php

@@ -26,25 +26,25 @@ class Rule34pahealBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://rule34.paheal.net/post/list/$tags/$page") or $this->returnServerError('Could not request Rule34paheal.');
+        $html = $this->getSimpleHTMLDOM("http://rule34.paheal.net/post/list/$tags/$page") or $this->returnServerError('Could not request Rule34paheal.');
 
 
 	foreach($html->find('div[class=shm-image-list] div[class=shm-thumb]') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://rule34.paheal.net'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('img', 0)->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->find('img', 0)->getAttribute('id'));
 		$item->timestamp = time();
 		$thumbnailUri = $element->find('img', 0)->src;
 		$item->tags = $element->getAttribute('data-tags');
 		$item->title = 'Rule34paheal | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 7 - 7
bridges/SafebooruBridge.php

@@ -26,27 +26,27 @@ class SafebooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 0;$tags='';
-        if (isset($param['p'])) { 
-		$page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+		$page = (int)preg_replace("/[^0-9]/",'', $param['p']);
 		$page = $page - 1;
 		$page = $page * 40;
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://safebooru.org/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Safebooru.');
+        $html = $this->getSimpleHTMLDOM("http://safebooru.org/index.php?page=post&s=list&tags=$tags&pid=$page") or $this->returnServerError('Could not request Safebooru.');
 
 
 	foreach($html->find('div[class=content] span') as $element) {
 		$item = new \Item();
 		$item->uri = 'http://safebooru.org/'.$element->find('a', 0)->href;
-		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));	
+		$item->postid = (int)preg_replace("/[^0-9]/",'', $element->getAttribute('id'));
 		$item->timestamp = time();
 		$thumbnailUri = $element->find('img', 0)->src;
 		$item->tags = $element->find('img', 0)->getAttribute('alt');
 		$item->title = 'Safebooru | '.$item->postid;
 		$item->content = '<a href="' . $item->uri . '"><img src="' . $thumbnailUri . '" /></a><br>Tags: '.$item->tags;
-		$this->items[] = $item; 
+		$this->items[] = $item;
 	}
     }
 

+ 7 - 7
bridges/SakugabooruBridge.php

@@ -25,18 +25,18 @@ class SakugabooruBridge extends BridgeAbstract{
 
     public function collectData(array $param){
 	$page = 1;$tags='';
-        if (isset($param['p'])) { 
-            $page = (int)preg_replace("/[^0-9]/",'', $param['p']); 
+        if (isset($param['p'])) {
+            $page = (int)preg_replace("/[^0-9]/",'', $param['p']);
         }
-        if (isset($param['t'])) { 
-            $tags = urlencode($param['t']); 
+        if (isset($param['t'])) {
+            $tags = urlencode($param['t']);
         }
-        $html = $this->file_get_html("http://sakuga.yshi.org/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Sakugabooru.');
+        $html = $this->getSimpleHTMLDOM("http://sakuga.yshi.org/post?page=$page&tags=$tags") or $this->returnServerError('Could not request Sakugabooru.');
 	$input_json = explode('Post.register(', $html);
 	foreach($input_json as $element)
 	 $data[] = preg_replace('/}\)(.*)/', '}', $element);
 	unset($data[0]);
-    
+
         foreach($data as $datai) {
 	    $json = json_decode($datai, TRUE);
             $item = new \Item();
@@ -45,7 +45,7 @@ class SakugabooruBridge extends BridgeAbstract{
             $item->timestamp = $json['created_at'];
             $item->imageUri = $json['file_url'];
             $item->title = 'Sakugabooru | '.$json['id'];
-            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags']; 
+            $item->content = '<a href="' . $item->imageUri . '"><img src="' . $json['preview_url'] . '" /></a><br>Tags: '.$json['tags'];
             $this->items[] = $item;
         }
     }

+ 54 - 0
bridges/ScilogsBridge.php

@@ -0,0 +1,54 @@
+<?php
+class ScilogsBridge extends BridgeAbstract{
+
+		public function loadMetadatas() {
+
+			$this->maintainer = "qwertygc";
+			$this->name = "Scilogs Bridge";
+			$this->uri = "http://www.scilogs.fr/";
+			$this->description = "Returns the newest articles.";
+			$this->update = "2014-05-25";
+
+		}
+
+        public function collectData(array $param){
+
+			function ScilogsStripCDATA($string) {
+			$string = str_replace('<![CDATA[', '', $string);
+			$string = str_replace(']]>', '', $string);
+			return $string;
+		}
+		function ScilogsExtractContent($url) {
+		$html2 = $this->getSimpleHTMLDOM($url);
+		$text = $html2->find('div.entrybody', 0)->innertext;
+		return $text;
+		}
+		$html = $this->getSimpleHTMLDOM('http://www.scilogs.fr/?wpmu-feed=posts') or $this->returnError('Could not request Scilogs.', 404);
+		$limit = 0;
+
+		foreach($html->find('item') as $element) {
+		 if($limit < 10) {
+		 $item = new \Item();
+		 $item->title = ScilogsStripCDATA($element->find('title', 0)->innertext);
+		 $item->uri = ScilogsStripCDATA($element->find('guid', 0)->plaintext);
+		 $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+		 $item->content = ScilogsExtractContent($item->uri);
+		 $this->items[] = $item;
+		 $limit++;
+		 }
+		}
+    
+    }
+
+    public function getName(){
+        return 'Scilogs Bridge';
+    }
+
+    public function getURI(){
+        return 'http://scilogs.fr/';
+    }
+
+    public function getCacheDuration(){
+        return 3600*2; // 2 hours
+    }
+}

+ 7 - 7
bridges/ScmbBridge.php

@@ -10,20 +10,20 @@ class ScmbBridge extends BridgeAbstract{
 		$this->update = '2016-08-17';
 
 	}
-    
+
     public function collectData(array $param){
         $html = '';
-        $html = $this->file_get_html('http://secouchermoinsbete.fr/') or $this->returnServerError('Could not request Se Coucher Moins Bete.');
-    
+        $html = $this->getSimpleHTMLDOM('http://secouchermoinsbete.fr/') or $this->returnServerError('Could not request Se Coucher Moins Bete.');
+
         foreach($html->find('article') as $article) {
         	$item = new \Item();
 			$item->uri = 'http://secouchermoinsbete.fr'.$article->find('p.summary a',0)->href;
 			$item->title = $article->find('header h1 a',0)->innertext;
-			
+
 			$article->find('span.read-more',0)->outertext=''; // remove text "En savoir plus" from anecdote content
 			$content = $article->find('p.summary a',0)->innertext;
 			$content =substr($content,0,strlen($content)-17); // remove superfluous spaces at the end
-			
+
 			// get publication date
 			$str_date = $article->find('time',0)->datetime;
 			list($date, $time) = explode(' ', $str_date);
@@ -31,8 +31,8 @@ class ScmbBridge extends BridgeAbstract{
 			list($h, $i) = explode(':', $time);
 			$timestamp = mktime($h,$i,0,$m,$d,$y);
 			$item->timestamp = $timestamp;
-			
-			
+
+
 			$item->content = $content;
 			$this->items[] = $item;
 		}

+ 3 - 3
bridges/ScoopItBridge.php

@@ -24,9 +24,9 @@ class ScoopItBridge extends BridgeAbstract{
         if ($param['u'] != '') {
             $this->request = $param['u'];
             $link = 'http://scoop.it/search?q=' .urlencode($this->request);
-            
-            $html = $this->file_get_html($link) or $this->returnServerError('Could not request ScoopIt. for : ' . $link);
-            
+
+            $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request ScoopIt. for : ' . $link);
+
             foreach($html->find('div.post-view') as $element) {
                 $item = new Item();
                 $item->uri = $element->find('a', 0)->href;

+ 55 - 0
bridges/SegfaultMintBridge.php

@@ -0,0 +1,55 @@
+<?php
+class SegfaultMintBridge extends BridgeAbstract{
+
+	public function loadMetadatas() {
+
+		$this->maintainer = "qwertygc";
+		$this->name = "SegfaultMint";
+		$this->uri = "http://segfault.linuxmint.com/";
+		$this->description = "Returns the 5 newest posts from SegfaultMint (full text)";
+		$this->update = "2014-07-05";
+
+	}
+
+    public function collectData(array $param){
+
+    function StripCDATA($string) {
+    	$string = str_replace('<![CDATA[', '', $string);
+    	$string = str_replace(']]>', '', $string);
+    	return $string;
+    }
+    function ExtractContent($url) {
+	$html2 = $this->getSimpleHTMLDOM($url);
+	$text = $html2->find('div.post-bodycopy', 0)->innertext;
+	$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
+	return $text;
+    }
+        $html = $this->getSimpleHTMLDOM('http://segfault.linuxmint.com/feed/') or $this->returnError('Could not request segfault.', 404);
+	$limit = 0;
+
+	foreach($html->find('item') as $element) {
+	 if($limit < 5) {
+	 $item = new \Item();
+	 $item->title = StripCDATA($element->find('title', 0)->innertext);
+	 $item->uri = StripCDATA($element->find('guid', 0)->plaintext);
+	 $item->timestamp = strtotime($element->find('pubDate', 0)->plaintext);
+	 $item->content = ExtractContent($item->uri);
+	 $this->items[] = $item;
+	 $limit++;
+	 }
+	}
+    
+    }
+
+    public function getName(){
+        return 'Segfault Mint';
+    }
+
+    public function getURI(){
+        return 'http://segfault.linuxmint.com/feed/';
+    }
+
+    public function getCacheDuration(){
+        return 3600*24; // 24 hours
+    }
+}

+ 7 - 7
bridges/Sexactu.php

@@ -15,10 +15,10 @@ class Sexactu extends BridgeAbstract{
 $find = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'novembre', 'décembre');
 $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
 
-    $html = $this->file_get_html($this->getURI()) or $this->returnServerError('Could not request '.$this->getURI());
+    $html = $this->getSimpleHTMLDOM($this->getURI()) or $this->returnServerError('Could not request '.$this->getURI());
 
         foreach($html->find('.content-holder') as $contentHolder) {
-            // only use first list as second one only contains pages numbers 
+            // only use first list as second one only contains pages numbers
             $articles = $contentHolder->find('ul', 0);
             foreach($articles->find('li') as $element) {
                 // if you ask about that method_exists, there seems to be a bug in simple html dom
@@ -38,7 +38,7 @@ $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July',
                         $dateText = $titleTimestamp->innertext;
                         $dateText = substr($dateText, strpos($dateText,',')+1);
                         $dateText = str_replace($find, $replace, strtolower($dateText));
-                        $date = strtotime($dateText); 
+                        $date = strtotime($dateText);
                         $item->timestamp = $date;
 
                         $item->author = "Maïa Mazaurette";
@@ -50,9 +50,9 @@ $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July',
                         $item->content = $elementText->innertext;
                         $this->items[] = $item;
                     }
-                    
+
                 }
-                
+
             }
         }
     }
@@ -64,7 +64,7 @@ $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July',
     public function getCacheDuration(){
         return 7200; // 2h hours
     }
-    
+
     private function correctCase($str) {
         $sentences=explode('.', mb_strtolower($str, "UTF-8"));
         $str="";
@@ -73,7 +73,7 @@ $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July',
         {
            //upper case first char
            $sentence=ucfirst(trim($sentence));
-        
+
            //append sentence to output
            $str=$str.$sep.$sentence;
            $sep=". ";

+ 2 - 2
bridges/SiliconBridge.php

@@ -20,7 +20,7 @@ class SiliconBridge extends BridgeAbstract {
         }
 
         $feedUrl = 'http://www.silicon.fr/feed';
-        $html = $this->file_get_html($feedUrl) or $this->returnServerError('Could not request Silicon: '.$feedUrl);
+        $html = $this->getSimpleHTMLDOM($feedUrl) or $this->returnServerError('Could not request Silicon: '.$feedUrl);
         $limit = 0;
 
         foreach($html->find('item') as $element) {
@@ -30,7 +30,7 @@ class SiliconBridge extends BridgeAbstract {
                 $article_uri = $element->innertext;
                 $article_uri = substr($article_uri, strpos($article_uri, '<link>') + 6);
                 $article_uri = substr($article_uri, 0, strpos($article_uri, '</link>'));
-                $article_html = $this->file_get_html($article_uri) or $this->returnServerError('Could not request Silicon: '.$article_uri);
+                $article_html = $this->getSimpleHTMLDOM($article_uri) or $this->returnServerError('Could not request Silicon: '.$article_uri);
 
                 //Build article contents from corresponding elements
                 $thumbnailUri = $element->find('enclosure', 0)->url;

+ 1 - 1
bridges/StripeAPIChangeLogBridge.php

@@ -16,7 +16,7 @@ class StripeAPIChangeLogBridge extends BridgeAbstract{
   }
 
   public function collectData(array $param){
-    $html = $this->file_get_html('https://stripe.com/docs/upgrades')
+    $html = $this->getSimpleHTMLDOM('https://stripe.com/docs/upgrades')
       or $this->returnServerError('No results for Stripe API Changelog');
 
 

+ 2 - 2
bridges/SuperbWallpapersBridge.php

@@ -47,12 +47,12 @@ class SuperbWallpapersBridge extends BridgeAbstract {
 
         // Get last page number
         $link = $baseUri.'/'.$this->category.'/9999.html';
-        $html = $this->file_get_html($link);
+        $html = $this->getSimpleHTMLDOM($link);
         $lastpage = min($html->find('.paging .cpage', 0)->innertext(), ceil($max/36));
 
         for ($page = 1; $page <= $lastpage; $page++) {
             $link = $baseUri.'/'.$this->category.'/'.$page.'.html';
-            $html = $this->file_get_html($link) or $this->returnServerError('No results for this query.');
+            $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('No results for this query.');
 
             foreach($html->find('.wpl .i a') as $element) {
                 $thumbnail = $element->find('img', 0);

+ 2 - 2
bridges/T411Bridge.php

@@ -36,7 +36,7 @@ class T411Bridge extends BridgeAbstract {
 
         //Retrieve torrent listing from search results, which does not contain torrent description
         $url = $this->uri.'torrents/search/?'.$param['search'].'&order=added&type=desc';
-        $html = $this->file_get_html($url) or $this->returnServerError('Could not request t411: '.$url);
+        $html = $this->getSimpleHTMLDOM($url) or $this->returnServerError('Could not request t411: '.$url);
         $results = $html->find('table.results', 0);
         if (is_null($results))
             $this->returnServerError('No results from t411: '.$url);
@@ -57,7 +57,7 @@ class T411Bridge extends BridgeAbstract {
                 $item_date = strtotime($element->find('dd', 0)->plaintext);
 
                 //Retrieve full description from torrent page
-                if ($item_html = $this->file_get_html($item_uri)) {
+                if ($item_html = $this->getSimpleHTMLDOM($item_uri)) {
 
                     //Retrieve data from page contents
                     $item_desc = $item_html->find('div.description', 0);

+ 3 - 3
bridges/TagBoardBridge.php

@@ -23,8 +23,8 @@ class TagBoardBridge extends BridgeAbstract{
         $html = '';
         $this->request = $param['u'];
         $link = 'https://post-cache.tagboard.com/search/' .$this->request;
-		
-        $html = $this->file_get_html($link) or $this->returnServerError('Could not request TagBoard for : ' . $link);
+
+        $html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request TagBoard for : ' . $link);
         $parsed_json = json_decode($html);
 
         foreach($parsed_json->{'posts'} as $element) {
@@ -49,4 +49,4 @@ class TagBoardBridge extends BridgeAbstract{
         return 21600; // 6 hours
     }
 }
-							
+

Some files were not shown because too many files changed in this diff