SoundCloud API-基于系统中的ID创建用户配置文件

SoundCloud API - create user profiles based on ID in system

本文关键字:ID 创建 配置文件 用户 系统 API- 于系统 SoundCloud      更新时间:2023-09-26

我有一个系统,它接收一组SoundCloud用户ID,通过一系列SC.get函数对它们进行迭代,以获得每个用户的信息(用户ID、用户名、关注和流派偏好)。

<script src="//connect.soundcloud.com/sdk.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<body>
<script>
    //Initialize soundcloud API with client ID
SC.initialize({
    client_id: "54cb0ff94ff9313ef6ca4674e9fe3026"
});

var userIds = [9110252, 55829847, 145189041, 4184647, 225458844, 22557004, 109447512];
var userids = [];
var usernames = [];
var userFollowingsE = [];
var profile =[];
var ready = 0
for(u = 0; u < userIds.length; u++){
  var id = userIds[u];
  getUserData(id);
  function getUserData(userid){ 
  //**************************** USER ***************************//  
  SC.get("/users/"+id, function(user){
    userids.push(user.id);
    usernames.push(user.username);
  });
  //********************** USER/FOLLOWINGS **********************//
  SC.get('/users/'+id+'/followings',function(followings) {
    var userFollowings = [];
      for(i = 0; i < followings.collection.length; i++) { 
        userFollowings.push(followings.collection[i].username);                                         
    } 
    userFollowingsE.push(userFollowings);
      ready++
      if(ready >= userIds.length) onComplete();
    });
  }  
}
function onComplete(){
  console.log(usernames);
  console.log(userIds);
  console.log(userFollowingsE); 
}
var users = [ 
  { userid: this.userids,
    username: this.usernames,
    genre: this.genres,
    followings: this.followings,
  }
]
</script>
</body>

我希望系统将这些信息位与对象中的相应用户相关联,例如

var users = {
  user9110252: {
    userid = userid, 
    username = username,
    genrePref = genre
    followings = followings
  }
}//etc...

然而,系统每次输出的数组都会更改顺序,我认为它们之间没有关联。

我不确定如何做到这一点,欢迎任何建议。

如果您希望得到的数组看起来像您所描述的那样,您应该边构建用户Object,而不是创建多个数组然后合并它们。

这是我尝试过的,运行它,看看它是否能给你带来预期的结果。还要注意的是,我没有包括流派,因为我在提供的数据中找不到它们。

//Initialize soundcloud API with client ID
SC.initialize({ client_id: "54cb0ff94ff9313ef6ca4674e9fe3026" });
var userIds = [9110252, 55829847, 145189041, 4184647, 225458844, 22557004, 109447512],
    users   = [];
for(var i=0; i<userIds.length; i++){ getUserData(userIds[i]); }
function getUserData(userid){
    // The user Object you'll be building
    var myUser = {};
    // Grab the info for this user
    SC.get("/users/"+userid, function(user){
        myUser.userid = user.id;
        myUser.username = user.username;
        // Then get its followings
        SC.get('/users/'+userid+'/followings',function(followings) {
            myUser.followings = followings.collection.map(function(user){
                return user.username;
            });
            // Push that user to the user list
            users.push(myUser);
            // Execute the callback if all users have been fetched
            if(users.length == userIds.length){ onComplete(); }
        });
    });
}
function onComplete(){
    console.log(users);
    // Just for the demo:
    document.body.innerHTML = '<pre>' + JSON.stringify(users,0,2) + '</pre>';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://connect.soundcloud.com/sdk.js"></script>