【发布时间】:2022-09-25 20:12:23
【问题描述】:
我想从艺术家那里获得所有曲目,但是当我运行代码时,它有 20 首曲目限制,我无法获得所有曲目和专辑。我正在寻找一些东西来禁用限制或将其更改为更高的值。
这就是我所拥有的:
<?php
$artist = \'artist_id\';
$client_id = \'client_id\';
$client_secret = \'client_secret\';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, \'https://accounts.spotify.com/api/token\' );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, \'grant_type=client_credentials\' );
curl_setopt($curl, CURLOPT_HTTPHEADER, array(\'Authorization: Basic \'.base64_encode($client_id.\':\'.$client_secret)));
$response = curl_exec($curl);
$token = json_decode($response)->access_token;
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo \"cURL Error #:\" . $err;
curl_close($curl);
} else {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => \"https://api.spotify.com/v1/artists/\".$artist.\"/albums\",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => \"\",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => \"GET\",
CURLOPT_HTTPHEADER => array(
\"Content-Type: application/json\",
\"Authorization: Bearer \".$token,
),
));
$track_info = curl_exec($curl);
$value1 = str_replace(\"\\n\", \"\", $track_info);
$yummy = json_decode($value1);
$value = (object) get_object_vars($yummy);
$valuu = get_object_vars($value)[\'items\'][\'6\'];
$yummy1 = json_decode(json_encode($valuu), true);
$arrdatas = [];
foreach($yummy1[\'artists\'] as $artists) {
array_push($arrdatas, $artists[\'name\']);
}
echo implode(\" & \", $arrdatas);
echo \"<br>\";
foreach($yummy1 as $yummy11) {
if(!is_array($yummy11) && $yummy11 != \"album\" && $yummy11 != \"single\" && !preg_match(\"/api.spotify.com/\", $yummy11) && !preg_match(\"/spotify:/\", $yummy11)) {
echo $yummy11.\"<br>\";
} else {
if(!empty($yummy11[\'0\'])) {
if(!empty($yummy11[\'0\'][\'url\'])) {
echo $yummy11[\'0\'][\'url\'];
echo \"<br>\";
}
}
}
}
curl_close($curl);
}
?>
在第 42 行 $valuu = get_object_vars($value)[\'items\'][\'6\']; 我无法在 [\'items\'] 之后设置超过 [\'19\'],因为 API 仅发送 20 首曲目和专辑。我应该怎么做才能获得所有这些或至少设置一个更高的限制?
-
文档总是一个很好的起点,我从未使用过这个 api 但我可以阅读文档! The page in the docs 和参数
limit integer, The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50.