重新排序播放列表

我实际上正在使用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;
        }

    }

两个阵列(oldtrack和newtrack)就像

[0] => spotify:track:4w2iAP3X4FkpPb5kjRdIDx

(该键对应于位置,以及对Spotify URI轨迹的值)

OldTracks链接到Spotify播放列表中的实际内容,并且新曲目链接到Spotify播放列表中应该包含的内容

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

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

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

链接地址: http://www.djcxy.com/p/55591.html

上一篇: Reordering a playlist

下一篇: getting the genre of a song in a playlist