PHP ile Last.fm API kullanımı

Bu yazımda php ile beraber lastfm api‘yi nasıl kullabileceğimizi anlatacağım. Beraber api’nin bir method’una parametre gönderip, api’den dönen cevabı işleyerek ekrana çıktılayacağız. Bu yazı her ne kadar lastfm api’ye yoğunlaşacak olsada diğer REST servislerinin çağrılışı ve kullanımı da bu yazıda anlatılacaklarla oldukça benzerlik taşır.

Ben bu yazıda örnek olarak artist.getinfo methodunu kullanacağım. Kısaca açıklamak gerekirse bu method ismini yazdığımız sanatçının lastfm’deki biyografisini, 5 farklı ebattaki resmini, bu sanatçıya müzikal anlamda en çok benzeyen 5 sanatçıyı, sanatçının yaptığı müzik türünü vb olmak üzere pek çok bilgiyi getiriyor. Şu adresten de bakacak olursanız ilgili method’un sayfada örnek bir kullanımı mevcut.

Ayrıca isterseniz lastfm api’nin sahip olduğu methodların tamamına bu adresten bakabilirsiniz.

Başlıyoruz

Aşağıdaki linki tarayıcınızın adres satırına kopyalayıp yapıştırarak ilk denememize başlayalım.

http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Evanescence&api_key=b25b959554ed76058ac220b7b2e0a026

Dönen sonuç aşağıdaki şekilde olacaktır.

<lfm status="ok">
<artist>
  <name>Evanescence</name>
          <mbid>f4a31f0a-51dd-4fa7-986d-3095c40c5ed9</mbid>
        <url>http://www.last.fm/music/Evanescence</url>
  <image size="small">http://userserve-ak.last.fm/serve/34/66988044.png</image>
  <image size="medium">http://userserve-ak.last.fm/serve/64/66988044.png</image>
  <image size="large">http://userserve-ak.last.fm/serve/126/66988044.png</image>
  <image size="extralarge">http://userserve-ak.last.fm/serve/252/66988044.png</image>
  <image size="mega">http://userserve-ak.last.fm/serve/500/66988044/Evanescence+Sem+ttulo+1.png</image>
  <streamable>1</streamable>
  <stats>
    <listeners>1972008</listeners>
    <playcount>82436313</playcount>
      </stats>
...
...
...

Tarayıcımıza yapıştırdığınız linkte belirli parametreler bulunmakta. dikkatlice incelersek:

http://ws.audioscrobbler.com/2.0/

Bu adres lastfm api kullanırken kullanacağımız standart ifade. parametrelerimizin gittiği adres.

method=artist.getinfo

Lastfm’in Artist.getInfo method’unu kullanacağımızı ve bu method’a parametre göndereceğimizi belirtiyoruz.

artist=Evanescence

Bilgilerini görüntülemek istediğimiz sanatçının ismi.

api_key=b25b959554ed76058ac220b7b2e0a026

Koyu alan lastfm’in şu an api sayfasında deneme amaçlı herkese açık olarak sunduğu api key. Bu api’yi kullanmak tamamen ücretsiz olduğu için üye olup kendinize ait bir api key’de oluşturabilirsiniz. Bu sayede authentication gereken method’ları kullanabilir ve api’nizin kullanım istatistiklerini izleyebilirsiniz.

Methodumuzun sayfasında göreceğimiz üzere başka parametrelerde alabiliyor.

Örneğin tarayıcımızdaki linkin sonuna lang=tr eklersek methodumuz bize sonuçları türkçe olarak döndürecektir.

http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Evanescence&api_key=b25b959554ed76058ac220b7b2e0a026&lang=tr

Peki ya PHP ?

Buraya kadar size api’yi ve örnek methodumuzu çok basitçe tanıttım. Şimdi sıra bu dönen sonuçları php ile işlemeye geldi. Öncelikle api standart olarak sonuçları XML formatında getirmekte. Fakat parametrelere yani linkimizin sonuna format=json ifadesini eklersek sonuçları JSON olarakda getirebiliriz.

