dotfiles/misc/bin/mediacontrol
2023-11-30 15:01:11 +00:00

132 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Set the player
[ -n "$(pgrep spotify)" ] && Control="spotify" || Control="MPD"
Cover=/tmp/cover.png
bkpCover=~/.local/share/assets/fallback.webp
mpddir=~/music
case $Control in
MPD)
case $1 in
--next)
mpc -q next
;;
--previous)
mpc -q prev
;;
--toggle)
mpc -q toggle
;;
--stop)
mpc -q stop
;;
--title)
title=$(mpc -f %title% current)
echo "${title:-Play Something}"
;;
--artist)
artist=$(mpc -f %artist% current)
echo "${artist:-No Artist}"
;;
--status)
status=$(mpc status | head -2 | tail -1 | cut -c2-8 | sed 's/]//g' | sed 's/./\U&/')
echo "${status:-Stopped}"
;;
--player)
echo "$Control"
;;
--cover)
ffmpeg -i "$mpddir"/"$(mpc current -f %file%)" "${Cover}" -y &> /dev/null || cp $bkpCover $Cover
echo "$Cover"
;;
nccover)
ffmpeg -i "$mpddir"/"$(mpc current -f %file%)" "${Cover}" -y &> /dev/null || cp $bkpCover $Cover
;;
--position)
position=$(mpc status %currenttime%)
echo "${position:-0:00}"
;;
--positions)
positions=$(mpc status %currenttime% | awk -F: '{print ($1 * 60) + $2}')
echo "${positions:-0}"
;;
--length)
length=$(mpc status %totaltime%)
echo "${length:-0:00}"
;;
--lengths)
lengths=$(mpc status %totaltime% | awk -F: '{print ($1 * 60) + $2}')
echo "${lengths:-0}"
;;
--shuffle)
shuffle=$(mpc status | sed -n '3s/.*random: \([^ ]*\).*/\1/p' | sed 's/.*/\u&/')
echo "${shuffle:-Off}"
;;
--loop)
loop=$(mpc status | sed -n '3s/.*repeat: \([^ ]*\).*/\1/p' | sed 's/.*/\u&/')
echo "${loop:-Off}"
;;
esac
;;
*)
case $1 in
--next)
playerctl --player=$Control next
;;
--previous)
playerctl --player=$Control previous
;;
--toggle)
playerctl --player=$Control play-pause
;;
--stop)
playerctl --player=$Control stop
;;
--title)
title=$(playerctl --player=$Control metadata --format {{title}})
echo "${title:-Play Something}"
;;
--artist)
artist=$(playerctl --player=$Control metadata --format {{artist}})
echo "${artist:-No Artist}"
;;
--status)
status=$(playerctl --player=$Control status)
echo "${status:-Stopped}"
;;
--player)
echo "$Control"
;;
--cover)
albumart="$(playerctl --player=$Control metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g')"
[ $(playerctl --player=$Control metadata mpris:artUrl) ] && curl -s "$albumart" --output $Cover || cp $bkpCover $Cover
echo "$Cover"
;;
--position)
position=$(playerctl --player=$Control position --format "{{ duration(position) }}")
echo "${position:-0:00}"
;;
--positions)
positions=$(playerctl --player=$Control position | sed 's/..\{6\}$//')
echo "${positions:-0}"
;;
--length)
length=$(playerctl --player=$Control metadata --format "{{ duration(mpris:length) }}")
echo "${length:-0:00}"
;;
--lengths)
lengths=$(playerctl --player=$Control metadata mpris:length | sed 's/.\{6\}$//')
echo "${lengths:-0}"
;;
--shuffle)
shuffle=$(playerctl --player=$Control shuffle)
echo "${shuffle:-Off}"
;;
--loop)
loop=$(playerctl --player=$Control loop)
echo "${loop:-None}"
;;
esac
esac 2>/dev/null