Mise à jour du bridge pour WorldOfTanks (#527)

* Mise à jour de l'un de mes bridges fétiches
This commit is contained in:
Nicolas Delsaux 2018-04-22 12:58:07 +02:00 committed by Teromene
parent b0c7a62f74
commit e60b5ab193

View file

@ -1,16 +1,12 @@
<?php <?php
class WorldOfTanksBridge extends BridgeAbstract { class WorldOfTanksBridge extends FeedExpander {
const MAINTAINER = 'mitsukarenai'; const MAINTAINER = 'Riduidel';
const NAME = 'World of Tanks'; const NAME = 'World of Tanks';
const URI = 'http://worldoftanks.eu/'; const URI = 'http://worldoftanks.eu/';
const DESCRIPTION = 'News about the tank slaughter game.'; const DESCRIPTION = 'News about the tank slaughter game.';
const PARAMETERS = array( array( const PARAMETERS = array( array(
'category' => array(
// TODO: should be a list
'name' => 'nom de la catégorie'
),
'lang' => array( 'lang' => array(
'name' => 'Langue', 'name' => 'Langue',
'type' => 'list', 'type' => 'list',
@ -26,47 +22,31 @@ class WorldOfTanksBridge extends BridgeAbstract {
) )
)); ));
private $title = ''; public function collectData() {
$this->collectExpandableDatas(sprintf('https://worldoftanks.eu/%s/rss/news/', $this->getInput('lang')));
}
public function getURI(){ protected function parseItem($newsItem){
if(!is_null($this->getInput('lang'))) { $item = parent::parseItem($newsItem);
$lang = $this->getInput('lang'); $item['content'] = $this->loadFullArticle($item['uri']);
$uri = self::URI . $lang . '/news/'; return $item;
if(!empty($this->getInput('category'))) { }
$uri .= 'pc-browser/' . $this->getInput('category') . '/';
} /**
return $uri; * Loads the full article and returns the contents
* @param $uri The article URI
* @return The article content
*/
private function loadFullArticle($uri){
$html = getSimpleHTMLDOMCached($uri);
$content = $html->find('article', 0);
// Remove the scripts, please
foreach($content->find('script') as $script) {
$script->outertext = '';
} }
return parent::getURI(); return $content->innertext;
}
public function getName(){
return $this->title ?: parent::getName();
}
public function collectData(){
$html = getSimpleHTMLDOM($this->getURI())
or returnServerError('Could not request ' . $this->getURI());
debugMessage("loaded HTML from " . $this->getURI());
// customize name
$this->title = $html->find('title', 0)->innertext;
foreach($html->find('.b-imgblock_ico') as $infoLink) {
$this->parseLine($infoLink);
}
}
private function parseLine($infoLink){
$item = array();
$item['uri'] = self::URI . $infoLink->href;
// now load that uri from cache
debugMessage('loading page ' . $item['uri']);
$articlePage = getSimpleHTMLDOMCached($item['uri']);
$content = $articlePage->find('.l-content', 0);
defaultLinkTo($content, self::URI);
$item['title'] = $content->find('h1', 0)->innertext;
$item['content'] = $content->find('.b-content', 0)->innertext;
$item['timestamp'] = $content->find('.b-statistic_time', 0)->getAttribute("data-timestamp");
$this->items[] = $item;
} }
} }