За последние 24 часа нас посетили 17799 программистов и 1614 роботов. Сейчас ищут 1453 программиста ...

Работа с Last.FM

Тема в разделе "Решения, алгоритмы", создана пользователем lexa, 5 апр 2008.

  1. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Сначала хотел поближе с Zend Framework познакомиться, поковырять. 20 метров в распаковке. 20. Метров. Раздумал, зато нашёл класс для работы с популярным сервисом Last.FM на 20 Кб. И решил сделать свой. Получилось меньше 1 Кб.

    PHP:
    1. <?php
    2. class LastFM {
    3.  
    4. ////////////////////////////////////////////////////////////////////////////////
    5.  
    6.     function __call($method, $params){
    7.         list($type, $that) = explode('_', strtolower($method), 2);
    8.  
    9.         $url .= 'http://ws.audioscrobbler.com/1.0/';
    10.         $url .= $type.'/'.urlencode($params[0]).'/';
    11.         $url .= (is_string($params[1]) ? urlencode($params[1]).'/' : '');
    12.         $url .= $that.'.xml';
    13.         $url .= (is_array($query = end($params)) ? '?'.http_build_query($query) : '');
    14.  
    15.         $status = reset(get_headers($url));
    16.         $status = trim(strstr($status, ' '));
    17.  
    18.         unset($this->error);
    19.  
    20.         if ($status == '200 OK')
    21.             return simplexml_load_string(file_get_contents($url));
    22.  
    23.         $this->error = $status;
    24.     }
    25.  
    26. ////////////////////////////////////////////////////////////////////////////////
    27.  
    28. }
    29. ?>
    Пользовать так:
    PHP:
    1. <?php
    2. $lastfm = new LastFM;
    3.  
    4. print_r($lastfm->user_profile('RJ'));
    5.  
    6. print_r($lastfm->user_artistTags('RJ', array('artist' => 'Metallica')));
    7.  
    8. print_r($lastfm->track_artistTags('Metallica', 'Enter Sandman'));
    9.  
    10. print_r($lastfm->album_info('Metallica', 'Ride the Lightning'));
    11. ?>
    И всяко разно.

    В случае успеха класс вернёт SimpleXML обьект. В противном случае в переменной $lastfm->error будет хидер с ощибкой (400 Malformed API Call (пример этой ошибки), 404 Not Found и т.д.).
     
  2. Anonymous

    Anonymous Guest

    Ход мыслей идентичен моему на 100% )))