Добавить Радио Last.fm В Плейлист Mpd

Здравствуйте, Хабраменш! ИчБина.

Все началось с поддержки ласт фм радио было так неуклюже реализовано в MPD что я даже перестал компилировать эту функцию.

Неуклюжесть заключалась в том, что после настройки на канал всё равно приходилось вручную добавлять треки в плейлист, ведь сервер выдаёт по пять треков за запрос.

Поэтому после того, как все треки были проиграны, вам необходимо повторить запрос и получить следующие 5 треков! Далее мы поговорим о скриптах, которые автоматизируют этот процесс.



Bash.fm - работа над кораблями

Оригинальная идея найдена.

здесь .

Скрипты по ссылке давно устарели и не работали.

Кроме того, автор скриптов имеет очень уникальный стиль и сумел добавить ненужные зависимости, например, от lynx. Поэтому большую часть пришлось изменить, хотя логика работы осталась прежней:

  • Инициализируйте сеанс с помощью fmstart
  • Настраиваемся на канал с помощью fmpersonal, fmart,.

  • Добавляем треки из канала в плейлист с помощью fmget (5 треков на один вызов)
  • ВЫГОДА!
Начнем с fmstart:
  
  
  
  
  
  
  
  
   

root@Buffalo:~# cat /mnt/sd/bin/fmstart #!/bin/sh username=$(sed -nr 's/^username=(.

*)/\1/p' ~/.

bashfm) password=$(sed -nr 's/^password=([^[:space:]]*).

*/\1/p' ~/.

bashfm) mediaplayer=$(sed -nr 's/^mediaplayer=(.

*)/\1/p' ~/.

bashfm) if [ ! -z "$password" ]; then passwordmd5=$(echo -n $password | md5sum | sed -nr 's/([^[:space:]]*).

*/\1/p') else passwordmd5=$(sed -nr 's/^passwordmd5=([^[:space:]]*).

*/\1/p' ~/.

bashfm) fi echo 'username='$username > ~/.

bashfm echo 'password=' >> ~/.

bashfm echo 'mediaplayer='"$mediaplayer" >> ~/.

bashfm echo 'passwordmd5='$passwordmd5 >> ~/.

bashfm login_url=' http://ws.audioscrobbler.com/radio/handshake.php ?' login_url="$login_url"'version=1.1.1&platform=linux&username=' login_url="$login_url"$username'&passwordmd5='$passwordmd5 login_url="$login_url"'&debug=0&partner=' echo "login_url=$login_url" >> ~/.

bashfm wget -q -O - "$login_url" >> ~/.

bashfm echo >> ~/.

bashfm

Для корректной работы скрипта необходимо сначала создать файл ~/.

bashfm следующего содержания:

root@Buffalo:~# cat ~/.

bashfm username=ichbins password=123456 mediaplayer=/mnt/sd/bin/mpc add

здесь имя пользователя и пароль — ваше имя и пароль c ласт фм , а mediaplayer — это команда, добавляющая треки в список воспроизведения.

Когда вы запускаете fmstart в первый раз, пароль будет удален и заменен суммой md5. Небольшое отступление: MPC — это стандартный клиент MPD командной строки.

Но я его не компилирую, а использую однострочный скрипт:

root@Buffalo:~# cat /mnt/sd/bin/mpc #!/bin/sh echo "$*" | nc localhost 6600

Этот скрипт не является полным аналогом MPC, но для моих нужд его всегда хватало.

Теперь о скриптах выбора каналов.

По сути они все одинаковые, отличается только URL канала внутри.

Я слушаю либо личное радио, либо радио конкретного исполнителя - поэтому ниже приведу только эти два сценария.

Скрипт активации личного радиоканала:

root@Buffalo:~# cat /mnt/sd/bin/fmpersonal #!/bin/sh # # "fmpersonal" plays user's personal radio station # session=$(sed -nr 's/^session=(.

*)/\1/p' ~/.

bashfm) username=$(sed -nr 's/^username=(.

*)/\1/p' ~/.

bashfm) tuning_url=' http://ws.audioscrobbler.com/radio/adjust.php ?' tuning_url="${tuning_url}session=${session}&url= lastfm://user/ " tuning_url="${tuning_url}${username}/personal" #echo "$tuning_url" wget -q -O - "$tuning_url" echo

В случае успешного выполнения скрипт отобразит:

root@Buffalo:~# /mnt/sd/bin/fmpersonal response=OK url= http://www.last.fm/listen/user/IchBins/personal stationname=IchBins’s Library Radio

Скрипт активации канала исполнителя выглядит аналогично:

root@Buffalo:~# cat /mnt/sd/bin/fmart #!/bin/sh # "fmart" plays the radio station corresponding to a # certain artist. It takes the artist's name as command # line argument. Use quotes when the artist's name # contains spaces. # # Example: # fmart 'jahcoozi' artist=$(echo $1 | sed 's/ /%20/g') session=$(sed -nr 's/^session=(.

*)/\1/p' ~/.

bashfm) tuning_url=' http://ws.audioscrobbler.com/radio/adjust.php ?' tuning_url="${tuning_url}session=${session}&url= lastfm://artist/ " tuning_url="${tuning_url}${artist}/similarartists&debug=0" #echo "$tuning_url" wget -q -O - "$tuning_url" echo

Результат выполнения:

root@Buffalo:~# /mnt/sd/bin/fmart response=FAILED error=4 root@Buffalo:~# /mnt/sd/bin/fmart "Knorkator" response=OK url= http://www.last.fm/listen/artist/Knorkator/similarartists stationname=Knorkator Radio

После того как вы настроитесь на канал, вы сможете добавить треки из него в свой плейлист с помощью fmget:

root@Buffalo:~# cat /mnt/sd/bin/fmget #!/bin/sh # "fmget" gets list of mp3's from a radiostation and # adds it into the current playlist # # Example: # fmart 'Depeche Mode'; fmget session=$(sed -nr 's/^session=(.

*)/\1/p' ~/.

bashfm) mplayer=$(sed -nr 's/^mediaplayer=(.

*)/\1/p' ~/.

bashfm) tuning_url=' http://ws.audioscrobbler.com/radio/xspf.php ?' tuning_url="${tuning_url}sk=${session}" tuning_url="${tuning_url}&discovery=0&desktop=1.5.1" #echo "$tuning_url" mp3list=$(wget -q -O - "$tuning_url" | sed -nr "s/.

*<location>(.

*)<\/location>/\1/p") for i in $mp3list; do #echo $i $mplayer "$i" done

Результат:

root@Buffalo:~# /mnt/sd/bin/fmget OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK

Полученные ссылки на треки являются ссылками на mp3-файлы, поэтому их можно передать на любой проигрыватель, а не только на MPD. Достаточно заменить параметр mediaplayer в файле ~/.

bashfm Это, собственно, все, что я хотел вам сказать.

Что касается автоматизации процесса добавления треков в плейлист, то этот скрипт я оставлю вам в качестве домашнего задания.

Здесь вы можете вызвать fmget +100500 раз или вызвать «mpc status» в цикле, проанализировать ответ и, если nextsong==playlistlength, затем вызвать fmget. В качестве бонуса, если вы дошли до этого места, я подарю вам, мой любопытный друг, все скрипты из статьи.

в одной бутылке Теги: #стриминг #настройка Linux #bash #mp3 #музыка #LastFM #mpd

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.