Files
2023-04-24 15:41:27 +05:45

108 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
players="spotify,%any,firefox,chromium,brave,mpd"
player_status=$(playerctl -p $players status)
artist=$(playerctl -p $players metadata --format '{{ artist }}')
title=$(playerctl -p $players metadata --format '{{ title }}')
albumart="$(playerctl -p $players metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g')"
cache="$HOME/.cache/eww/music"
[ ! -d $cache ] && mkdir $cache
status_icon () {
if [ "$player_status" = "Playing" ]; then
echo "󰏥"
elif [ "$player_status" = "Paused" ]; then
echo "󰐌"
else
echo "󰐌"
fi
}
status_value () {
player_name=$(playerctl -p $players -l | head -n 1)
[ "$player_status" = "Playing" ] && echo "Now Playing - via ${player_name^}" || echo "Music"
}
title () {
[ -z "$title" ] && echo "Nothing Playing" || echo $title
}
artist () {
if [ "$title" = "Advertisement" ]; then
echo "Spotify Free"
else
if [ -z "$artist" ]; then
echo "Unknown Artist";
else
echo "by $artist"
fi
fi
}
cover_notification () {
cover_dir="$cache/notification-cover"
[ ! -d $cover_dir ] && mkdir $cover_dir
cover="$cover_dir/$RANDOM-cover.png"
fallback="$HOME/.config/eww/images/fallback.png"
players_pass=$1
if [[ $players_pass == "mpd" ]]; then
albumart="$(playerctl -p mpd metadata mpris:artUrl)"
else
albumart="$(playerctl -p $players_pass metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g')"
fi
[ $(playerctl -p $players_pass metadata mpris:artUrl) ] && curl -s "$albumart" --output $cover || cp $fallback $cover
echo $cover | tail -n 1
}
cover () {
cover="$cache/cover.png"
fallback="$HOME/.config/eww/images/fallback.png"
[ $(playerctl -p $players metadata mpris:artUrl) ] && curl -s "$albumart" --output $cover || cp $fallback $cover
echo $cover
}
position () {
position=$(playerctl -p $players position | sed 's/..\{6\}$//')
duration=$(playerctl -p $players metadata mpris:length | sed 's/.\{6\}$//')
if [[ $position -gt 0 ]]; then
printf "%0d:%02d" $((position%3600/60)) $((position%60))
printf " / "
printf "%0d:%02d" $((duration%3600/60)) $((duration%60))
fi
}
case $1 in
status)
status_value
;;
status-icon)
status_icon
;;
title)
title
;;
artist)
artist
;;
title-artist)
echo $(title) - $(artist)
;;
cover)
cover
;;
cover-notification)
cover_notification $2
;;
position)
position || echo "--:-- / --:-- "
;;
esac