我遇到了问题。我正在尝试使用iTunes搜索API生成预览歌曲按钮以预览存储在MySQL数据库中的歌曲。
我写了以下代码:
<?php
// Script de conexión a la base de datos.
include "includes/connect.php";
$songs = "";
$query = $db->prepare("SELECT artista, titulo, nombre, count(id) as uploadCount FROM canciones GROUP BY artista, titulo ORDER BY uploadCount DESC");
$query->execute(array($songs));
$songs = $query->fetchAll(PDO::FETCH_ASSOC);
echo '<table id="tblCanciones" width="95%" border="0" align="center" cellpadding="0">
<tr align="left">
<th class="tblCancionesHeader" width="33%">Artista</th>
<th class="tblCancionesHeader" width="32%">Título</th>
<th class="tblCancionesHeader" width="20%">Pedida por</th>
<th class="tblCancionesHeader" width="10%">Veces</th>
<th class="tblCancionesHeader" width="4%"></th>
</tr>';
foreach($songs as $song) {
// Buscar el link de la preview de la canción en la iTunes store...
$term = urlencode($song["artista"])."+".urlencode($song["titulo"]);
$json = file_get_contents('http://itunes.apple.com/search?term='.$term.'&limit=1&entity=musicArtist,musicTrack,album,mix,song');
$array = json_decode($json, true);
echo '<tr align="left">
<td nowrap="nowrap" class="tblCancionesFila">'.$song["artista"].'</td>
<td nowrap="nowrap" class="tblCancionesFila">'.$song["titulo"].'</td>
<td nowrap="nowrap" class="tblCancionesFila">'.$song["nombre"].'</td>
<td nowrap="nowrap" class="tblCancionesFila">'.$song["uploadCount"].'</td>';
if (!isset($array['results'][0]['previewUrl'])) {
echo '<td nowrap="nowrap" class="tblCancionesFila">---</td>';
} else {
echo '<td nowrap="nowrap" class="tblCancionesFila"><a href="'.$array['results'][0]['previewUrl'].'"><img src="images/imgPreview.jpg" width="20" height="20" alt="preview" title="preview" border="0" /></a></td>';
}
echo '</tr>';
}
echo '</table>';
?>
它或多或少地有一些限制。我只是想要它来获取预览链接,所以我将结果限制为1.所以有时它找不到结果......
主要问题是获取结果很慢,速度很慢......
我想我做错了什么。
有没有其他简单的方法可以获得相同的功能,但可能使用itunes以外的其他服务,如spotify,soundcloud或其他?
谢谢!
答案 0 :(得分:0)
如果有人发现这个有用......我找到了一个更明智的方法来做到这一点!
我只是改变了我的问题的焦点,所以现在,而不是在SQL查询中生成链接,这显然非常慢而且不是很明智......,每次用户发送新歌时都会生成一个链接到SQL数据库。
因此,用户发送一首歌曲(艺术家,标题),就在将数据插入数据库之前,我使用itunes API生成与给定艺术家和歌曲标题的预览链接。然后我将艺术家,标题和预览链接输入到数据库中。
因此,生成包含所有歌曲,标题,艺术家和预览链接的数据表就像从SQL DB中提取数据一样简单。
有时候思考事情会非常有用......