在PHP中检索Spotify播放列表

时间:2012-06-20 21:11:49

标签: php spotify playlist

目前我使用此代码使用PHP获取特定Spotify播放列表的信息(检索有关播放列表“最新”标题的信息):

$retu = getsrc("https://embed.spotify.com/?uri=spotify:user:1121975814:playlist:20uXqHNuHw7kR2KWYfQYRb");
$expl = explode('<li class="track-',$retu);

$artist = get_string_between($expl[count($expl)-1],'style="">','</li>');
if(empty($artist)) die($retu);
$name = get_string_between($expl[count($expl)-1],'. ','"');
$id = get_string_between($expl[count($expl)-1],'title ',' ');
echo "$name ($artist) - $id<br>";

$src2 = getsrc("http://open.spotify.com/track/$id");
$cover = get_string_between($src2,'<img id="cover-art" src="','"');

function get_string_between($string, $start, $end)
{
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}

function getsrc($url)
{
    $ch = curl_init();
    $cookies = tmpfile();
    $user_agent="Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    $retu = curl_exec($ch);

    curl_close($ch);
    return $retu;
}

问题如下:

  • 播放列表信息刷新接近永不,或者如果刷新仍包含过时的信息

您有更好的方法来获取播放列表曲目吗? 我可以使用的任何API吗?

先谢谢

1 个答案:

答案 0 :(得分:3)

这应该有所帮助。 libspotify的php包装器。

https://github.com/vilhelmk/libspotify-php