当前位置: 首页 > 知识库问答 >
问题:

如何使用offset和limit参数向musicBrainz api发出浏览请求

陈志
2023-03-14

在musicbrainz文档中,据说:

“任何浏览请求都支持一个‘偏移=’参数来获得更多结果。浏览请求还支持'限制=':默认限制为25,您可以将其增加到100。"

因此,我尝试将限制增加到100,并获取每个偏移的结果,如下所示:

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function main() {
    let mbid = "9c9f1380-2516-4fc9-a3e6-f9f61941d090";
    let releases = [];

    let response = await fetch(`https://musicbrainz.org/ws/2/release?artist=${mbid}&inc=recordings+release-groups+ratings&limit=100&fmt=json`);
    let jsonResponse = await response.json();
    releases.push(jsonResponse.releases);
    let releaseCount = jsonResponse["release-count"];

    for (let offset = 100; offset < releaseCount; offset += 100) {
        await sleep(1000);
        let response = await fetch(`https://musicbrainz.org/ws/2/release?artist=${mbid}&inc=recordings+release-groups+ratings&offset=${offset}&limit=100&fmt=json`);
        let jsonResponse = await response.json();
        releases.push(jsonResponse.releases);
    }

    if(releases.flat(1).length == releaseCount){
        console.log("All releases were fetched");
    }else{
        console.log("Problem: some releases were not fetched");
    }

    console.log(releases);
}

main();

问题是,我从api获得的发布不等于发布计数。如果我将限制设置为25(默认值),并以25而不是100的增量循环偏移,则不会出现此问题。

如何使用musicbrainz api文档中解释的限制为100的分页来获取所有版本,而不仅仅是其中的一个子集?

共有1个答案

叶元凯
2023-03-14

如果您从包含列表中删除“录音”,您的代码应该可以工作。或者,正如您已经发现的那样,使用较小的偏移限制似乎也可以工作。

 类似资料:
  • 问题内容: 我正在开发Java Web服务,当从IBM中型机(AS400)上的DB2数据库中获取大数据集时,允许分页。 例如; 如果数据集中有10000条记录,我想一次以1000个块的形式获取它们。 我发现这篇文章解释说我可以使用LIMIT和OFFSET。但是我需要将变量设置为。 现在,我一直在谷歌搜索,看到您可以使用来设置此变量。但是我无法找出在哪里键入此命令? 我正在Windows机器上进行开

  • 我正在考虑将我们传统的jpa/道解决方案迁移到Spring Data。 但是,我们的前端之一是SmartGWT,它们的数据库组件仅使用限制/偏移逐步加载数据,这使得难以使用Pagable。 这会导致问题,因为无法确定限制/偏移量最终是否可以转换为页码。(这可能因用户滚动方式、屏幕大小等而异)。 我查看了切片等,但无法找到在任何地方使用限制/偏移值的方法。 想知道有没有人有什么建议?最理想的情况是,

  • 问题内容: 我有一些限制数据以每页仅显示4个项目的代码。我使用的列大约有20到30个项目,因此我需要将这些项目分散在各个页面上。 在第一页上,我有: 您会在页面底部注意到我的定位标记,其中列出了第二个页面“ itempage2.php”。在项目页面2中,我具有相同的代码,除了我的select语句列出了偏移量4。 当我的数据库中有预定数量的项目时,这种方式可以运行。但这不是很好。仅当有更多项目时才需

  • 本文向大家介绍分页使用MySQL LIMIT,OFFSET吗?,包括了分页使用MySQL LIMIT,OFFSET吗?的使用技巧和注意事项,需要的朋友参考一下 首先,我们需要创建一个包含一些记录的表,然后在限制和偏移量的帮助下使用分页。 借助CREATE命令创建表。查询如下- 创建表后,我们将在INSERT命令的帮助下插入记录。 插入记录 插入记录后,我们可以借助SELECT命令检查表中有多少条记

  • 1. 定义 慕课解释: Limit用于对查询结果集数量进行限制;Offset 则常与 Limit 搭配,意为偏移,表示跳过一定数量的记录。 2. 前言 本小节,我们将一起学习 SQL 中的Limit和 Offset。 在实际的开发中,我们可能常常会遇到以下场景: 获得分数的前 5 名。 分页获取数据。 这些场景需要细粒度地控制数据库数据,因此 SQL 引入了 Limit 和 Offset 来帮助开

  • 问题内容: 例如,我有4000行,并且定义了X限制。 找到X行后查询停止?还是查询找到所有行,然后从找到的行中获取X行? 谢谢你。 问题答案: 从MySQL参考手册: 如果您将LIMIT row_count与ORDER BY一起使用,MySQL会在找到排序结果的前row_count行后立即结束排序,而不是对整个结果进行排序。如果通过使用索引进行排序,这将非常快。如果必须完成文件排序,则必须先选择所