diff --git a/bridges/WebfailBridge.php b/bridges/WebfailBridge.php new file mode 100644 index 00000000..bf2e47af --- /dev/null +++ b/bridges/WebfailBridge.php @@ -0,0 +1,134 @@ + array( + 'language' => array( + 'name' => 'Language', + 'type' => 'list', + 'title' => 'Select your language', + 'values' => array( + 'English' => 'en', + 'German' => 'de' + ), + 'defaultValue' => 'English' + ), + 'type' => array( + 'name' => 'Type', + 'type' => 'list', + 'title' => 'Select your content type', + 'values' => array( + 'None' => '/', + 'Facebook' => '/ffdts', + 'Images' => '/images', + 'Videos' => '/videos', + 'Gifs' => '/gifs' + ), + 'defaultValue' => 'None' + ) + ) + ); + + public function getURI(){ + if(is_null($this->getInput('language'))) + return self::URI; + + // e.g.: https://en.webfail.com + return 'https://' . $this->getInput('language') . '.webfail.com'; + } + + public function collectData(){ + $html = getSimpleHTMLDOM($this->getURI() . $this->getInput('type')); + + $type = array_search($this->getInput('type') + , self::PARAMETERS[$this->queriedContext]['type']['values']); + + 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 = array(); + $item['title'] = $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; + } + + $item['content'] = '
' + . $description + . '