mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-22 09:35:28 +03:00
Squashed commit of the following:
commit 81d7934ab9
Author: µKöff <muekoeff@muekev.de>
Date: Thu May 28 14:55:00 2020 +0200
[FunkBridge] New Bridge
This commit is contained in:
parent
d41aa84b13
commit
e01d9d1700
1 changed files with 84 additions and 0 deletions
84
bridges/FunkBridge.php
Normal file
84
bridges/FunkBridge.php
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
class FunkBridge extends BridgeAbstract {
|
||||
|
||||
const MAINTAINER = 'µKöff';
|
||||
const NAME = 'Funk';
|
||||
const URI = 'https://www.funk.net/';
|
||||
const DESCRIPTION = 'Videos per channel of German public video-on-demand service Funk';
|
||||
|
||||
const PARAMETERS = array(
|
||||
'Channel' => array(
|
||||
'channel' => array(
|
||||
'name' => 'Slug',
|
||||
'type' => 'text',
|
||||
'required' => true,
|
||||
'exampleValue' => 'game-two-856'
|
||||
),
|
||||
'max' => array(
|
||||
'name' => 'Maximum',
|
||||
'type' => 'number',
|
||||
'defaultValue' => '-1'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
public function collectData(){
|
||||
switch($this->queriedContext) {
|
||||
case 'Channel':
|
||||
$url = static::URI . 'data/videos/byChannelAlias/' . $this->getInput('channel') . '/';
|
||||
if(!empty($this->getInput('max')) && $this->getInput('max') >= 0) {
|
||||
$url .= '?size=' . $this->getInput('max');
|
||||
}
|
||||
|
||||
$jsonString = getContents($url) or returnServerError('No contents received!');
|
||||
$json = json_decode($jsonString, true);
|
||||
|
||||
foreach($json['list'] as $element) {
|
||||
$this->items[] = $this->collectArticle($element);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
returnServerError('Unknown context!');
|
||||
}
|
||||
}
|
||||
|
||||
private function collectArticle($element) {
|
||||
$item = array();
|
||||
$item['uri'] = static::URI . 'channel/' . $element['channelAlias'] . '/' . $element['alias'];
|
||||
$item['title'] = $element['title'];
|
||||
$item['timestamp'] = $element['publicationDate'];
|
||||
$item['author'] = str_replace('-' . $element['channelId'], '', $element['channelAlias']);
|
||||
$item['content'] = $element['shortDescription'];
|
||||
$item['enclosures'] = array(
|
||||
'https://www.funk.net/api/v4.0/thumbnails/' . $element['imageLandscape']
|
||||
);
|
||||
$item['uid'] = $element['entityId'];
|
||||
return $item;
|
||||
}
|
||||
|
||||
public function detectParameters($url) {
|
||||
$regex = '/^https?:\/\/(?:www\.)?funk\.net\/channel\/([^\/]+).*$/';
|
||||
if(preg_match($regex, $url, $urlMatches) > 0) {
|
||||
return array(
|
||||
'channel' => $urlMatches[1]
|
||||
);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public function getIcon() {
|
||||
return 'https://www.funk.net/img/favicons/favicon-192x192.png';
|
||||
}
|
||||
|
||||
public function getName(){
|
||||
switch($this->queriedContext) {
|
||||
case 'Channel':
|
||||
if(!empty($this->getInput('channel'))) {
|
||||
return $this->getInput('channel');
|
||||
}
|
||||
break;
|
||||
}
|
||||
return parent::getName();
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue