diff options
Diffstat (limited to 'bridges/UsbekEtRicaBridge.php')
-rw-r--r-- | bridges/UsbekEtRicaBridge.php | 222 |
1 files changed, 113 insertions, 109 deletions
diff --git a/bridges/UsbekEtRicaBridge.php b/bridges/UsbekEtRicaBridge.php index d5fd507a..3dd432f0 100644 --- a/bridges/UsbekEtRicaBridge.php +++ b/bridges/UsbekEtRicaBridge.php @@ -1,111 +1,115 @@ <?php -class UsbekEtRicaBridge extends BridgeAbstract { - - const MAINTAINER = 'logmanoriginal'; - const NAME = 'Usbek & Rica Bridge'; - const URI = 'https://usbeketrica.com'; - const DESCRIPTION = 'Returns latest articles from the front page'; - - const PARAMETERS = array( - array( - 'limit' => array( - 'name' => 'Number of articles to return', - 'type' => 'number', - 'required' => false, - 'title' => 'Specifies the maximum number of articles to return', - 'defaultValue' => -1 - ), - 'fullarticle' => array( - 'name' => 'Load full article', - 'type' => 'checkbox', - 'required' => false, - 'title' => 'Activate to load full articles', - ) - ) - ); - - public function collectData(){ - $limit = $this->getInput('limit'); - $fullarticle = $this->getInput('fullarticle'); - $html = getSimpleHTMLDOM($this->getURI()); - - $articles = $html->find('article'); - - foreach($articles as $article) { - $item = array(); - - $title = $article->find('h2', 0); - if($title) { - $item['title'] = $title->plaintext; - } else { - // Sometimes we get rubbish, ignore. - continue; - } - - $author = $article->find('div.author span', 0); - if($author) { - $item['author'] = $author->plaintext; - } - - $u = $article->find('a.card-img', 0); - - $uri = $u->href; - if(substr($uri, 0, 1) === 'h') { // absolute uri - $item['uri'] = $uri; - } else { // relative uri - $item['uri'] = $this->getURI() . $uri; - } - - if($fullarticle) { - $content = $this->loadFullArticle($item['uri']); - } - - if($fullarticle && !is_null($content)) { - $item['content'] = $content; - } else { - $excerpt = $article->find('div.card-excerpt', 0); - if($excerpt) { - $item['content'] = $excerpt->plaintext; - } - } - - $image = $article->find('div.card-img img', 0); - if($image) { - $item['enclosures'] = array( - $image->src - ); - } - - $this->items[] = $item; - - if($limit > 0 && count($this->items) >= $limit) { - break; - } - } - } - - /** - * 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('div.rich-text', 1); - if($content) { - return $this->replaceUriInHtmlElement($content); - } - - return null; - } - - /** - * Replaces all relative URIs with absolute ones - * @param $element A simplehtmldom element - * @return The $element->innertext with all URIs replaced - */ - private function replaceUriInHtmlElement($element){ - return str_replace('href="/', 'href="' . $this->getURI() . '/', $element->innertext); - } + +class UsbekEtRicaBridge extends BridgeAbstract +{ + const MAINTAINER = 'logmanoriginal'; + const NAME = 'Usbek & Rica Bridge'; + const URI = 'https://usbeketrica.com'; + const DESCRIPTION = 'Returns latest articles from the front page'; + + const PARAMETERS = [ + [ + 'limit' => [ + 'name' => 'Number of articles to return', + 'type' => 'number', + 'required' => false, + 'title' => 'Specifies the maximum number of articles to return', + 'defaultValue' => -1 + ], + 'fullarticle' => [ + 'name' => 'Load full article', + 'type' => 'checkbox', + 'required' => false, + 'title' => 'Activate to load full articles', + ] + ] + ]; + + public function collectData() + { + $limit = $this->getInput('limit'); + $fullarticle = $this->getInput('fullarticle'); + $html = getSimpleHTMLDOM($this->getURI()); + + $articles = $html->find('article'); + + foreach ($articles as $article) { + $item = []; + + $title = $article->find('h2', 0); + if ($title) { + $item['title'] = $title->plaintext; + } else { + // Sometimes we get rubbish, ignore. + continue; + } + + $author = $article->find('div.author span', 0); + if ($author) { + $item['author'] = $author->plaintext; + } + + $u = $article->find('a.card-img', 0); + + $uri = $u->href; + if (substr($uri, 0, 1) === 'h') { // absolute uri + $item['uri'] = $uri; + } else { // relative uri + $item['uri'] = $this->getURI() . $uri; + } + + if ($fullarticle) { + $content = $this->loadFullArticle($item['uri']); + } + + if ($fullarticle && !is_null($content)) { + $item['content'] = $content; + } else { + $excerpt = $article->find('div.card-excerpt', 0); + if ($excerpt) { + $item['content'] = $excerpt->plaintext; + } + } + + $image = $article->find('div.card-img img', 0); + if ($image) { + $item['enclosures'] = [ + $image->src + ]; + } + + $this->items[] = $item; + + if ($limit > 0 && count($this->items) >= $limit) { + break; + } + } + } + + /** + * 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('div.rich-text', 1); + if ($content) { + return $this->replaceUriInHtmlElement($content); + } + + return null; + } + + /** + * Replaces all relative URIs with absolute ones + * @param $element A simplehtmldom element + * @return The $element->innertext with all URIs replaced + */ + private function replaceUriInHtmlElement($element) + { + return str_replace('href="/', 'href="' . $this->getURI() . '/', $element->innertext); + } } |