rss-bridge/bridges/NautiljonBridge.php

56 lines
2 KiB
PHP
Raw Normal View History

2022-12-08 22:48:10 +03:00
<?php
class NautiljonBridge extends BridgeAbstract
{
const NAME = 'Nautiljon Bridge';
const URI = 'https://www.nautiljon.com';
const DESCRIPTION = 'Actualités et Brèves de Nautiljon. Nécessite une version NSS de cURL pour fonctionner.';
const MAINTAINER = 'papjul';
const PARAMETERS = [
[
'type' => [
'type' => 'list',
'name' => 'Type',
'title' => 'Choisir le type',
'values' => [
'Actualités' => 'actualite',
'Brèves' => 'breves',
],
]
]
];
private function formatDate($fright)
{
preg_match('#^(.*)</a>(.*)<a(.*)$#', $fright, $matches);
if ($matches) {
$frenchFormat = trim($matches[2]);
$englishFormat = str_replace(['aujourd\'hui', 'hier', 'à', 'le', '-'], ['today', 'yesterday', '', '', ''], $frenchFormat);
$englishFormat = preg_replace('#([0-9]{2})/([0-9]{2})/([0-9]{4})#', '$2/$1/$3', $englishFormat);
return strtotime($englishFormat);
} else {
return null;
}
}
public function collectData()
{
$url = sprintf('https://www.nautiljon.com/%s/', $this->getInput('type'));
$dom = getSimpleHTMLDOM($url);
foreach ($dom->find('div.une_actu') as $article) {
$fright = $article->find('span.fright', 0);
$this->items[] = [
'title' => $article->find('h3 a', 0)->plaintext,
'uri' => self::URI . $article->find('h3 a', 0)->href,
'content' => $article->find('p', 0)->plaintext,
'author' => $fright->find('a', 0)->plaintext,
'categories' => [($fright->find('a')[1])->plaintext],
'enclosures' => [self::URI . $article->find('a img', 0)->src],
'timestamp' => $this->formatDate($article->find('span.fright', 0)),
];
}
}
}