Soundcloud在PHP上解析

时间:2014-02-20 19:57:27

标签: php soundcloud

我正在尝试设置一个简单的应用程序:

  • 从其网址
  • 获取艺术家的客户ID
  • 显示两个最新曲目

然而,我对soundcloud不太实用,我只知道基本的php。我开始玩soundcloud,但我无法处理它。我遇到的一个问题是我写的任何代码,它都是

Fatal error: Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 302.'

最简单的设置直接来自文档,并且是从给定URL开始从轨道ID中检索注释的示例。

<?php
require_once 'Services/Soundcloud.php';

// create a client object with your app credentials
$client = new Services_Soundcloud('my_client','my_secret');

// a permalink to a track
$track_url = 'https://url_to_a_track';

// resolve track URL into track resource
$track = json_decode($client->get('resolve', array('url' => $track_url), array('CURLOPT_FOLLOWLOCATION', TRUE )));

// now that we have the track id, we can get a list of comments, for example
foreach (json_decode($client->get('tracks/' . $track->id . 'comments')) as $c)
print 'Someone said: ' . $c->body . ' at ' . $c->timestamp . "\n"; ?>

刚添加('CURLOPT_FOLLOWLOCATION', TRUE),因为我已经在网上看到了它...而且我总是得到致命的错误......为什么?

3 个答案:

答案 0 :(得分:1)

&#39;如何在PHP中使用soundcloud API解析资源?&#39;

  • 使用php的soundcloud API的 resolve 资源,按照frafor的代码,执行:

    $client->setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1)); $response = json_decode($client->get('resolve',array('url' => $track_url))); ?&GT;

首先是CURLOPT_FOLLOWLOCATION然后是API调用,你几乎就在那里! :) 希望它可以帮助别人!

干杯, Ť

答案 1 :(得分:1)

soundcloud服务器已切换到安全状态,他们现在也使用https协议进行API / JSON。

我的应用程序不再工作,所以这些是获取JSON的其他cURL选项。 SSL验证必须都设置为禁用。我只有这个才能使用它。

// Configuring curl options
$options = array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => array('Content-type: application/json'),
    CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
);

希望它有所帮助。

答案 2 :(得分:0)

我已经能够解决它了。如果资源是公共的,那么您不需要进行身份验证。这是代码:

  • 从wordpress custom-field
  • 获取用户URL
  • 从json对象中检索ID
  • 检索最新的2首曲目并显示2个嵌入式播放器

只需要通过在soundcloud开发者部分注册,然后将其替换为{Your_ID}

,您就可以轻松获得自己的客户ID
    // get user URL from Wordpress custom field
    $sc_url = get_post_meta(get_the_id(), 'sc_url', true);

    // if $sc_url is not empty, do
    if (!empty($sc_url)) {

    $unparsed_json = file_get_contents('https://api.soundcloud.com/resolve.json?url='.$sc_url.'&client_id={Your_ID}');

    $json_object = json_decode($unparsed_json);

    // retrieve the user ID from json_object
    $roster_id = $json_object->{'id'};

    // get last two tracks from the user and generate embed code for each tracks 
    $tracks_json = file_get_contents('http://api.soundcloud.com/users/'.$roster_id.'/tracks?client_id={Your_ID}&order=latest&limit=2&format=json');
    $tracks = json_decode($tracks_json);
    foreach ($tracks as $track){
    $trackID = $track->id;
    echo '<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F'.$trackID.'"></iframe>';
    }}

希望它可以帮助别人:)