Rss-Bridge/bridges/ElsevierBridge.php

59 lines
1.7 KiB
PHP
Raw Normal View History

<?php
/**
* ElsevierBridge
*
* @name Elsevier Bridge
* @description Returns the recent articles published in Elsevier journals
*/
class ElsevierBridge extends BridgeAbstract{
public function loadMetadatas() {
$this->maintainer = 'Pierre Mazière';
$this->name = 'Elsevier journals recent articles';
$this->uri = 'http://www.journals.elsevier.com';
$this->description = 'Returns the recent articles published in Elsevier journals';
$this->update = '2016-08-02';
$this->parameters[] =
'[
{
"name" : "Journal name",
"identifier" : "j",
"required" : "true",
"exampleValue" : "academic-pediatrics",
"title" : "Insert html-part of your journal"
}
]';
}
public function collectData(array $param){
$uri = 'http://www.journals.elsevier.com/'.$param['j'].'/recent-articles/';
$html = file_get_html($uri)
or $this->returnError('No results for Elsevier journal '.$param['j'], 404);
foreach($html->find('.pod-listing') as $article){
$item = new \Item();
$item->uri=$article->find('.pod-listing-header>a',0)->getAttribute('href').'?np=y';
$item->title=$article->find('.pod-listing-header>a',0)->plaintext;
$item->name=trim($article->find('small',0)->plaintext);
$item->timestamp=strtotime($article->find('.article-info',0)->plaintext);
$item->content=trim($article->find('.article-content',0)->plaintext);
$this->items[]=$item;
}
}
public function getName(){
return 'Elsevier journals recent articles';
}
public function getURI(){
return 'http://www.journals.elsevier.com';
}
public function getCacheDuration(){
return 43200; // 12h
}
}