2022-01-30 11:52:00 +03:00
|
|
|
<?php
|
|
|
|
|
2022-07-01 16:10:30 +03:00
|
|
|
class CdactionBridge extends BridgeAbstract
|
|
|
|
{
|
|
|
|
const NAME = 'CD-ACTION bridge';
|
|
|
|
const URI = 'https://cdaction.pl';
|
|
|
|
const DESCRIPTION = 'Fetches the latest posts from given category.';
|
|
|
|
const MAINTAINER = 'tomaszkane';
|
|
|
|
const PARAMETERS = [ [
|
|
|
|
'category' => [
|
|
|
|
'name' => 'Kategoria',
|
|
|
|
'type' => 'list',
|
|
|
|
'values' => [
|
|
|
|
'Najnowsze (wszystkie)' => 'najnowsze',
|
|
|
|
'Newsy' => 'newsy',
|
|
|
|
'Recenzje' => 'recenzje',
|
|
|
|
'Teksty' => [
|
|
|
|
'Publicystyka' => 'publicystyka',
|
|
|
|
'Zapowiedzi' => 'zapowiedzi',
|
|
|
|
'Już graliśmy' => 'juz-gralismy',
|
|
|
|
'Poradniki' => 'poradniki',
|
|
|
|
],
|
|
|
|
'Kultura' => 'kultura',
|
|
|
|
'Wideo' => 'wideo',
|
|
|
|
'Czasopismo' => 'czasopismo',
|
|
|
|
'Technologie' => [
|
|
|
|
'Artykuły' => 'artykuly',
|
|
|
|
'Testy' => 'testy',
|
|
|
|
],
|
|
|
|
'Na luzie' => [
|
|
|
|
'Konkursy' => 'konkursy',
|
|
|
|
'Nadgodziny' => 'nadgodziny',
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]]
|
|
|
|
];
|
2022-01-30 11:52:00 +03:00
|
|
|
|
2022-07-01 16:10:30 +03:00
|
|
|
public function collectData()
|
|
|
|
{
|
|
|
|
$html = getSimpleHTMLDOM($this->getURI() . '/' . $this->getInput('category'));
|
2022-01-30 11:52:00 +03:00
|
|
|
|
2022-07-01 16:10:30 +03:00
|
|
|
$newsJson = $html->find('script#__NEXT_DATA__', 0)->innertext;
|
|
|
|
if (!$newsJson = json_decode($newsJson)) {
|
|
|
|
return;
|
|
|
|
}
|
2022-01-30 11:52:00 +03:00
|
|
|
|
2022-07-01 16:10:30 +03:00
|
|
|
$queriesIndex = $this->getInput('category') === 'najnowsze' ? 0 : 1;
|
|
|
|
foreach ($newsJson->props->pageProps->dehydratedState->queries[$queriesIndex]->state->data->results as $news) {
|
|
|
|
$item = [];
|
|
|
|
$item['uri'] = $this->getURI() . '/' . $news->category->slug . '/' . $news->slug;
|
|
|
|
$item['title'] = $news->title;
|
|
|
|
$item['timestamp'] = $news->publishedAt;
|
|
|
|
$item['author'] = $news->editor->fullName;
|
|
|
|
$item['content'] = $news->lead;
|
|
|
|
$item['enclosures'][] = $news->bannerUrl;
|
|
|
|
$item['categories'] = array_column($news->tags, 'name');
|
|
|
|
$item['uid'] = $news->id;
|
2022-01-30 11:52:00 +03:00
|
|
|
|
2022-07-01 16:10:30 +03:00
|
|
|
$this->items[] = $item;
|
|
|
|
}
|
|
|
|
}
|
2022-01-30 11:52:00 +03:00
|
|
|
}
|