Статьи

Использование PHP Last.fm API

Если вы похожи на меня и слушаете музыку во время кодирования, и вам нравится вести записи песен, которые вы слушали, то вы, вероятно, слышали о Last.fm.

Last.fm — это социальный сайт, в основе которого лежит механизм музыкальных рекомендаций. Он отслеживает музыкальные предпочтения своих пользователей и предлагает события, вики и дискографии для художников. Все данные собираются с помощью плагина базы данных Audioscrobbler, установленного с музыкальным проигрывателем каждого пользователя (Spotify, Winamp, iTunes и т. Д.). Прежде всего, Last.fm имеет богатый и впечатляющий API, который разработчики могут использовать для создания мобильных и веб-гибридных приложений.

Если вы создаете сайт для группы или исполнителя и хотите сделать его более социальным, используя Last.fm, необходимо использовать их API. Таким образом, артисты и фанаты могут быть на связи, и фанаты могут оставаться в курсе концертов и новых альбомов.

В этой статье я покажу вам, как запросить API Last FM, чтобы получить информацию для создания фан-сайта для Coldplay . Мы начнем с изучения основ группы, затем узнаем их самую популярную песню, содержание их альбомов и список мероприятий, на которых группа собирается сыграть для фанатов, чтобы получить билеты.

Начиная

Чтобы получить учетную запись API, сначала необходимо создать учетную запись пользователя Last.fm. Войдите в систему под своей учетной записью, а затем перейдите по адресу www.last.fm/api/account, чтобы получить учетную запись API. Когда вы подаете заявку на учетную запись API, у вас есть 4 варианта: Коммерческое использование, Коммерческое использование в рекламных целях, Индивидуальное использование и Некоммерческое использование. Укажите имя приложения, описание и веб-сайт, и вы получите ключ API и секрет.

Как и во всех основных службах API, существует множество различных библиотек, доступных для разных языков программирования, включая PHP. Я буду использовать библиотеку API PHP Last.fm, созданную Феликсом Брунсом и размещенную на GitHub. Клонируйте проект или загрузите ZIP-файл и распакуйте его в рабочий каталог.

Выдача запросов

API Last.fm основан на REST и использует ответы в формате XML, но эта деталь абстрагируется от нас библиотекой PHP Last.fm API. Мы можем взаимодействовать с Last.fm через методы.

Ресурс Last.fm Artist возвращает информацию об исполнителе, событиях, которые исполняет исполнитель, и самых популярных композициях исполнителя. Для начала давайте найдем художника, используя метод Artist::search()

 <?php
require __DIR__ . "/src/lastfm.api.php";
require __DIR__ . "/config.php";

// set api key
CallerFactory::getDefaultCaller()->setApiKey(LAST_FM_API_KEY);

// search for the Coldplay band
$artistName = "Coldplay";
$limit = 1;
$results = Artist::search($artistName, $limit);

echo "<ul>";
while ($artist = $results->current()) {
    echo "<li><div>";
    echo "Artist URL: " . $artist->getUrl() . "<br>";
    echo '<img src="' . $artist->getImage(4) . '">';
    echo "</div></li>";

    $artist = $results->next();
}
echo "</ul>";

Artist::getEvents()

 <?php
// search for the Coldplay band events
$artistName= "ColdPlay";
$events = Artist::getEvents($artistName);
if (!empty($events)) {
    echo "<ul>";
    foreach ($events as $key => $evt) {
        echo "<li><div>";
        echo "Event Number: " . ($key + 1) . "<br>";
        echo "Event Name: " . $evt->getTitle() . "<br>";
        echo "Artists: " . implode(", ", $evt->getArtists()) . "<br>";
        echo "Venue: " . $evt->getVenue()->getName() . "<br>";
        echo "Location: " . 
            $evt->getVenue()->getLocation()->getStreet() . " " .
            $evt->getVenue()->getLocation()->getCity() . " " .
            $evt->getVenue()->getLocation()->getCountry() . "<br>";
        echo "Description: " . $evt->getDescription() . "<br>";
        echo "Event URL: " . $evt->getUrl() . "<br>";
        echo "</div></li>";
    }
    echo "</ul>";
}

