【问题标题】:Spotify developer searchSpotify 开发者搜索
【发布时间】:2013-03-08 22:58:34
【问题描述】:

我对搜索功能在 Spotify API 中的工作方式感到困惑。他们的例子是这样的:

    var sp = getSpotifyApi();
    var models = sp.require('$api/models');

    var search = new models.Search('Rihanna');
    search.localResults = models.LOCALSEARCHRESULTS.APPEND;

    var searchHTML = document.getElementById('results');

    search.observe(models.EVENT.CHANGE, function() {
        var results = search.tracks;
        var fragment = document.createDocumentFragment();
        for (var i=0; i<results.length; i++){
            var link = document.createElement('li');
            var a = document.createElement('a');
            a.href = results[i].uri;
            link.appendChild(a);
            a.innerHTML = results[i].name;
            fragment.appendChild(link);
        }

        searchHTML.appendChild(fragment);
    });

    search.appendNext();

所以,我猜是调用 appendNext() 会启动搜索,当有结果时调用内部函数?但结果仅限于总数的一定数量(默认为 50)。你怎么得到剩下的?您是否从回调内部再次递归调用 appendNext() ?另外,这是否意味着在您这样做之后,您的列表包括原始结果,或者原始结果被替换?有人知道搜索所有个可用结果的例子吗?

他们还提到,如果搜索正在运行,则 appendNext() 什么也不做。那么如何优雅地等待当前搜索完成后再获取下一个“页面”?

他们的文档很糟糕,恕我直言。假设您总共有 1000 个来自服务器的搜索结果。并说我想看到结果 900-1000。我必须一遍又一遍地调用 AppendNext 直到达到 900 吗?

谢谢 鲍勃

【问题讨论】:

    标签: spotify


    【解决方案1】:

    使用 Spotify Apps API 中内置的搜索功能时没有分页。您可以增加结果的数量,使其返回超过 50 个结果(请参阅 the Search page in the documentation),尽管数量有限(目前似乎是 200 个曲目)。

    还有另一种方法,即向Web API 执行请求。

    【讨论】:

    • 等等,你是说没有办法使用他们的 API 获得完整的搜索结果集?因此,如果我想搜索所有 Rhianna 歌曲,例如他们的示例,我只能得到 200 首,如果我要查找的歌曲不在前 200 首中,我就不走运了吗?这太荒谬了!那么 AppendNext 调用的用途是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2021-11-04
    • 2018-10-27
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多