mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-12-23 21:00:24 +03:00
63 lines
2.6 KiB
PHP
63 lines
2.6 KiB
PHP
<?php
|
|
|
|
class DemosBerlinBridge extends BridgeAbstract
|
|
{
|
|
const NAME = 'Demos Berlin';
|
|
const URI = 'https://www.berlin.de/polizei/service/versammlungsbehoerde/versammlungen-aufzuege/';
|
|
const CACHE_TIMEOUT = 3 * 60 * 60;
|
|
const DESCRIPTION = 'Angezeigte Versammlungen und Aufzüge in Berlin';
|
|
const MAINTAINER = 'knrdl';
|
|
const PARAMETERS = [[
|
|
'days' => [
|
|
'name' => 'Tage',
|
|
'type' => 'number',
|
|
'title' => 'Einträge für die nächsten Tage zurückgeben',
|
|
'required' => true,
|
|
'defaultValue' => 7,
|
|
]
|
|
]];
|
|
|
|
public function getIcon()
|
|
{
|
|
return 'https://www.berlin.de/i9f/r1/images/favicon/favicon.ico';
|
|
}
|
|
|
|
public function collectData()
|
|
{
|
|
$url = 'https://www.berlin.de/polizei/service/versammlungsbehoerde/versammlungen-aufzuege/index.php/index/all.json';
|
|
$json = getContents($url);
|
|
$jsonFile = json_decode($json, true);
|
|
|
|
$daysInterval = DateInterval::createFromDateString($this->getInput('days') . ' day');
|
|
$maxTargetDate = date_add(new DateTime('now'), $daysInterval);
|
|
|
|
foreach ($jsonFile['index'] as $entry) {
|
|
$entryDay = implode('-', array_reverse(explode('.', $entry['datum']))); // dd.mm.yyyy to yyyy-mm-dd
|
|
$ts = (new DateTime())->setTimestamp(strtotime($entryDay));
|
|
if ($ts <= $maxTargetDate) {
|
|
$item = [];
|
|
$item['uri'] = 'https://www.berlin.de/polizei/service/versammlungsbehoerde/versammlungen-aufzuege/index.php/detail/' . $entry['id'];
|
|
$item['timestamp'] = $entryDay . ' ' . $entry['von'];
|
|
$item['title'] = $entry['thema'];
|
|
$location = $entry['strasse_nr'] . ' ' . $entry['plz'];
|
|
$locationQuery = http_build_query(['query' => $location]);
|
|
$item['content'] = <<<HTML
|
|
<h1>{$entry['thema']}</h1>
|
|
<p>📅 <time datetime="{$item['timestamp']}">{$entry['datum']} {$entry['von']} - {$entry['bis']}</time></p>
|
|
<a href="https://www.openstreetmap.org/search?$locationQuery">
|
|
📍 {$location}
|
|
</a>
|
|
<p>{$entry['aufzugsstrecke']}</p>
|
|
HTML;
|
|
$item['uid'] = $this->getSanitizedHash($entry['datum'] . '-' . $entry['von'] . '-' . $entry['bis'] . '-' . $entry['thema']);
|
|
|
|
$this->items[] = $item;
|
|
}
|
|
}
|
|
}
|
|
|
|
private function getSanitizedHash($string)
|
|
{
|
|
return hash('sha1', preg_replace('/[^a-zA-Z0-9]/', '', strtolower($string)));
|
|
}
|
|
}
|