Browse Source

[BlaguesDeMerdeBridge] Adjust to layout changes

References #767
logmanoriginal 5 years ago
parent
commit
c305c1ded7
1 changed files with 27 additions and 15 deletions
  1. 27 15
      bridges/BlaguesDeMerdeBridge.php

+ 27 - 15
bridges/BlaguesDeMerdeBridge.php

@@ -1,31 +1,43 @@
 <?php
 class BlaguesDeMerdeBridge extends BridgeAbstract {
 
-	const MAINTAINER = 'superbaillot.net';
+	const MAINTAINER = 'superbaillot.net, logmanoriginal';
 	const NAME = 'Blagues De Merde';
 	const URI = 'http://www.blaguesdemerde.fr/';
 	const CACHE_TIMEOUT = 7200; // 2h
 	const DESCRIPTION = 'Blagues De Merde';
 
 	public function collectData(){
+
 		$html = getSimpleHTMLDOM(self::URI)
 			or returnServerError('Could not request BDM.');
 
-		foreach($html->find('article.joke_contener') as $element) {
+		foreach($html->find('div.blague') as $element) {
+
 			$item = array();
-			$temp = $element->find('a');
-
-			if(isset($temp[2])) {
-				$item['content'] = trim($element->find('div.joke_text_contener', 0)->innertext);
-				$uri = $temp[2]->href;
-				$item['uri'] = $uri;
-				$item['title'] = substr($uri, (strrpos($uri, '/') + 1));
-				$date = $element->find('li.bdm_date', 0)->innertext;
-				$time = mktime(0, 0, 0, substr($date, 3, 2), substr($date, 0, 2), substr($date, 6, 4));
-				$item['timestamp'] = $time;
-				$item['author'] = $element->find('li.bdm_pseudo', 0)->innertext;
-				$this->items[] = $item;
-			}
+
+			$item['uri'] = static::URI . '#' . $element->id;
+			$item['author'] = $element->find('div[class="blague-footer"] p strong', 0)->plaintext;
+
+			// Let the title be everything up to the first <br>
+			$item['title'] = trim(explode("\n", $element->find('div.text', 0)->plaintext)[0]);
+
+			$item['content'] = strip_tags($element->find('div.text', 0));
+
+			// timestamp is part of:
+			// <p>Par <strong>{author}</strong> le {date} dans <strong>{category}</strong></p>
+			preg_match(
+				'/.+le(.+)dans.*/',
+				$element->find('div[class="blague-footer"]', 0)->plaintext,
+				$matches
+			);
+
+			$item['timestamp'] = strtotime($matches[1]);
+
+			$this->items[] = $item;
+
 		}
+
 	}
+
 }