суббота, 26 июня 2010 г.

Нам песня строить и жить помогает!!!

Закончив свою Альмаматер, которая последние 2 года бесщадно выпинывала своих дитей во взрослую жизнь, у меня появилась уйма свободного времени, которое я тратил на всякие полезные вещи (прохождение FF12, валяние в кровати до патери пульса, шатание по улице с банкой энергетика в руке...). И тут я наткнулся на weborama.ru. Для тех кто не вкурсе это сервис посвещенный музыке, а с верху там есть проигрыватель который подбирает музыку под настроение.


 Рисунок 1 - Weborama
И тут я загорелся желанием закинуть этот принцип в какой нить офлайновый проигрователь, а то моя музыка мне изрядноподнадаела, а офлайновые плееры у меня все висят на горячих клавишах (ctrl+ вверх) - плей/пауза (ctrl+вниз) - стоп, (ctrl+вправо/влево) - следущий/предыдущий трек... Очень удобно! И вот как то сидя в убунте решил написать это все с применением стандартных средств, с помощью telnet + bash + grep + sed + totem/mplayer.
При помощи плагина LiveHTTPHeaders который без всяких усилий прикручивается к firefox благополучно был отловлен запрос от online плеера веборамы.
Рисунок 2 - LiveHTTPHeaders
Примерно такого вида посылается хедер на http://www.weborama.ru/modules/player/index_json.php:

Host: www.weborama.ru
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Referer: http://www.weborama.ru/

А назад вываливается страница примерно с таким содержимым:

{"mood":3,"type":"playlist","identifier":"0","trackList":[{"mimeType":"audio\/mpeg",
"trackNum":1,"location":"http:\/\/node2.weborama.ru\/audio\/df\/
dff5ed819a34495296df45353d78cc3b","identifier":"dff5ed819a34495296df45353d78cc3b",
"title":"Green Light (Feat. Andre 3000)","creator":"\u0414\u0436\u043e\u043d 
\u041b\u0435\u0434\u0436\u0435\u043d\u0434","info":"http:\/\/www.weborama.ru\/music
\/John_Legend\/De_Maxx_Long_Player_14-Remix_Edition\/Green_Light_Feat._Andre_3000\/"
,"album":"De Maxx Long Player 14 - Remix Edition","rating":0,"mood":33,"random":true,
"duration":219000,"bitrate":128,"frequency":44000,"image":{"src":"http:\/\/
node2.weborama.ru\/album\/256\/67\/6727a9070ed75098169e7767066157b2","mimeType":
"image\/jpg","size":256}}]}

Тут нас интерисует только адрес "location" непосредственно в нем указан путь к песне. Можно конечно распарсить всю строчку целиком, ведь тут много чего интересного, и битрейт, и название песни и исполнитель и даже обложка к альбому. Но мне было лень =) по этому я написал только такой вот скрипт для totem:

#!/bin/bash

    echo > totem
i=0
while [ $i -ne $1 ]
do
    (    echo "GET /modules/player/index_json.php?limit=1 HTTP/1.1";
        echo "Host: www.weborama.ru";
        echo;echo;
        sleep 1
    )| telnet www.weborama.ru 80 | grep -o location.*identifier | grep -o http:.*\",| tr -d ',\"\\' >> totem
let 'i+=1'
done
totem --enqueue totem

Этот скрипт вызывается с параметром количества песен, например так "./script.sh 10" - сгинерится плейлист из 10 песен и откроется totemзагруженым плей листом.
для mplayer:

#!/bin/bash

    echo > playlist

while [ 1 ]
do
    (    echo "GET /modules/player/index_json.php?limit=1 HTTP/1.1";
        echo "Host: www.weborama.ru";
        echo;echo;
        sleep 1
    )| telnet www.weborama.ru 80 | grep -o location.*identifier | grep -o http:.*\",| tr -d ',\"\\' > playlist
mplayer -playlist playlist
done


А здесь все еще проще, просто запускается каждый раз мплеер с песней, ctrl+c и заиграет следующий трек.
А если песня понравилась то просто вызываете команду wget название песни и она у вас уже на машине. Можно будет написать свой проигрователь, но пока лень одалевает... А под винду не написал потому что лень выходить из  убунты, она такая класная, тут так все просто и легко, и даже заряд беспроводной мыши показывается!!!!

1 комментарий:

  1. игрался я с веборамой, быстро надоела. мне больше нравится ресурс prostopleer.ru . Он постоянно развивается, и в ней куча приблуд. Правда сейчас началась помалёху монетизация((

    ОтветитьУдалить