Fandom

Music Player Daemon Community Wiki

Hack:bashfm

525pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Last fm streaming client for the busybox shell

source: http://www.last.fm/group/LastBASH/forum/43627/_/236797

preparations: lynx and egrep are needed

alternative solution: http://files.viharpander.dk/bash/mc/mcf

adapted version for openwrt based router: last.fm for la fonera2

nano /usr/local/root/.bashfm

username=SECRET
password=SECRET
mediaplayer="mpc add"


Here follows the fmstart script:

#!/usr/bin/bash

# "fmstart" starts playing last.fm radio. "fmstart"
# should be used before any other bashfm commands are
# given. It obtains the username, password, and
# mediaplayer from the ".bashfm" file. If the password
# present in the file as plain text, it will be md5
# encoded and the plain text version will be removed.
# It then logs in into Last.fm, obtains the audio
# stream URL, and launches the media player. "fmstart"
# takes no command arguments.

username=`grep "^username=" ~/.bashfm`
username=`expr "$username" : 'username=\(.*\)'`

password=`grep "^password=" ~/.bashfm`
password=`expr "$password" : 'password=\(.*\)'`
password=`echo -n "$password" | sed -e 's/[ ]*$//'`

mediaplayer=`grep "^mediaplayer=" ~/.bashfm`
mediaplayer=`expr "$mediaplayer" : 'mediaplayer=\(.*\)'`
mediaplayer=`echo -n "$mediaplayer" | tr '\' '/'`

if [ ! -z "$password" ]
   then
 passwordmd5=`echo -n $password | md5sum`
 passwordmd5=`expr "$passwordmd5" : '\([0-9A-Fa-f]*\)\.*'`
else
 passwordmd5=`grep "^passwordmd5=" ~/.bashfm`
 passwordmd5=`expr "$passwordmd5" : 'passwordmd5=\(.*\)'`
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

lynx -source "$login_url" >> ~/.bashfm
echo >> ~/.bashfm

stream_url=`grep "^stream_url=" ~/.bashfm`
stream_url=`expr "$stream_url" : 'stream_url=\(.*\)'`

"$mediaplayer" "$stream_url" &

Here follows the "fmtag" script

#!/usr/bin/bash

# "fmtag" plays the music corresponding to the tag given
# as command argument. The tag needs to be quoted when
# it contains spaces.
#
# Example:
# fmtag 'netlabel'

tag=`echo $1 | sed 's/ /%20/g'`

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

tuning_url='http://ws.audioscrobbler.com/radio/adjust.php?'
tuning_url="$tuning_url"'session='$session'&url=lastfm://'
tuning_url="$tuning_url"'globaltags/'$tag'&debug=0'

lynx -source "$tuning_url" > /dev/null

Here follows the "fmart" script.

#!/usr/bin/bash

# "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=`grep "^session= ~/.bashfm"`
session=`expr "$session" : 'session=\(.*\)'`

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'

lynx -source "$tuning_url" > /dev/null


Here follows the "fmbor" script.

#!/usr/bin/bash

# "fmbor" plays your neighbourhood radio. "fmbor" takes
# no command line arguments.

username=`grep "^username=" ~/.bashfm`
username=`expr "$username" : 'username=\(.*\)'`

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

tuning_url='http://ws.audioscrobbler.com/radio/adjust.php?'
tuning_url="$tuning_url"'session='$session'&url=lastfm://user/'
tuning_url="$tuning_url"$username'/neighbours&debug=0'

lynx -source "$tuning_url" > /dev/null


Here follows the "fminfo" script

#!/usr/bin/bash

# "fminfo" returns the name of the artist, name
# of the song and name of the album of the music
# that is currently playing. "fminfo" takes no
# command line arguments.

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

info_url='http://ws.audioscrobbler.com/radio/np.php?'
info_url="$info_url"'session='$session'&debug=0'

lynx -source "$info_url" | egrep '(^artist=|^track=|^album=)'

Here follows the "fmskip" script

#!/usr/bin/bash

# "fmskip" skips the song that is currently playing.
# It takes no command line arguments.

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

skip_url='http://ws.audioscrobbler.com/radio/control.php?'
skip_url="$skip_url"'session='$session'&command=skip&debug=0'

lynx -source "$skip_url"
echo


Here follows the "fmlove" script

#!/usr/bin/bash

# "fmlove" adds the song that is currently playing to
# the list of loved songs. "fmlove" takes no command
# line arguments.

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

love_url='http://ws.audioscrobbler.com/radio/control.php?'
love_url="$love_url"'session='$session'&command=love&debug=0'

lynx -source "$love_url"
echo

Here follows the "fmban" script

#!/usr/bin/bash

# "fmban" bans the current song from your radio. "fmban"
# takes no command line arguments.

session=`grep "^session=" ~/.bashfm`
session=`expr "$session" : 'session=\(.*\)'`

ban_url='http://ws.audioscrobbler.com/radio/control.php?'
ban_url="$ban_url"'session='$session'&command=ban&debug=0'

lynx -source "$ban_url"
echo

Also on Fandom

Random Wiki