summaryrefslogtreecommitdiff
path: root/bridges/MediapartBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/MediapartBridge.php')
-rw-r--r--bridges/MediapartBridge.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/bridges/MediapartBridge.php b/bridges/MediapartBridge.php
new file mode 100644
index 0000000..15d1d3e
--- /dev/null
+++ b/bridges/MediapartBridge.php
@@ -0,0 +1,60 @@
+<?php
+
+class MediapartBridge extends FeedExpander {
+ const MAINTAINER = 'killruana';
+ const NAME = 'Mediapart Bridge';
+ const URI = 'https://www.mediapart.fr/';
+ const PARAMETERS = array(
+ array(
+ 'single_page_mode' => array(
+ 'name' => 'Single page article',
+ 'type' => 'checkbox',
+ 'title' => 'Display long articles on a single page',
+ 'defaultValue' => 'checked'
+ ),
+ 'mpsessid' => array(
+ 'name' => 'MPSESSID',
+ 'type' => 'text',
+ 'title' => 'Value of the session cookie MPSESSID'
+ )
+ )
+ );
+ const CACHE_TIMEOUT = 7200; // 2h
+ const DESCRIPTION = 'Returns the newest articles.';
+
+ public function collectData() {
+ $url = self::URI . 'articles/feed';
+ $this->collectExpandableDatas($url);
+ }
+
+ protected function parseItem($newsItem) {
+ $item = parent::parseItem($newsItem);
+
+ // Enable single page mode?
+ if ($this->getInput('single_page_mode') === true) {
+ $item['uri'] .= '?onglet=full';
+ }
+
+ // If a session cookie is defined, get the full article
+ $mpsessid = $this->getInput('mpsessid');
+ if (!empty($mpsessid)) {
+ // Set the session cookie
+ $opt = array();
+ $opt[CURLOPT_COOKIE] = 'MPSESSID=' . $mpsessid;
+
+ // Get the page
+ $articlePage = getSimpleHTMLDOM(
+ $newsItem->link . '?onglet=full',
+ array(),
+ $opt);
+
+ // Extract the article content
+ $content = $articlePage->find('div.content-article', 0)->innertext;
+ $content = sanitize($content);
+ $content = defaultLinkTo($content, static::URI);
+ $item['content'] .= $content;
+ }
+
+ return $item;
+ }
+}