rss-bridge/bridges/HinduTamilBridge.php
2024-08-28 19:45:54 +02:00

97 lines
3.1 KiB
PHP

<?php
class HinduTamilBridge extends FeedExpander
{
const NAME = 'HinduTamil';
const URI = 'https://www.hindutamil.in';
const FEED_BASE_URL = 'https://feeds.feedburner.com/Hindu_Tamil_';
const DESCRIPTION = 'Retrieve full articles from hindutamil.in feeds';
const MAINTAINER = 'tillcash';
const PARAMETERS = [
[
'topic' => [
'name' => 'topic',
'type' => 'list',
'defaultValue' => 'crime',
'values' => [
'Astrology' => 'astrology',
'Blogs' => 'blogs',
'Business' => 'business',
'Cartoon' => 'cartoon',
'Cinema' => 'cinema',
'Crime' => 'crime',
'Discussion' => 'discussion',
'Education' => 'education',
'Environment' => 'environment',
'India' => 'india',
'Lifestyle' => 'life-style',
'Literature' => 'literature',
'Opinion' => 'opinion',
'Reporters' => 'reporters-page',
'Socialmedia' => 'social-media',
'Spirituals' => 'spirituals',
'Sports' => 'sports',
'Supplements' => 'supplements',
'Tamilnadu' => 'tamilnadu',
'Technology' => 'technology',
'Tourism' => 'tourism',
'World' => 'world',
],
],
'limit' => [
'name' => 'limit (max 100)',
'type' => 'number',
'defaultValue' => 10,
],
],
];
public function getName()
{
$topic = $this->getKey('topic');
return self::NAME . ($topic ? ' - ' . $topic : '');
}
public function collectData()
{
$limit = min(100, $this->getInput('limit'));
$url = self::FEED_BASE_URL . $this->getInput('topic');
$this->collectExpandableDatas($url, $limit);
}
protected function parseItem($item)
{
$dom = getSimpleHTMLDOMCached($item['uri']);
$content = $dom->find('#pgContentPrint', 0);
if ($content === null) {
return $item;
}
$item['timestamp'] = $this->getTimestamp($dom) ?? $item['timestamp'];
$item['content'] = $this->getImage($dom) . $this->cleanContent($content);
return $item;
}
private function cleanContent($content): string
{
foreach ($content->find('div[align="center"], script, .adsplacement') as $remove) {
$remove->outertext = '';
}
return $content->innertext;
}
private function getTimestamp($dom): ?string
{
$date = $dom->find('meta[property="article:published_time"]', 0);
return $date ? $date->getAttribute('content') : null;
}
private function getImage($dom): string
{
$image = $dom->find('meta[property="og:image"]', 0);
return $image ? sprintf('<p><img src="%s"></p>', $image->getAttribute('content')) : '';
}
}