[ 'language' => [ 'name' => 'Language', 'type' => 'list', 'title' => 'Select your language', 'values' => [ 'English' => 'en', 'German' => 'de' ], 'defaultValue' => 'English' ], 'type' => [ 'name' => 'Type', 'type' => 'list', 'title' => 'Select your content type', 'values' => [ 'None' => '/', 'Facebook' => '/ffdts', 'Images' => '/images', 'Videos' => '/videos', 'Gifs' => '/gifs' ], 'defaultValue' => 'None' ] ] ]; public function getURI() { if (is_null($this->getInput('language'))) { return parent::getURI(); } // e.g.: https://en.webfail.com return 'https://' . $this->getInput('language') . '.webfail.com'; } public function collectData() { $html = getSimpleHTMLDOM($this->getURI() . $this->getInput('type')); $type = $this->getKey('type'); switch (strtolower($type)) { case 'facebook': case 'videos': $this->extractNews($html, $type); break; case 'none': case 'images': case 'gifs': $this->extractArticle($html); break; default: returnClientError('Unknown type: ' . $type); } } private function extractNews($html, $type) { $news = $html->find('#main', 0)->find('a.wf-list-news'); foreach ($news as $element) { $item = []; $item['title'] = $this->fixTitle($element->find('div.wf-news-title', 0)->innertext); $item['uri'] = $this->getURI() . $element->href; $img = $element->find('img.wf-image', 0)->src; // Load high resolution image for 'facebook' switch (strtolower($type)) { case 'facebook': $img = $this->getImageHiResUri($item['uri']); break; default: } $description = ''; if (!is_null($element->find('div.wf-news-description', 0))) { $description = $element->find('div.wf-news-description', 0)->innertext; } $infoElement = $element->find('div.wf-small', 0); if (!is_null($infoElement)) { if (preg_match('/(\d{2}\.\d{2}\.\d{4})/m', $infoElement->innertext, $matches) === 1 && count($matches) == 2) { $dt = DateTime::createFromFormat('!d.m.Y', $matches[1]); if ($dt !== false) { $item['timestamp'] = $dt->getTimestamp(); } } } $item['content'] = '
' . $description . '