0

我正在尝试使用 SoundCloud API 显示特定 SoundCloud 用户的总曲目视图(“playback_count”)。

根据 API 文档,我使用以下函数调用获取信息:

http://api.soundcloud.com/tracks/13158665.json?client_id=YOUR_CLIENT_ID

这很好,因为它显示数字“13158665”。

这个数字是多少?是trackid吗?

我需要使用用户用户名获取用户的“playback_count”。

我尝试使用以下方法从用户名中获取 UserId:

$soundcloud_playsAPI = "MY_SOUNDCLOUD_API_KEY";

/* Get the SoundCloud UserId from the username */
$json = wp_remote_get("http://api.soundcloud.com/users/jwagener.json?client_id=".$soundcloud_playsAPI);

$soundcloudData = json_decode($json['body'], true);
$soundcloud_userid = $soundcloudData['id'];

这将返回用户 ID:3207181

现在我尝试将该响应替换为先前的 URL 以获取“playback_count”,但它失败了。

$json = wp_remote_get("http://api.soundcloud.com/tracks/3207181.json?client_id=".$soundcloud_playsAPI);
$soundcloudPlaysData = json_decode($json['body'], true);
echo $soundcloudPlaysData['playback_count'];

任何指导将不胜感激。

谢谢。

4

2 回答 2

1

第一个数字是曲目的id,第二个数字是用户的id。

现在您有了用户 ID,您将需要获取他们的每个曲目并计算他们播放了多少次

首先,获取用户制作的所有曲目的 ID 号

GET: /users/{id}/tracks: 用户的曲目列表

$json = wp_remote_get("http://api.soundcloud.com/users/3207181/tracks.json?client_id=".$soundcloud_playsAPI);

现在您有一个曲目 ID 列表,因此您需要获取每个曲目并保存每个曲目的播放计数

$json = wp_remote_get("http://api.soundcloud.com/tracks/track-id-here.json?client_id=".$soundcloud_playsAPI);
$soundcloudPlaysData = json_decode($json['body'], true);
echo $soundcloudPlaysData['playback_count'];
于 2013-03-12T06:02:07.237 回答
0

这是完整的解决方案:

function listPlays() 
    {SC.initialize({  client_id: 'YOUR ID HERE'}); 
    // Get the SoundCloud UserId from the username 
    var userName="jwagener";
    SC.get("/users/"+userName,  function (users)
            {console.log(users.id);
            var myId=users.id;
            getTracks(myId);
            });

    var getTracks=function (myId)
        {var totalPlays=0;
        SC.get("/users/"+myId+"/tracks", function(getTracks)
            {for (var key in getTracks)    //get each track and look at it's playback_count
                {console.log(getTracks[key].title+"     "+getTracks[key].playback_count);
                totalPlays+=getTracks[key].playback_count;   //add the playback count for this track to the total
                }
            console.log("Total Plays for all tracks: "+totalPlays);

            });
        };

};
于 2013-03-15T05:08:08.560 回答