【发布时间】:2015-06-05 07:42:02
【问题描述】:
我目前正在开发一个 Web 应用程序,该应用程序将查找艺术家及其合作伙伴的头衔。为此,我决定通过this package(文档为here)解析API MusicBrainz。
假设我已经有了艺术家 mbid(MusicBrainz 的唯一标识符)。
问题是,例如,如果我在 David Guetta (mbid = 302bd7b9-d012-4360-897a-93b00c855680) 上进行搜索,脚本会告诉我发布的数量是 196。但是,API 为每个请求提供最多 100 个结果。
// Instantiate a MusicBrainz object
$brainz = new MusicBrainz(new GuzzleHttpAdapter(new Client()));
$brainz->setUserAgent('ApplicationName', '0.2', 'http://example.com');
$limit = 100;
$offset = 0;
$includes = array('labels', 'recordings');
try {
$details = $brainz->browseRelease('artist', '302bd7b9-d012-4360-897a-93b00c855680', $includes, $limit, $offset);
print_r($details);
} catch (Exception $e) {
print $e->getMessage();
}
下面的函数browseRelease允许我们定义limit和offset等参数。
public function browseRelease($entity, $mbid, $includes = array(), $limit = 25, $offset = null, $releaseType = array(), $releaseStatus = array())
{
if (!in_array($entity, array('artist', 'label', 'recording', 'release-group'))) {
throw new Exception('Invalid browse entity for release');
}
return $this->browse(
new Filters\ReleaseFilter(array()),
$entity,
$mbid,
$includes,
$limit,
$offset,
$releaseType,
$releaseStatus
);
}
现在我们来看看这篇文章中我真正的问题。
如果我为第一个查询定义了$limit = 100 和$offset = 0,我不明白如何根据总发布的数量更改这些值,从而得到介于 100 和 196 之间的结果(在此示例)。
【问题讨论】:
-
我不懂 php 但你不要在第一个查询中设置 $offset=100 来获取下一组记录
-
说你有 150 个结果。首先打电话给你:
$offset = 0。然后你再次拨打$offset = 100。限制无关紧要:如果限制是 100,但只有 50 个结果可用,它会给你 50 个结果,从偏移值开始。 -
也许将他的答案标记为已接受?当有人帮助您解决问题时,这就是在 SO 上说“谢谢”的方式。
标签: php limit offset musicbrainz