#!/bin/bash color0="\e[0m\e[1m" color1="\e[1;32m" color2="\e[1;31m" if [ -z "$MPD_HOST" ]; then HOST="192.168.1.10"; else HOST="$MPD_HOST"; fi if [ -z "$MPD_PORT" ]; then PORT="6600"; else PORT="$MPD_PORT"; fi MPD_TCP="/dev/tcp/$HOST/$PORT" function displayHelp() { echo -e "\t${color1}mpdlyrics${color0} : The MPD Lyrics Fetcher\e[0m" echo -e "\t\t ${color2}-h${color0} \e[0m Display this help message." echo -e "\t\t ${color2}-d${color0} \e[0m Download but do not display lyrics." echo -e "\t\t ${color2}-s${color0} \e[0m Manually supply song and artist name, in \n\ \t\t\t\tthat order, with surrounding quotes around each argument." } function url_escape() { echo -n "$1" | sed 's/%/%25/g; s/ /%20/g; s/ /%09/g; s/!/%21/g; s/\"/%22/g; s/#/%23/g; s/\$/%24/g; s/\&/%26/g; s/(/%28/g; s/)/%29/g;' \ | sed 's/\*/%2a/g; s/+/%2b/g; s/,/%2c/g; s/-/%2d/g; s/\./%2e/g; s/\//%2f/g; s/:/%3a/g; s/;/%3b/g; s//%3e/g; s/?/%3f/g; s/@/%40/g' \ | sed 's/\[/%5b/g; s/\\/%5c/g; s/\]/%5d/g; s/\^/%5e/g; s/_/%5f/g; s/{/%7b/g; s/|/%7c/g; s/}/%7d/g; s/~/%7e/g; s/ /%09/g' | sed "s/\`/%60/g; s/'/%27/g" } function mpd_sndcommmand() { # $1 command exec 5<> $MPD_TCP 2>/dev/null [[ $? -gt 0 ]] && return 1 echo $1 >&5 echo "close" >&5 tmp=$(cat <&5) exec 5>&- _ret=$(head -n -1 <<< "$tmp" | tail -n +2) return 0 } function mpd_getinfo() { if [ `pidof mpd` ]; then mpd_sndcommmand currentsong [[ $? -gt 0 ]] && return 1 _tmp=$_ret mpdTitle=$(awk -F": " '/^Title: /{print $2}' <<< "$_tmp" 2>/dev/null ) mpdArtist=$(awk -F": " '/^Artist: /{print $2}' <<< "$_tmp" 2>/dev/null) else echo -e "\e[1;31mERROR! \e[0m\e[1mNo currently playing song. (MPD stopped?)\e[0m" exit fi } function getLyrics () { [[ ! -d "$HOME/.lyrics" ]] && mkdir $HOME/.lyrics _mpctitle_0=$(echo "$mpdTitle" | sed -e 's/ /_/g') _mpcartist_0=$(echo "$mpdArtist" | sed -e 's/ /_/g') if [ -f "$HOME/.lyrics/${_mpcartist_0}-${_mpctitle_0}" ]; then _mylyrics=$(cat "$HOME/.lyrics/${_mpcartist_0}-${_mpctitle_0}") else _mpdtitle_1=$(url_escape "$mpdTitle") _mpdartist_1=$(url_escape "$mpdArtist") lyricwiki_apir="$(wget -qO - "http://lyrics.wikia.com/api.php?artist="${_mpdartist_1}"&song="${_mpdtitle_1}"&fmt=json")" if [[ ! "$lyricwiki_apir" =~ "Not found" ]]; then lyricwiki_url=$(echo -n "$lyricwiki_apir" | awk -F"':'" '/url.*/{print $2}' | sed "s/'$//" | sed 's/http:\/\/lyrics.wikia.com\///') _mylyrics=$(wget -qO - "http://lyrics.wikia.com/index.php?title="${lyricwiki_url}"&action=edit" | sed -n '/<lyrics>/,/<\/lyrics>/p' | sed 's/<lyrics>//; s/<\/lyrics>//') else _mylyricsout=$(wget -qO - "http://www.lyricstime.com/${_mpcartist_0}-${_mpctitle_0}-lyrics.html") _mylyrics=$(echo "$_mylyricsout" | sed -n '/div id="songlyrics"/,/<\/div>/p' | sed 's/
//;s/