From e01d9d1700b65604c6c7dbad94abc1520e1d628c Mon Sep 17 00:00:00 2001 From: Dag Date: Tue, 22 Mar 2022 22:42:15 +0100 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 81d7934ab9bd15a5edb52faa67190f103ae7b644 Author: µKöff Date: Thu May 28 14:55:00 2020 +0200 [FunkBridge] New Bridge --- bridges/FunkBridge.php | 84 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 bridges/FunkBridge.php diff --git a/bridges/FunkBridge.php b/bridges/FunkBridge.php new file mode 100644 index 00000000..65a61e74 --- /dev/null +++ b/bridges/FunkBridge.php @@ -0,0 +1,84 @@ + 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(); + } +}