重新排序播放列表
我实际上正在使用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