获取 last.fm 上次播放曲目的简单 PHP 代码
前几天,一位朋友(JulieCheung)找到我,问我是否可以创建一些代码来显示last.fm中最后播放的曲目列表。Julie不是PHP开发人员,因此我提供给她的代码必须易于理解,以便她在需要时可以自行编辑。下面的代码是我想出来的。
$username = 'philipnorton42'; $scrobbler_url = "http://ws.audioscrobbler.com/2.0/user/" . $username . "/recenttracks"; if ($scrobbler_xml = file_get_contents($scrobbler_url)) { $scrobbler_data = simplexml_load_string($scrobbler_xml); echo '
- ';
foreach ($scrobbler_data->track as $track) {
$string = '
- ';
$string .= ''; $string .= '
' . $track->artist . '
'; $string .= '
' . $track->name . 'Played: ' . $track->date . '
'; $string .= ' ';
echo $string;
}
echo '
这段代码的作用是获取包含最新播放歌曲的XML提要last.fm,并将它们转换为一组包含有关曲目信息的列表元素。这是通过使用该simple_xml_load_string()函数非常简单地完成的,该函数在大多数情况下都可以很好地工作,并且在这种情况下只会破坏少量并不真正需要的信息。每首曲目都包含有关艺术家和播放曲目的信息,包括专辑插图。以下是提要中可用信息的细分,以我自己播放列表中的最新歌曲为例。
艺术家:艺术家的名字(例如“黑色大丽花谋杀案”)。
name:这是曲目的名称(例如“DeathmaskDivine”)。
streamable:这是一个布尔值(作为1或0),表示轨道是否可以流式传输。
mbid:mbid是歌曲的ID,但在通过该simplexml_load_string()函数传递XML提要时会丢失。然而,这并不重要,因为我们在打印结果时可能不需要它。
专辑:这是曲目所属专辑的名称(例如“Nocturnal”)。
url:这是一个链接回last.fm站点上曲目信息的URL。对于我上面给出的示例,这是http://www.last.fm/music/The+Black+Dahlia+Murder/_/Deathmask+Divine。
image:这是一个数组,如果专辑封面有不同的图像。尽管从XML转换中丢失了大小,但数组转换为以下大小:您可以在上面的示例中看到,我使用$track->image[0]选择了数组中的小图像大小。
0:小图像尺寸,34pxx34px。
1:中等图像尺寸,64像素x64像素。
2:大图像尺寸,128像素x128像素。
3:超大图像尺寸,300像素x300像素。
date:这是播放曲目的日期和时间(例如“21Nov2011,15:28”)。
此代码的一个补充是停止它在每次加载页面时拉入整个提要,这并不是真正需要的。添加少量缓存代码是减少页面加载时间的理想选择(尤其是当我们依赖第三方服务时)。我们只需要将数据存储在一个单独的文件中大约3分钟左右(一首歌的平均播放时间),所以这个时间检查也被添加到代码中。
180) { //如果文件是在3分钟前创建的,则删除。 unlink($scrobbler_cache_file); } else { $scrobbler_url = realpath('./' . $scrobbler_cache_file); } } if ($scrobbler_xml = file_get_contents($scrobbler_url)) { $scrobbler_data = simplexml_load_string($scrobbler_xml); if (!file_exists($scrobbler_cache_file)) { file_put_contents($scrobbler_cache_file, $scrobbler_xml); } echo '
- ';
foreach ($scrobbler_data->track as $track) {
$string = '
- ';
$string .= ''; $string .= '
' . $track->artist . '
'; $string .= '
' . $track->name . 'Played: ' . $track->date . '
'; $string .= ' ';
echo $string;
}
echo '
您可以在JulieCheung的网站上看到正在运行的代码(或至少是一个变体)。如果你想让我为你自己的博客写一些类似的东西,那么让我知道,只要我能用它创建一篇博客文章(也许还有一个反向链接),我很乐意提供帮助。