在 Soundcloud 中通过 streamable = true 过滤曲目

Filtering tracks by streamable = true in Soundcloud

我正在尝试使用 Soundcloud 的 javascript SDK 来 return 可流式播放的曲目列表。

我的问题是:如何使用 javascript SDK 筛选仅可流式传输歌曲的搜索结果?

这是一个示例,其中 return 歌曲无法流式传输:

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"
title: "Burn (Mat Zo Remix)"
track_type: ""
...

查看 Soundcloud SDK 文档,我没有找到执行此操作的方法,因为 'filter' 查询参数仅接受“(all, public, private)”。

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

同样未回答的问题: 计算器。com/questions/23791711/filtering-tracks-by-streamable-in-soundcloud

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

没有令牌来测试很难说。然而,"Search" 周围的 documentation 似乎暗示可以直接通过 属性 过滤声音:

Some resource types, such as sounds, can be filtered by fields like license, duration or 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);
});

在您的情况下,您应该将 license 替换为 streamable,将 'cc-by-sa' 替换为 'true'。

API 上的流媒体 属性 没有(已记录的)过滤器。但是,您可以自己轻松过滤掉无法播放的曲目:

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); 
});