Стырить превьюшки из Last.fm

Тема в разделе "Интересные ресурсы", создана пользователем Albert22, 21 янв 2009.

Статус темы:
Закрыта.
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Небезызвестный сервис http://last.fm располагает достаточно обширной музыкальной базой, более того предоставляет API для работы с ней. Эти два факта, а также возможность прослушать короткие отрезки песен заинтересовали меня т.к. мне эта самая прослушка для одного проекта со списком песен очень кстати.
    Я начал с того что тупо скопипастил исходный код плеера на их сайте. Вот как он выглядит на этой странице:
    Код:
    <div style="visibility: visible;" id="lfmPlayer_container">
    <embed type="application/x-shockwave-flash" src="http://cdn.last.fm/webclient/s12n/s/5/lfmPlayer.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" menu="true" quality="high" wmode="transparent" bgcolor="#fff" flashvars="lang=en&amp;lfmMode=playlist&amp;FOD=true&amp;resourceID=1016509&amp;resname=What+a+Wonderful+World&amp;restype=track&amp;artist=Louis+Armstrong&amp;albumArt=http%3A%2F%2Fuserserve-ak.last.fm%2Fserve%2F64s%2F21596561.jpg" allowscriptaccess="always" allowfullscreen="true" id="lfmPlayer" name="lfmPlayer" swliveconnect="true" align="middle" width="300" height="221">
    </div>
    <script>
    var lfmPlayer_params = {"movie":"http:\/\/cdn.last.fm\/webclient\/s12n\/s\/5\/lfmPlayer.swf","flashvars":"lang=en&lfmMode=playlist&FOD=true&resourceID=1016509&resname=What+a+Wonderful+World&restype=track&artist=Louis+Armstrong&albumArt=http%3A%2F%2Fuserserve-ak.last.fm%2Fserve%2F64s%2F21596561.jpg","width":300,"height":221,"majorversion":7,"build":"0","allowscriptaccess":"always","allownetworking":"all","allowfullscreen":"true","quality":"high","bgcolor":"#fff","wmode":"transparent","menu":"true","id":"lfmPlayer","setcontainercss":false,"swliveconnect":"true","name":"lfmPlayer","align":"middle"};
    UFO.create(lfmPlayer_params, "lfmPlayer_container");
    </script>
    
    После небольшой обработки напильником он приобрёл следующий вид (таким я его у себя на сайте и разместил)
    Код:
    <object type="application/x-shockwave-flash" data="http://cdn.last.fm/webclient/s12n/s/5/lfmPlayer.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
            id="lfmPlayer" name="lfmPlayer" align="middle"
            width="300" height="221">
        <param name="movie" value="http://cdn.last.fm/webclient/s12n/s/5/lfmPlayer.swf" />
        <param name="flashvars" value="lang=ru&amp;lfmMode=playlist&amp;FOD=true&amp;resname=What+a+Wonderful+World&amp;restype=track&amp;artist=Louis+Armstrong&amp;autostart=true" />
        <param name="allowScriptAccess" value="always" />
        <param name="allowNetworking" value="all" />
        <param name="allowFullScreen" value="true" />
        <param name="quality" value="high" />
        <param name="bgcolor" value="fff" />
        <param name="wmode" value="transparent" />
    </object>
    
    Самая важная там эта строка:
    Код:
    <param name="flashvars" value="lang=ru&amp;lfmMode=playlist&amp;FOD=true&amp;resname=What+a+Wonderful+World&amp;restype=track&amp;artist=Louis+Armstrong&amp;autostart=true" />
    
    В оригинале там присутствует ещё и resourceID=1016509. Я не знал что это, и попробовал убрать его.
    Работать продолжило, и я забыл об этой строке.
    Вообще, самое чёткое у них — то, что передаёшь только исполнителя и название песни и ему этого хватает! Очень гибко и удобно.
    Но, плеер за рамками их сайта работает дубово — многие кнопки (типа «Buy this CD») не работают. Мне этот вариант не очень нравится (а если бы работали — тем более бы не понравился), поэтому я начал выискивать откуда их проигрыватель достаёт эти mp3 сэмплы чтобы их потом передать этому плееру.
    Наверняка где-то есть некий php скрипт который принимает
    resname=What+a+Wonderful+World&amp;restype=track&amp;artist=Louis+Armstrong
    а в ответ выдаёт ссылку на вот это:
    которое редиректит на ту самую превьюшку для их плеера:
    Эти ссылки я достал вручную через плагин-медиаграббер Firefox'a. А нужно это сделать автоматически и на PHP.
    Кстати, я потом нашёл что это за resourceID=1016509 благодаря тем самым API: это элемент id
    Вот полная XML информация об этой песне
    Код:
    <lfm status="ok">
    <track>
    <id>1016509</id>
    <name>What a Wonderful World</name>
    <url>
    http://www.last.fm/music/Louis+Armstrong/_/What+a+Wonderful+World
    </url>
    <duration>134000</duration>
    <streamable fulltrack="0">1</streamable>
    <listeners>215073</listeners>
    <playcount>891826</playcount>
    <artist>
    <name>Louis Armstrong</name>
    <mbid>eea8a864-fcda-4602-9569-38ab446decd6</mbid>
    <url>http://www.last.fm/music/Louis+Armstrong</url>
    </artist>
    <album position="13">
    <artist>Louis Armstrong</artist>
    <title>Greatest Hits</title>
    <mbid>9b07899a-57bd-491c-8360-355e6ee9b2bb</mbid>
    <url>
    http://www.last.fm/music/Louis+Armstrong/Greatest+Hits
    </url>
    <image size="small">http://userserve-ak.last.fm/serve/64s/21596561.jpg</image>
    <image size="medium">http://userserve-ak.last.fm/serve/126/21596561.jpg</image>
    <image size="large">
    http://userserve-ak.last.fm/serve/174s/21596561.jpg
    </image>
    </album>
    ... вырезал ...
    </track>
    </lfm>
    
    Итак, всё, что передаётся их плееру на их сайте у меня есть: это исполнитель и название песни, а также resourceID, который легко достаётся из их же общедоступного XML источника.
    Вот мне и интересно, как достать mp3 сэмпл для конкретной песни? Чтобы потом передать его какому-то стороннему плееру наподобие JW и успокоиться...)

    Добавлено через 15 минут
    UPD:
    Обратил повышенное внимание на
    Как видим, там единственный задающий параметр — 111088900.
    Попробовал методом тыка подсунуть туда полученный посредством XML id, соответственно вот что получилось:
    Я не знаю совпадение ли это или ответ на вышепоставленный вопрос, но заиграла та же композиция, но в другой версии...
     
  2. ModeX

    ModeX Прохожие

    Так надо было постить в раздел о PHP.
     
  3. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Кстати да, насчёт раздела: я, если честно, затруднился в выборе.
    Если есть более подходящий, переместите пожалуйста!
    ModeX, ведь вопрос-то по сути не о PHP. Его вообще ни к какому из существующих разделов, как по-моему, нельзя расквалифицировать. Значит, в оффтопик, и из присутствующих там разделов я выбрал этот.

    Добавлено через 15 минут
    UPD UPD:
    XML-ный id песни Coldplay — Viva la vida 182293060.
    Однако, файла http://play.last.fm/preview/182293060.mp3 не существует...
     
  4. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Скачал плеер, засунул в Adobe Flash CS4, тот что-то ругнулся и заглючил. Выдал что swf-файл лезет к
    Код:
    http://ext.last.fm//1.0/webclient/xmlrpc.php
    Вбив этот адрес в гугл, попал на интересный материал: LastFM12UnofficialDocumentation
     
Статус темы:
Закрыта.