67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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
 | |
| if [[ -n $starn ]]; then
 | |
|   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*)
 | |
|     [[ -n $rating ]] && rating="[$rating] "
 | |
|     killall terminal-notifier
 | |
|     terminal-notifier -title "$rating$title" -message "by $artist :: $album" -appIcon "/Applications/iTunes.app/Contents/Resources/iTunes.icns" &
 | |
|     ;;
 | |
|   linux*)
 | |
|     [[ -n $rating ]] && rating="$rating<br />"
 | |
|     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
 |