在Soundcloud中按streamable=true过滤曲目

Filtering tracks by streamable = true in Soundcloud

本文关键字:true 过滤 曲目 streamable Soundcloud 中按      更新时间:2023-09-26

我正在尝试使用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=可流式传输&format=json&client_id=[XXX]

我注意到这个响应中的第一个音轨具有streamable=false
响应片段:


streamable:false
tag_list:"混音Mat Zo Burn Ellie Goulding"
title:"烧伤(Mat-Zo混音)"
track_type:"

查看Soundcloud SDK文档,我看不出有什么方法可以做到这一点,因为"filter"查询参数只接受"(all,public,private)"。

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

同样未回答的问题:stackoverflow.com/questions/2379111/filtering-tracks-by-streamable-in-soundcloud

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

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

如果没有要测试的令牌,很难判断。然而,围绕"搜索"的文档似乎暗示声音可以直接通过属性过滤:

某些资源类型(如声音)可以通过license、duration或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"。