PHP: image charts на last.fm

    Сразу скажу — для людей, не знающих, что такое last.fm (либо для людей, не использующих эту социальную сеть), этот пост не обязательно будет бесполезным. Вы можете сделать на основе моего кода, к примеру, картинку, отображающую последние десять топиков на вашем форуме.

    Те же, кто знаком с социальной сетью last.fm, наверняка знают о наличии так называемых image charts. Это генерирующиеся картинки, которые можно вставить себе в блог, в подпись или еще куда. Что ты слушал за неделю, что ты слушал буквально сейчас, каких исполнителей ты больше всего слушаешь…

    Так вот, однажды меня не устроили такие чарты, несмотря на множество готовых стилей (и возможность создать новые). Ну не нравятся, не нравятся мне сглаженные шрифты! Я решил написать PHP-скрипт с аналогичным списком Recent Tracks/Top artists, который можно было бы вставить как изображение.

    Настройка PHP
    (Если до этого вы не работали с библиотекой gd для PHP. Если работали и все настроено, смело пропускайте этот шаг.)

    Нам понадобится веб-сервер с PHP и подключенной к нему библиотеке gd. С PHP под Windows никаких проблем нет — вам надо лишь раскомментировать одну строку в php.ini:
    extension=php_gd2.dll

    И, возможно, надо будет указать директорию, в которой лежат все dll'ки:
    extension_dir = "X:\php\ext\"

    Под Linux — в Ubuntu за вас уже все сделали — в официальных репозиториях есть пакет php5-gd. Посмотрите в репозиториях вашего дистрибутива. В крайнем случае — вам придется компилировать PHP из исходников с параметром --with-gd. Затем аналогично подключаете библиотеку gd к PHP.

    Подробнее о работе с сервером Audioscrobbler
    На сайте Audioscrobbler есть таблица, в которой перечислена вся доступная информация и способы, как ее получить — Plain, XML, XSPF, iCal, RSS.
    По мне, так Plain проще всех. Для примера возьмем Recent tracks, то есть последние 10 прослушанных композиций.

    Для проверки зайдите сюда:
    http://ws.audioscrobbler.com/1.0/user/username/recenttracks.txt
    (Где username — ваш логин на last.fm)

    Перед запятой — время, когда был прослушан трек (можно сконвертировать при помощи функции date). После запятой — то, что нам надо — исполнитель и название трека. Ну а дальше вы ограничены лишь собственной фантазией :)
    А, да. Предупреждаю сразу. С кириллицей у функции imagestring большие проблемы, так что надо либо конвертировать кириллицу в транслит, либо использовать ttf для отрисовки.

    Так же, может возникнуть проблема с различными нестандартными символами (типа аумляутов). Проблему можно решить либо обычной функцией str_replace, либо нестандартной функцией html_to_utf8 вкупе с str_replace.

    Готовый код PHP-скрипта recent tracks с комментариями

    Надеюсь, это будет хоть кому-то интересно/полезно. Очень приветствуется конструктивная критика по оформлению хабратопиков, т.к. я еще новичок. :)

    Работу скриптов можно посмотреть у меня в профиле — i0ngunn3r.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 2

      0
      Вместо $username = "RJ"; я бы всё же использовал define('USERNAME', 'RJ');, но это мелочь.

      За таблицу скробблера отдельное спасибо, не знал, что такая есть. %)

      А так – хорошая статейка!
        0
        А в именно php5 большой надобности нет, этот код и на четвёрке работать должен, в общем-то.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое