首页 文章

在Soundcloud中按streamable = true过滤曲目

提问于
浏览
4

我正在尝试使用Soundcloud的javascript SDK来返回可流式传输的曲目列表 .

我的问题是:如何使用javascript SDK过滤仅可流式化歌曲的搜索结果?

以下示例将返回不可流式传输的歌曲:

SC.get('/tracks', {q: 'mat zo', filter: 'streamable'}).then(function (tracks) { 
    console.log(tracks); 
});

以下是请求的结果:

api.soundcloud.com/tracks?q=mat zo&filter = streamable&format = json&client_id = [XXX]

我注意到此响应中的第一首曲目有streamable = false .
回复片段:

... streamable:false tag_list:“Remix Mat Zo Burn Ellie Goulding” Headers :“Burn(Mat Zo Remix)”track_type:“”......

查看Soundcloud SDK文档,我没有看到这样做的方法,因为'filter'查询参数只接受'(all,public,private)' .

https://developers.soundcloud.com/docs/api/reference#tracks(我正在看过滤器)

同样没有答案的问题:stackoverflow.com/questions/23791711/filtering-tracks-by-streamable-in-soundcloud

提前谢谢,这是我的第一个问题 . 我可以根据要求提供更多代码 .

2 回答

  • -1

    API上的streamable属性没有(记录)过滤器 . 但是,您可以自己轻松过滤掉不可复制的曲目:

    SC.get('/tracks', {q: 'mat zo'}).then(function (tracks) { 
        for(var i = 0; i < tracks.length; i++) {
            if(!(tracks[i].streamable)) {           
            tracks.splice(i,1);
          } 
        }
        console.log(tracks); 
    });
    
  • 1

    没有令牌进行测试就很难分辨 . 但是,围绕"Search"的documentation似乎暗示可以通过属性直接过滤声音:

    某些资源类型(如声音)可以按许可证,持续时间或tag_list等字段进行过滤 .

    // find all sounds of buskers licensed under 'creative commons share alike'
    SC.get('/tracks', {
      q: 'buskers', license: 'cc-by-sa'
    }).then(function(tracks) {
      console.log(tracks);
    });
    

    在您的情况下,您应该使用streamable替换许可证,并使用'true'替换'cc-by-sa' .

相关问题