Artist::getTopTracks()

 <?php
// get top tracks for Coldplay
$artistName= "Coldplay";
$tracks = Artist::getTopTracks($artist_name);
echo "<ul>";
foreach($tracks as $key => $track) {
    echo "<li><div>";
    echo "Track Number: " . ($key + 1) . "<br>";
    echo "Title: " . $track->getName() . "<br>";
    echo "Played: " . $track->getPlayCount() . " time(s)<br>";
    echo "Duration: " . $track->getDuration() . " seconds<br>";
    echo "Track URL: " . $track->getUrl() . "<br>";
    echo "</div></li>";
}
echo "</ul>";

Ресурс альбома возвращает информацию об альбомах артистов. Album::getInfo()

 <?php
// get top tracks for Coldplay
$artistName= "Coldplay";
$albumName = "Mylo Xyloto";
$album = Album::getInfo($artistName, $albumName);
echo "<div>";
echo "Number of Plays: " . $album->getPlayCount() . " time(s)<br>";
echo 'Cover: <img src="' . $album->getImage(4) . '"><br>";
echo "Album URL: " . $album->getUrl() . "<br>";
echo "</div>";

Аутентификация вашего Mashup

Музыка — большая часть социального взаимодействия; Мне нравится видеть то, что слушают мои друзья, поэтому я могу найти артистов, которых я никогда не слышал раньше, и стать их фанатом. Мы можем получить пользовательскую информацию из API и использовать ее в нашем собственном мэшапе.

Немного странно, что Last.fm не использует OAuth, как другие крупные социальные сайты. Вместо этого они используют аналогичный подход, но имеют один токен вместо токена доступа и секретный токен доступа, используемый Oauth. Описание потока можно найти на сайте www.last.fm/api/webauth . Но опять же, это в основном детали реализации, которые были абстрагированы нашей библиотекой.

Первый шаг — запросить разрешение на получение информации о пользователе. После аутентификации гибридного приложения Last.fm возвращается к URL-адресу обратного вызова, после чего мы можем получить необходимую информацию.

 <?php
require __DIR__ . "/src/lastfm.api.php";
require __DIR__ . "/config.php";

CallerFactory::getDefaultCaller()->setApiKey(LAST_FM_API_KEY);

// create the callback url
$callback = "http://" . $_SERVER["HTTP_HOST"] . "/callback.php";
$url = "http://www.last.fm/api/auth/?api_key=" . LAST_FM_API_KEY . "&cb=" . $callback;
echo '<a href="' . $url . '">Authenticate with Last.fm</a>';

Пользователь перейдет по ссылке и перейдет на страницу аутентификации Last.fm. После проверки подлинности пользователя он будет перенаправлен обратно на сайт, и у нас будет токен, необходимый для выдачи запросов.

 <?php
// get last top 10 track listen by user "gafitescu"
$user = "gafitescu";
$tracks = User::getRecentTracks($user, 10);
echo "<ul>";
foreach($tracks as $key => $track) {
    echo "<li><div>";
    echo "Track Number: " . ($key + 1) . "<br>";
    echo "Title: " . $track->getName() . "<br>";
    echo "Artist: " . $track->getArtist() . "<br>";
    echo "Album: " . $track->getAlbum() . "<br>";
    echo "Track URL: " . $track->getUrl() . "<br>";
    echo "</div></li>";
}
echo "</ul>";

// get user's friends
$friends = User::getFriends($user);
echo "<ul>";
foreach ($friends as $friend) {
    echo "<li><div>";
    echo "Friend: " . $friend->getName() . "<br>";
    echo "Country: " . $friend->getCountry() . "<br>";
    echo "Age: " . $friend->getAge() . "<br>";
    echo "</div></li>";
}
echo "</ul>";

Вывод

В мире, где все имеет тенденцию быть все более и более связанным, и теперь, когда Open Graph становится стандартом, очень важно объединять поклонников с их любимыми исполнителями, и Last FM делает это очень хорошо с помощью своего API. Открытость позволит вам расширить ваше сообщество и повысить осведомленность о вашем продукте / идее, а лучший способ сделать это — использовать публичный API.

Изображение через Fotolia