在Soundcloud中按streamable = true过滤曲目

时间:2015-12-16 04:56:46

标签: javascript soundcloud

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

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

以下是返回不可流式播放歌曲的示例:

<!DOCTYPE <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <!-- link CSS and font files here -->
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/normalize.css">
    <link href='https://fonts.googleapis.com/css?family=PT+Sans:400italic,400' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <link rel="stylesheet" type="text/css" href="css/responsive.css">
    <script src="js/instafeed.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var userFeed = new Instafeed ({
            get: "user",
            userId: "8169627"
        });
        userFeed.run();
    </script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div class="my_life">       
        <h1>A look into my life</h1>
        <!-- Instragram photo feed -->
        <div id="instafeed"></div>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>



</body>
</html>

以下是请求的结果:

  

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

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

  

...
      流线型:假的       tag_list:“Remix Mat Zo Burn Ellie Goulding”
      标题:“烧(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 个答案:

答案 0 :(得分: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 :(得分:-1)

如果没有令牌进行测试,很难分辨。但是,“搜索”周围的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'。