SoundcloudBridge.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. class SoundCloudBridge extends BridgeAbstract{
  3. const MAINTAINER = "kranack";
  4. const NAME = "Soundcloud Bridge";
  5. const URI = "https://soundcloud.com/";
  6. const CACHE_TIMEOUT = 600; // 10min
  7. const DESCRIPTION = "Returns 10 newest music from user profile";
  8. const PARAMETERS = array( array(
  9. 'u'=>array(
  10. 'name'=>'username',
  11. 'required'=>true
  12. )
  13. ));
  14. const CLIENT_ID = '0aca19eae3843844e4053c6d8fdb7875';
  15. public function collectData(){
  16. $res = json_decode(getContents(
  17. 'https://api.soundcloud.com/resolve?url=http://www.soundcloud.com/'
  18. . urlencode($this->getInput('u'))
  19. .'&client_id=' . self::CLIENT_ID
  20. )) or returnServerError('No results for this query');
  21. $tracks = json_decode(getContents(
  22. 'https://api.soundcloud.com/users/'
  23. . urlencode($res->id)
  24. .'/tracks?client_id=' . self::CLIENT_ID
  25. )) or returnServerError('No results for this user');
  26. for ($i=0; $i < 10; $i++) {
  27. $item = array();
  28. $item['author'] = $tracks[$i]->user->username .' - '. $tracks[$i]->title;
  29. $item['title'] = $tracks[$i]->user->username .' - '. $tracks[$i]->title;
  30. $item['content'] = '<audio src="'. $tracks[$i]->uri .'/stream?client_id='. self::CLIENT_ID .'">';
  31. $item['id'] = self::URI
  32. . urlencode($this->getInput('u')) .'/'
  33. . urlencode($tracks[$i]->permalink);
  34. $item['uri'] = self::URI
  35. . urlencode($this->getInput('u')) .'/'
  36. . urlencode($tracks[$i]->permalink);
  37. $this->items[] = $item;
  38. }
  39. }
  40. public function getName(){
  41. return self::NAME .' - '. $this->getInput('u');
  42. }
  43. }