2017-12-05 22:39:10 -08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# A non-interactive script that creates notifications (libnotify on Linux,
|
|
|
|
# native notifications on MacOS), announcing the currently playing song. Used by
|
|
|
|
# ncmpcpp.
|
|
|
|
|
|
|
|
_color() { printf '<span fgcolor="%s">%s</span>' "$1" "$2"; }
|
|
|
|
|
|
|
|
if ! pgrep mpd >/dev/null; then
|
|
|
|
>&2 echo "mpd isn't running."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
info=$(mpc current -f ";%artist%;%album%;%title%;%file%")
|
|
|
|
if [[ ${info:0:1} != ";" ]]; then
|
|
|
|
>&2 echo "nothing is playing."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
IFS=';' read -r _ artist album title file <<< "$info"
|
|
|
|
|
|
|
|
artist="${artist:-$(_color "#757575" "No Artist")}"
|
|
|
|
album="${album:-$(_color "#757575" "No Album")}"
|
|
|
|
title="${title:-$(_color "#757575" "Untitled")}"
|
|
|
|
rating=
|
|
|
|
|
|
|
|
playlist_dir=$(awk '/playlist_directory/ { print gensub(/"/, "", "g", $2); }' "$HOME/.config/mpd/mpd.conf")
|
|
|
|
playlist_dir="${playlist_dir/#\~/$HOME}"
|
|
|
|
|
|
|
|
case $(grep "$file" "$playlist_dir"/*-star.m3u) in
|
|
|
|
*/1-star.m3u:*) starn=1 ;;
|
|
|
|
*/2-star.m3u:*) starn=2 ;;
|
|
|
|
*/3-star.m3u:*) starn=3 ;;
|
|
|
|
*/4-star.m3u:*) starn=4 ;;
|
|
|
|
*/5-star.m3u:*) starn=5 ;;
|
|
|
|
esac
|
2017-12-31 22:33:49 -08:00
|
|
|
if [[ -n $starn ]]; then
|
2017-12-05 22:39:10 -08:00
|
|
|
star_filled_icon="★"
|
|
|
|
star_empty_icon="☆"
|
|
|
|
if [[ $OSTYPE == linux* ]]; then
|
|
|
|
star_filled_icon=$(_color "#8fb1cd" "$star_filled_icon")
|
|
|
|
star_empty_icon=$(_color "#666666" "$star_empty_icon")
|
|
|
|
fi
|
|
|
|
|
|
|
|
for ((i=1;i<=5;i++)); do
|
|
|
|
if (( "$starn" >= "$i" )); then
|
|
|
|
rating="${rating}${star_filled_icon}"
|
|
|
|
else
|
|
|
|
rating="${rating}${star_empty_icon}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
case $OSTYPE in
|
|
|
|
darwin*)
|
2017-12-31 22:33:49 -08:00
|
|
|
[[ -n $rating ]] && rating="[$rating] "
|
2017-12-05 22:39:10 -08:00
|
|
|
killall terminal-notifier
|
|
|
|
terminal-notifier -title "$rating$title" -message "by $artist :: $album" -appIcon "/Applications/iTunes.app/Contents/Resources/iTunes.icns" &
|
|
|
|
;;
|
|
|
|
linux*)
|
2017-12-31 22:33:49 -08:00
|
|
|
[[ -n $rating ]] && rating="$rating<br />"
|
2017-12-05 22:39:10 -08:00
|
|
|
notify-send --urgency=low --icon="media-playback-start" --app-name="ncmpcpp" "$rating<b>$title</b>" "${artist}\n<i>${album}</i>" &
|
|
|
|
;;
|
|
|
|
esac >/dev/null 2>&1
|
|
|
|
|
|
|
|
exit
|