mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-04-09 16:38:50 +00:00
[PhoronixBridge] support multipage and embed benchmarks (#2522)
This commit is contained in:
parent
87533222c7
commit
fe43537b45
@ -6,17 +6,60 @@ class PhoronixBridge extends FeedExpander {
|
|||||||
const URI = 'https://www.phoronix.com';
|
const URI = 'https://www.phoronix.com';
|
||||||
const CACHE_TIMEOUT = 3600;
|
const CACHE_TIMEOUT = 3600;
|
||||||
const DESCRIPTION = 'RSS feed for Linux news website Phoronix';
|
const DESCRIPTION = 'RSS feed for Linux news website Phoronix';
|
||||||
|
const PARAMETERS = array(array(
|
||||||
|
'n' => array(
|
||||||
|
'name' => 'Limit',
|
||||||
|
'type' => 'number',
|
||||||
|
'required' => false,
|
||||||
|
'title' => 'Maximum number of items to return',
|
||||||
|
'defaultValue' => 10
|
||||||
|
),
|
||||||
|
'svgAsImg' => array(
|
||||||
|
'name' => 'SVG in "image" tag',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'title' => 'Some benchmarks are exported as SVG with "object" tag,
|
||||||
|
but some RSS readers don\'t support this. "img" tag are supported by most browsers',
|
||||||
|
'defaultValue' => false
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
public function collectData(){
|
public function collectData(){
|
||||||
$this->collectExpandableDatas('https://www.phoronix.com/rss.php', 15);
|
$this->collectExpandableDatas('https://www.phoronix.com/rss.php', $this->getInput('n'));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function parseItem($newsItem){
|
protected function parseItem($newsItem){
|
||||||
$item = parent::parseItem($newsItem);
|
$item = parent::parseItem($newsItem);
|
||||||
// $articlePage gets the entire page's contents
|
// $articlePage gets the entire page's contents
|
||||||
$articlePage = getSimpleHTMLDOM($newsItem->link);
|
$articlePage = getSimpleHTMLDOM($newsItem->link);
|
||||||
$article = $articlePage->find('.content', 0);
|
$articlePage = defaultLinkTo($articlePage, $this->getURI());
|
||||||
$item['content'] = $article;
|
// Extract final link. From Facebook's like plugin.
|
||||||
|
parse_str(parse_url($articlePage->find('iframe[src^=//www.facebook.com/plugins]', 0), PHP_URL_QUERY), $facebookQuery);
|
||||||
|
if (array_key_exists('href', $facebookQuery)) {
|
||||||
|
$newsItem->link = $facebookQuery['href'];
|
||||||
|
}
|
||||||
|
$item['content'] = $this->extractContent($articlePage);
|
||||||
|
|
||||||
|
$pages = $articlePage->find('.pagination a[!title]');
|
||||||
|
foreach ($pages as $page) {
|
||||||
|
$pageURI = urljoin($newsItem->link, html_entity_decode($page->href));
|
||||||
|
$page = getSimpleHTMLDOM($pageURI);
|
||||||
|
$item['content'] .= $this->extractContent($page);
|
||||||
|
}
|
||||||
return $item;
|
return $item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function extractContent($page){
|
||||||
|
$content = $page->find('.content', 0);
|
||||||
|
$objects = $content->find('script[src^=//openbenchmarking.org]');
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$objectSrc = preg_replace('/p=0/', 'p=2', $object->src);
|
||||||
|
if ($this->getInput('svgAsImg')) {
|
||||||
|
$object->outertext = '<a href="' . $objectSrc . '"><img src="' . $objectSrc . '"/></a>';
|
||||||
|
} else {
|
||||||
|
$object->outertext = '<object data="' . $objectSrc . '" type="image/svg+xml"></object>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$content = stripWithDelimiters($content, '<script', '</script>');
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user