Rss-Bridge/bridges/SoundcloudBridge.php
disk0x 5305c405f6 [SoundcloudBridge] Improve Author, Date, Description (#955)
1. Author Name now doesn't include Episode Title
2. It now fetches Episode Creation Timestamp, to allow correct sorting in podcatchers
3. Description is now the actual show notes, and not an <audio> tag
2018-12-10 21:35:18 +01:00

65 lines
1.7 KiB
PHP

<?php
class SoundCloudBridge extends BridgeAbstract {
const MAINTAINER = 'kranack';
const NAME = 'Soundcloud Bridge';
const URI = 'https://soundcloud.com/';
const CACHE_TIMEOUT = 600; // 10min
const DESCRIPTION = 'Returns 10 newest music from user profile';
const PARAMETERS = array( array(
'u' => array(
'name' => 'username',
'required' => true
)
));
const CLIENT_ID = '4jkoEFmZEDaqjwJ9Eih4ATNhcH3vMVfp';
public function collectData(){
$res = json_decode(getContents(
'https://api.soundcloud.com/resolve?url=http://www.soundcloud.com/'
. urlencode($this->getInput('u'))
. '&client_id='
. self::CLIENT_ID
)) or returnServerError('No results for this query');
$tracks = json_decode(getContents(
'https://api.soundcloud.com/users/'
. urlencode($res->id)
. '/tracks?client_id='
. self::CLIENT_ID
)) or returnServerError('No results for this user');
for($i = 0; $i < 10; $i++) {
$item = array();
$item['author'] = $tracks[$i]->user->username;
$item['title'] = $tracks[$i]->user->username . ' - ' . $tracks[$i]->title;
$item['timestamp'] = strtotime($tracks[$i]->created_at);
$item['content'] = $tracks[$i]->description;
$item['enclosures'] = array($tracks[$i]->uri
. '/stream?client_id='
. self::CLIENT_ID);
$item['id'] = self::URI
. urlencode($this->getInput('u'))
. '/'
. urlencode($tracks[$i]->permalink);
$item['uri'] = self::URI
. urlencode($this->getInput('u'))
. '/'
. urlencode($tracks[$i]->permalink);
$this->items[] = $item;
}
}
public function getName(){
if(!is_null($this->getInput('u'))) {
return self::NAME . ' - ' . $this->getInput('u');
}
return parent::getName();
}
}