72 lines
1.7 KiB
Bash
Executable File
72 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SOCKET="/tmp/mpvsocket"
|
|
|
|
# Check if the mpv socket exists
|
|
if [[ ! -S "$SOCKET" ]]; then
|
|
echo " mpv socket not found at $SOCKET"
|
|
exit 1
|
|
fi
|
|
|
|
send_cmd() {
|
|
echo "$1" | socat - "$SOCKET"
|
|
}
|
|
|
|
get_prop() {
|
|
send_cmd "{ \"command\": [\"get_property\", \"$1\"] }" | jq -r '.data'
|
|
}
|
|
|
|
format_time() {
|
|
local time=$1
|
|
if [[ $time == null || -z $time ]]; then
|
|
echo "--:--"
|
|
else
|
|
printf '%02d:%02d' $((time / 60)) $((time % 60))
|
|
fi
|
|
}
|
|
|
|
while true; do
|
|
clear
|
|
|
|
# Get dynamic info
|
|
title=$(get_prop "media-title")
|
|
position=$(get_prop "playback-time")
|
|
duration=$(get_prop "duration")
|
|
|
|
pos_fmt=$(format_time "$position")
|
|
dur_fmt=$(format_time "$duration")
|
|
|
|
echo " MPV Controller"
|
|
echo "=========================="
|
|
echo " Title : ${title:-Unknown}"
|
|
echo "Position : ${pos_fmt} / ${dur_fmt}"
|
|
echo "=========================="
|
|
echo "1) Pause / Resume"
|
|
echo "2) Next file"
|
|
echo "3) Previous file"
|
|
echo "4) Increase volume"
|
|
echo "5) Decrease volume"
|
|
echo "6) Mute / Unmute"
|
|
echo "7) Seek forward 10s"
|
|
echo "8) Seek backward 10s"
|
|
echo "0) Exit"
|
|
echo "=========================="
|
|
read -rp "Choose an option: " opt
|
|
|
|
case "$opt" in
|
|
1) send_cmd '{ "command": ["cycle", "pause"] }' ;;
|
|
2) send_cmd '{ "command": ["playlist-next"] }' ;;
|
|
3) send_cmd '{ "command": ["playlist-prev"] }' ;;
|
|
4) send_cmd '{ "command": ["add", "volume", 5] }' ;;
|
|
5) send_cmd '{ "command": ["add", "volume", -5] }' ;;
|
|
6) send_cmd '{ "command": ["cycle", "mute"] }' ;;
|
|
7) send_cmd '{ "command": ["seek", 10, "relative"] }' ;;
|
|
8) send_cmd '{ "command": ["seek", -10, "relative"] }' ;;
|
|
0) echo " Exiting..."; break ;;
|
|
*) echo " Invalid option"; sleep 1 ;;
|
|
esac
|
|
|
|
read -rp "Press Enter to continue..."
|
|
done
|
|
|