【问题标题】:How to disable the maximum number of results to return in spotify API?如何禁用在 Spotify API 中返回的最大结果数?
【发布时间】: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.

标签: php api spotify


【解决方案1】:

我刚刚在这一行前面添加了?limit=50

  CURLOPT_URL => "https://api.spotify.com/v1/artists/".$artist."/albums",

它应该是这样的:

  CURLOPT_URL => "https://api.spotify.com/v1/artists/".$artist."/albums?limit=50",

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2014-06-08
    • 2012-12-22
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多