11 февраля 2009 г.

Play Last.fm in mpd

Linux guide to Play Last.fm streams in mpd
  1. Install Python, install and configure MPD, install mpc(optional)
  2. Download lastfmproxy
  3. Unpack it to /usr/local/bin/lastfmproxy
  4. edit /usr/local/bin/lastfmproxy/config.py
    username and password are enought
  5. make file /etc/init.d/lastfmproxy:
    #!/bin/sh

    case "$1" in
      start)
            pkill -f "lastfmproxy/main.py"
            /usr/local/bin/lastfmproxy/main.py 1,2>/dev/null &
            ;;
      stop)
            pkill -f "lastfmproxy/main.py"
            ;;
      restart)
            pkill -f "lastfmproxy/main.py"
            /usr/local/bin/lastfmproxy/main.py 1,2>/dev/null &
            ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|status}" >&2
            exit 1
            ;;
    esac

    exit 0
  6. add lastfmproxy to runlevels 2-5 (for example with help of sysv-rc-conf)
  7. Make file executable and run lastfmproxy:
    sudo chmod u+x /etc/init.d/lastfmproxy sudo /etc/init.d/lastfmproxy start
  8. You can now find interesting page with your browser "http://localhost:1881/"
  9. If you have mpc installed then find file m3u-handler.sh and use it to add radio streams to mpd
    /path_to_file/m3u-handler.sh "url"
    You may need to make it executable:
    chmod +x /path_to_file/m3u-handler.sh
    You can just use
    mpc add "url" mpc play
  10. Some usefull urls:
    http://localhost:1881/user/username/recommended.mp3
    http://localhost:1881/user/username/personal.mp3
    http://localhost:1881/globaltags/tag.mp3
    Only one stream can be played at time
  11. Usefull info:
    Read /usr/local/bin/lastfmproxy/README.txt because you can find there how to change your firefox settings for changing station on proxy while choosing them on last.fm site
  12. You may also install QMPDClient or sonata for Graphical frontedn to MPD
    There exist other frontends too:
    ario - GTK+ client for the Music Player Daemon (MPD)
    gimmix - graphical music player daemon (MPD) client using GTK+2
    glurp - gtk2.4+ frontend to the Music Player Daemon (MPD)
    gmpc - Gnome Music Player Client (graphical interface to MPD)
    pygmy - PyGTK client for the Music Player Daemon (MPD)
    pympd - Frontend for mpd in the style of rhythmbox and itunes
    sonata - GTK+ client for the Music Player Daemon (MPD)
    xfmpc - graphical GTK+ MPD client