http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Evanescence&api_key=b25b959554ed76058ac220b7b2e0a026&lang=tr&format=json

Aşağıdaki örnek kodları kaydedip, direk çalıştırarak kullanabilirsiniz. Her kod bloğunun başına koyduğum comment’lerden kodların ne yaptığını rahatlıkla anlayabilirsiniz. Kısaca bahsetmek gerekirse api’den sonuçları file_get_contents ile XML formatında alıp php’nin SimpleXML class’ından türeyen simplexml_load_string fonksiyonuyla işliyoruz. Ardından sonuçları bir diziye kaydedip ekrana çıktılıyoruz.

<?php
/**
 * yazar            Güven ŞAHİN <guven.sahin@outlook.com>
 * web              http://guven.kimdir.com
 * son güncelleme   25 Eylül 2012
 */

// geçerli bir html belgesi olmadığı için karakter setini ayarlıyoruz
header('Content-Type:text/html; charset=utf-8');

// ilk olarak api'ye istediğimizi yapıyoruz ve sonuçları alıyoruz.
$path = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Evanescence&api_key=b25b959554ed76058ac220b7b2e0a026&lang=tr';
$data = file_get_contents($path);

// api'den sonuçları alıp almadığımızı kontrol ediyoruz
if (!$data)
{
    die("api'ye ulaşılamıyor.");
}

// php'nin simplexml sınıfını kullanarak dönen xml sonuçları parse ediyoruz
$xml = simplexml_load_string($data);

// simplexml'in çalışıp çalışmadığını kontrol ediyoruz
if (!$xml)
{
    die("api'den dönen sonuçlar geçerli bir xml verisi değil.");
}

// dönen sonuçları işliyoruz
$artist['name']       = (string) $xml->artist->name;
$artist['mbid']       = (string) $xml->artist->mbid;
$artist['match']      = (string) $xml->artist->match;
$artist['url']        = (string) $xml->artist->url;
$artist['small']      = (string) $xml->artist->image[0];
$artist['medium']     = (string) $xml->artist->image[1];
$artist['large']      = (string) $xml->artist->image[2];
$artist['extralarge'] = (string) $xml->artist->image[3];
$artist['mega']       = (string) $xml->artist->image[4];

// biyofrafi bilgisi her sanatçıda olmayabileceği için diziye atamadan önce kontrol ediyoruz.
if (!empty($xml->artist->bio->summary))
{
    $artist['bio'] = strip_tags($xml->artist->bio->summary);
}

// şimdi sonuçları ekrana çıktılıyoruz
echo '<p>';
echo $artist['name'] . '<br />';
echo $artist['url'];
echo '</p>';

echo '<img src='.$artist['large'].' />' . '<br />';

if (isset($artist['bio']))
{
    echo '<p>' . $artist['bio'] . '</p>';
}

?>

Sayfayı çalıştırdığınızda görünümü aşağıdaki şekilde olacaktır.

Örnek olarak yazdığım bu kodu ilk defa api (web servis) kullanacak arkadaşlar olabileceği için oldukça basite indirgedim. İstediğiniz method ve göndereceğiniz parametreler değişeceği için siz ihtiyacınız olacağı şekilde daha modüler hale getirip kullanabilirsiniz.

Son olarak örnek kodu buradan indirebilir, isterseniz de lastfm api kullanarak geliştirmiş olduğum uygulamamı şu adresten inceleyebilirsiniz.

Hoşçakalın.

One thought on “PHP ile Last.fm API kullanımı

  1. Hocam merhaba öncelikle anlatımınız için çok teşekkür ederim yanlız verdiğinizz örneği çalıştıramadım

    sayfa sürekli boş olarak dönüyor ve kaynakta

    sadece bu kod var nedeni nedir acaba ? bilgi verirseniz sevinirim

Bir Cevap Yazın