PHP Spotify API - 重新排序播放列表

时间:2017-01-17 09:26:05

标签: php spotify

我实际上正在使用PHP Spotify API。我正在创建一个播放列表,我根据每周更改的专辑列表添加/删除曲目(这是本周的最佳专辑)。

当我想重新排序曲目时问题出现了。事实上,我想在播放列表中保留本周最佳专辑中的曲目,以便稍后我知道哪些曲目是最老的曲目。

但是,使用实际的API重新排序播放列表非常奇怪。当我不得不重新排序一首曲目或两首曲目时,它的工作原理非常好。但是如果有更多的曲目需要重新排序,那就不行了。

我在技术上做的是我有两个阵列,一个代表本周的最高专辑,另一个代表播放列表。以同样的方式构建。键表示曲目和艺术家的名称,值表示Spotify URI。 我只是在循环中比较两个数组,并且我发送一个cURL来重新排序播放列表,具体取决于两个数组的相等性。 但这不起作用,这可能对于少数第一条曲目起作用,但随后一切都变得疯狂。

您是否知道如何使用API​​对播放列表中的多个曲目重新排序? 你会怎么做? 在循环中进行循环并不是我最好的想法,但这是唯一的

我遇到的代码部分:

while($newTracks !== $oldTracks){

        $oldPosition = array_search($newTracks[$i], $actualTracks);

        $chPut = curl_init();
        $put = array(
            'range_start' => $oldPosition,
            'range_length' => 1,
            'insert_before' => $newTracks[$i++] + 1
        );

        $put = json_encode($put);
        curl_setopt($chPut, CURLOPT_URL, "https://api.spotify.com/v1/users/" . $idUser . "/playlists/" . $idPlaylist . "/tracks");
        curl_setopt($chPut, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($chPut, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($chPut, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($chPut, CURLOPT_POSTFIELDS, $put);
        $modif = curl_exec($chPut);
        d($modif);
        curl_close($chPut);

        $chGetFinal = curl_init();
        curl_setopt($chGetFinal, CURLOPT_URL, "https://api.spotify.com/v1/users/" . $idUser . "/playlists/" . $idPlaylist . "/tracks");
        curl_setopt($chGetFinal, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($chGetFinal, CURLOPT_HTTPHEADER, $headers);
        $outputFinal = curl_exec($chGetFinal);
        curl_close($chGetFinal);
        $getActualTracks = json_decode($outputFinal);

        $j = 0;
        $oldTracks = array();
        foreach($getActualTracks->items as $track){
            $oldTracks[$j++] = 'spotify:track:' . $track->track->id;
        }
        if ($i > count($newTracks)){
            $i = 0;
        }

    }

两个数组(oldTracks和newTracks)就像

[0] => spotify:track:4w2iAP3X4FkpPb5kjRdIDx

(密钥对应于Spotify URI Track的位置和值)

OldTracks与Spotify播放列表中的实际内容相关联,newTracks与Spotify播放列表中的内容相关联

在第一个cURL(我对轨道重新排序)之后,数组'oldTracks'发生了变化,所以我正在做另一个cURL以获得Spotify播放列表的新版本。

我不知道我是否清楚,但我知道在一个永远不会结束的while循环中的两个cURL并不是一个好主意!

我正在处理的播放列表:https://open.spotify.com/user/118698176/playlist/6StRb5g20JPhlsBodz0ahH

0 个答案:

没有答案