P.S. if you want scrobbling to last.fm you may install "lastmp - MPD client for lastfmsubmitd" (don't forget to configure it)
P.P.S. I recommend you to use xbindkeys to control MPD with mpc. Here is my ~/.xbindkeysrc:
"mpc stop" Control+Alt + Delete "mpc toggle" Control+Alt + Insert "mpc toggle" Control+Alt + Home "mpc next" Control+Alt + Next "mpc prev" Control+Alt + Prior "qmpdclient" Control+Alt + P "mpc seek +00:00:02" Control+Alt + Right "mpc seek -00:00:02" Control+Alt + Left


P.P.P.S. If you are expiriencing lags you may increase buffer size for mpd(/etc/mpd.conf):
http_buffer_size "1024" http_prebuffer_size "256"

В Gentoo всё проще. Там просто надо размаскировать пакет lastfmproxy, поставить его, отредактировать /usr/share/lastfmproxy/config.py и можно добавлять его в ранлевел

11 Ответов::

  1. АнонимныйMar 10, 2009 05:45 PM
    мои приветствия! понять не могу, что не так: после переуставновки lenny ваш способ перестал работать. в прошлый раз сделал все как написано, и так разжевано больше некуда, куда проще? все получилось легко и красиво. после переустановки не получается выполнить /etc/init.d/lastfmproxy. пишет, что отказано в доступе. отказано всем, и root, и остальным. все пепепроверил, содержание скрипта полностью совпадает...
    ОтветитьУдалить
  2. АнонимныйMar 10, 2009 05:50 PM
    продолжение: при этом main.py запускается нормально и proxy поднимается. просто я новичок в linux и мне интересно разобраться, да и потом, я не понимаю как main.py поместить в автозапуск...
    ОтветитьУдалить
  3. Я забыл про права написать:
    sudo chmod u+x /etc/init.d/lastfmproxy
    :)
    ОтветитьУдалить
  4. Ну вот тот скрипт /etc/init.d/lastfmproxy - скрипт автозапуска.

    а утилита sysv-rc-conf добавить его в атозапуск.

    добавлять в неё надо приблизительно так:
    (из консоли)
    sysv-rc-conf

    вылезет окошко в котором надо найти lastfmproxy и добавить его в 1-5 ранлевелы:
    Service 1 2 3 4 5 0 6 S
    lastfmproxy [] [*] [*] [*] [*] [] [] []
    ОтветитьУдалить
  5. АнонимныйMar 10, 2009 06:42 PM
    )) благодарю за столь скорый ответ, Ярослав. А с sysv-rc-conf я разобрался... точнее с тем, как добавить например, подобный lastfmproxy скрипт без расширения в авторан на разных ранлевелах. а вот как сделать это на питоновском файле с расширением .ру пока не знаю... т.е. я так понимаю, что из него ручками можно сделать аналог lastfmproxy и тоже положить в init.d... короче говоря, вспомнив все, что я в школе проходил по программирванию и прочитав содержание lastfmproxy, я сделал вывод, что он собственно есть ни что иное, как просто удобный "рычаг" управления main.py, скрипт управления скриптом. соответственно, последний можно просто не так удобно, но все же запускать и отдельно. т.е. командовать им отдельно. и , если положить, например, main.py в init.d, то он просто будет подниматься каждый запуск, и чтобы его выключить, нужно было бы выполнить pkill -f "lastfmproxy/main.py". правильно ли я все понял?
    ОтветитьУдалить
  6. АнонимныйMar 10, 2009 06:47 PM
    нуууууу.... я имею ввиду хотя бы в общих чертах ))
    ОтветитьУдалить
  7. Инит скрипты запускаются только если понимают start как аргумент.
    /etc/init.d/anyscript start

    если же не понимают то еще вариант автозапуска это добавление проги в rc.local (/etc/rc.local or /etc/rc.d/rc.local or /etc/conf.d/start.local в зависимости от дистрибутива). обычно он должен быть исполняемым, ну и что бы запускать lastfmproxy должен выглядеть примерно так(в генту "exit 0" не нужен):
    #!/bin/sh
    /usr/local/bin/lastfmproxy/main.py
    exit 0
    ОтветитьУдалить
  8. АнонимныйMar 11, 2009 03:25 PM
    спасибо, Ярослав. все проблемы улажены )) спасибо также за пояснения со скриптами. я сижу на debian где-то месяц. долго готовился оставить windows, наконец получилось - пока нет ни учебы, ни работы )) очень хочу поднатореть настолько, чтобы через несколько месяцев суметь мигрировать в gentoo... пока сложно понять все его portages и т п, не будучи знакомым с bsd и только месяцем опыта в линукс вообще
    ОтветитьУдалить
  9. АнонимныйMar 18, 2009 04:25 PM
    1. Получаю от lastfmproxy ошибку при попытке добавить в любимые или забанить композицию с помощью ссылок на странице http://localhost:1881/ в браузере. cсылки skip и refresh работают нормально.

    http://pic.ipicture.ru/uploads/090319/juFijL7dqz.png

    2. есть ли какая-либо команда для mpc или ncmpc, чтобы пропустить текущий трек?
    ОтветитьУдалить
  10. Вообще похоже на то, что ластфм обновил протоколы. У меня тоже не работает(уже) love & ban
    ОтветитьУдалить
  11. АнонимныйMar 19, 2009 12:54 PM
    жжжжаль... ждем решений ))
    ОтветитьУдалить