Neue Bridge für Snowbreak: Containment Zone News
This commit is contained in:
87
SnowbreakNewsBridge.php
Normal file
87
SnowbreakNewsBridge.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
class SnowbreakNewsBridge extends BridgeAbstract {
|
||||
const NAME = 'Snowbreak: Containment Zone News';
|
||||
const URI = 'https://snowbreak.amazingseasun.com';
|
||||
const DESCRIPTION = 'Returns the latest news from Snowbreak: Containment Zone';
|
||||
const MAINTAINER = 'Akamaru';
|
||||
const CACHE_TIMEOUT = 21600; // 6 hours
|
||||
const PARAMETERS = [
|
||||
'Category' => [
|
||||
'category' => [
|
||||
'name' => 'Category',
|
||||
'type' => 'list',
|
||||
'values' => [
|
||||
'News' => '613',
|
||||
'Updates' => '614',
|
||||
'Events' => '615',
|
||||
'All' => 'all'
|
||||
],
|
||||
'defaultValue' => '613'
|
||||
]
|
||||
]
|
||||
];
|
||||
const FAVICON = 'https://snowbreak.amazingseasun.com/p/zt/2023/07/13/index/static/favicon.ico';
|
||||
|
||||
public function collectData() {
|
||||
$category = $this->getInput('category');
|
||||
$articles = [];
|
||||
|
||||
if ($category === 'all') {
|
||||
// Fetch all categories
|
||||
$categories = ['613', '614', '615'];
|
||||
foreach ($categories as $cat) {
|
||||
$articles = array_merge($articles, $this->fetchCategory($cat));
|
||||
}
|
||||
} else {
|
||||
$articles = $this->fetchCategory($category);
|
||||
}
|
||||
|
||||
// Sort articles by date (newest first)
|
||||
usort($articles, function($a, $b) {
|
||||
return $b['inputtime'] - $a['inputtime'];
|
||||
});
|
||||
|
||||
foreach ($articles as $article) {
|
||||
$item = [];
|
||||
$item['title'] = $article['title'];
|
||||
// Convert inputtime to timestamp
|
||||
$item['timestamp'] = $article['inputtime'];
|
||||
$item['uri'] = $article['url'];
|
||||
|
||||
$item['content'] = $article['content'];
|
||||
$item['author'] = 'Amazing Seasun';
|
||||
|
||||
if (!empty($article['thumb'])) {
|
||||
$item['enclosures'] = [$article['thumb']];
|
||||
}
|
||||
$this->items[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
private function fetchCategory($category) {
|
||||
$api_url = 'https://snowbreak.amazingseasun.com/api.php?op=search_api&action=get_article_list&catid=' .
|
||||
$category . '&num=50&moreinfo=1';
|
||||
|
||||
$json = getContents($api_url);
|
||||
$data = json_decode($json, true);
|
||||
|
||||
if (!isset($data['data']['list']) || !is_array($data['data']['list'])) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return $data['data']['list'];
|
||||
}
|
||||
|
||||
public function getName() {
|
||||
$category = $this->getInput('category');
|
||||
$categories = [
|
||||
'613' => 'News',
|
||||
'614' => 'Updates',
|
||||
'615' => 'Events',
|
||||
'all' => 'All'
|
||||
];
|
||||
|
||||
$categoryName = $categories[$category] ?? 'Unknown';
|
||||
return 'Snowbreak: Containment Zone - ' . $categoryName;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user