mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-27 03:50:42 +03:00
46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
<?php
|
|
|
|
class HashnodeBridge extends BridgeAbstract {
|
|
|
|
const MAINTAINER = 'liamka';
|
|
const NAME = 'Hashnode';
|
|
const URI = 'https://hashnode.com';
|
|
const CACHE_TIMEOUT = 3600; // 1hr
|
|
const DESCRIPTION = 'See trending or latest posts in Hashnode community.';
|
|
const LATEST_POSTS = 'https://hashnode.com/api/stories/recent?page=';
|
|
|
|
public function collectData(){
|
|
$this->items = [];
|
|
for ($i = 0; $i < 5; $i++) {
|
|
$url = self::LATEST_POSTS . $i;
|
|
$content = getContents($url);
|
|
$array = json_decode($content, true);
|
|
|
|
if($array['posts'] != null) {
|
|
foreach($array['posts'] as $post) {
|
|
$item = [];
|
|
$item['title'] = $post['title'];
|
|
$item['content'] = nl2br(htmlspecialchars($post['brief']));
|
|
$item['timestamp'] = $post['dateAdded'];
|
|
if($post['partOfPublication'] === true) {
|
|
$item['uri'] = sprintf(
|
|
'https://%s.hashnode.dev/%s',
|
|
$post['publication']['username'],
|
|
$post['slug']
|
|
);
|
|
} else {
|
|
$item['uri'] = sprintf('https://hashnode.com/post/%s', $post['slug']);
|
|
}
|
|
if(!isset($item['uri'])) {
|
|
continue;
|
|
}
|
|
$this->items[] = $item;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getName(){
|
|
return self::NAME . ': Recent posts';
|
|
}
|
|
}
|