Mise à jour du bridge pour WorldOfTanks (#527)
* Mise à jour de l'un de mes bridges fétiches
This commit is contained in:
parent
b0c7a62f74
commit
e60b5ab193
1 changed files with 25 additions and 45 deletions
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue