PHP使用iTunes API生成预览链接 - SLOW

时间:2014-04-27 14:53:59

标签: php html mysql itunes

我遇到了问题。我正在尝试使用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&iacute;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或其他?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果有人发现这个有用......我找到了一个更明智的方法来做到这一点!

我只是改变了我的问题的焦点,所以现在,而不是在SQL查询中生成链接,这显然非常慢而且不是很明智......,每次用户发送新歌时都会生成一个链接到SQL数据库。

因此,用户发送一首歌曲(艺术家,标题),就在将数据插入数据库之前,我使用itunes API生成与给定艺术家和歌曲标题的预览链接。然后我将艺术家,标题和预览链接输入到数据库中。

因此,生成包含所有歌曲,标题,艺术家和预览链接的数据表就像从SQL DB中提取数据一样简单。

有时候思考事情会非常有用......