0
0
mirror of https://github.com/RSS-Bridge/rss-bridge.git synced 2024-11-23 07:37:35 +00:00
RSS-Bridge_rss-bridge/bridges/TestFaktaBridge.php
Arnav Jain 082542dabc
[TestFaktaBridge] new bridge (#4307)
* [TestFaktaBridge] new bridge

* [TestFaktaBridge] fix linting errors
2024-11-03 18:22:44 +01:00

101 lines
3.3 KiB
PHP

<?PHP
class TestFaktaBridge extends BridgeAbstract
{
const NAME = 'Testfakta';
const URI = 'https://www.testfakta.se';
const DESCRIPTION = 'Letest independent tests by Testfakta';
const MAINTAINER = 'ajain-93';
public function getIcon()
{
return self::URI . '/themes/testfakta/favicon.ico';
}
private function parseSwedishDates($dateString)
{
// Mapping of Swedish month names to English month names
$months = [
'Jan' => 'Jan',
'Feb' => 'Feb',
'Mar' => 'Mar',
'Apr' => 'Apr',
'Maj' => 'May',
'Jun' => 'Jun',
'Jul' => 'Jul',
'Aug' => 'Aug',
'Sep' => 'Sep',
'Okt' => 'Oct',
'Nov' => 'Nov',
'Dec' => 'Dec'
];
// Replace Swedish month names with English
$dateString = preg_replace_callback(
'/\b(' . implode('|', array_keys($months)) . ')\b/',
function ($matches) use ($months) {
return $months[$matches[0]];
},
$dateString
);
// Create DateTime object
$dateValue = DateTime::createFromFormat(
'd M, Y',
trim($dateString),
new DateTimeZone('Europe/Stockholm')
);
if ($dateValue) {
$dateValue->setTime(0, 0); // Set time to 00:00
return $dateValue->getTimestamp();
}
return $dateValue ? $dateValue->getTimestamp() : false;
}
public function collectData()
{
$NEWSURL = self::URI . '/sv';
$html = getSimpleHTMLDOMCached($NEWSURL, 18000) or
returnServerError('Could not request: ' . $NEWSURL);
foreach ($html->find('.row-container') as $element) {
// Debug::log($element);
$title = $element->find('h2', 0)->plaintext;
$category = trim($element->find('.red-label', 0)->plaintext);
$url = self::URI . $element->find('a', 0)->getAttribute('href');
$figure = $element->find('img', 0);
$preamble = trim($element->find('.text', 0)->plaintext);
$article_html = getSimpleHTMLDOMCached($url, 18000) or
returnServerError('Could not request: ' . $url);
$article_content = $article_html->find('div.content', 0);
$article_text = $article_html->find('article', 0);
$requestor = $article_html->find('div.uppdrag', 0)->plaintext;
$author = trim($article_html->find('span.name', 0)->plaintext);
$published = $this->parseSwedishDates(
str_replace(
'Publicerad: ',
'',
trim($article_html->find('span.created', 0)->plaintext)
)
);
$content = $figure . '<br/>';
$content .= '<b>' . strtoupper($category) . '</b> ' . $requestor . '<br/><br/>';
$content .= '<b><i>' . $preamble . '</i></b><br/><br/>';
$content .= $article_text;
$this->items[] = [
'uri' => $url,
'title' => $title,
'author' => $author,
'timestamp' => $published,
'content' => trim($content),
];
}
}
}