#!/bin/bash clear about() { clear echo "" echo -e "\033[1mAbout:\033[0m" echo "" echo " ##### ##### #### #### ## "; echo " ## ## ## ## ## ## "; echo " ##### ## ## #### ## ## #### ## ## ### ## ## ## ### "; echo " ## ## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ## "; echo " ##### ## ## ## ## ## ## ## # ## ## ## ## ## ## "; echo " ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## "; echo " ###### ##### #### ##### #### ####### #### ## ###### #### "; echo " ##### "; echo "" echo "Just a GUI for the wonderful tool SoCo-Cli" echo "" echo "https://github.com/avantrec/soco-cli" echo "" echo "" } help() { echo "" echo -e "\033[1mHelp:\033[0m" echo "" echo "" } inform() { device="$1" info=$(sonos $device info) model_name=$(echo "$info" | grep "model_name" | awk -F"=" '{print $2}') model_number=$(echo "$info" | grep "model_number" | awk -F"=" '{print $2}') player_name=$(echo "$info" | grep "player_name" | awk -F"=" '{print $2}') zone_name=$(echo "$info" | grep "zone_name" | awk -F"=" '{print $2}') mac_address=$(echo "$info" | grep "mac_address" | awk -F"=" '{print $2}') ip_address=$(echo "$info" | grep "ip_address" | awk -F"=" '{print $2}') display_version=$(echo "$info" | grep "display_version" | awk -F"=" '{print $2}') hardware_version=$(echo "$info" | grep "hardware_version" | awk -F"=" '{print $2}') software_version=$(echo "$info" | grep "software_version" | awk -F"=" '{print $2}') echo "" printf "\e[1m| %-20s | %-20s |\e[0m\n" "$model_name" "$player_name" printf "| %-20s | %-20s |\n" "Model name" "$model_name" printf "| %-20s | %-20s |\n" "Model number" "$model_number" printf "| %-20s | %-20s |\n" "Player name" "$player_name" printf "| %-20s | %-20s |\n" "Zone name" "$zone_name" printf "| %-20s | %-20s |\n" "mac adress" "$mac_address" printf "| %-20s | %-20s |\n" "IP address" "$ip_address" printf "| %-20s | %-20s |\n" "Display version" "$display_version" printf "| %-20s | %-20s |\n" "Hardware version" "$hardware_version" printf "| %-20s | %-20s |\n" "Software version" "$software_version" } soco() { clear device="$1" while true do clear echo "" echo -e "\033[1m 🔊 Sonos $device \033[0m" echo "" PS3="Select an option: " options=( "France In(f)o" "France In(t)er" "(K)6 FM" "Rires et (C)hansons" "(R)TL" "(D)eezer Flow" "(P)laylist list_favs" "-(s)tart $device" "-s(t)op $device" "-(i)nfos on $device" "-volume (11)" "-(m)ute ON" "-volume (13)" "-m(u)te OFF" "-volume (15)" "-status (l)ight ON" "-status light (O)FF" "Menu Princip(a)l" ) select opt2 in "${options[@]}" do case "$REPLY" in 1|f|F) echo -e "\n\033[1m Playing France Info... \033[0m" sonos $device play_fav 'franceinfo' && sleep 2 break ;; 2|t|T) echo -e "\n\033[1m Playing France Inter... \033[0m" sonos $device play_fav 'france inter' && sleep 2 break ;; 3|k|K) echo -e "\n\033[1m Playing K6 FM... \033[0m" sonos $device play_fav 'K6 FM' && sleep 2 break ;; 4|c|C) echo -e "\n\033[1m Playing Rires et Chansons... \033[0m" sonos $device play_fav 'Rire et Chansons' && sleep 2 break ;; 5|r|R) echo -e "\n\033[1m Playing RTL... \033[0m" sonos $device play_fav 'RTL' && sleep 2 break ;; 6|d|D) echo -e "\n\033[1m Playing Deezer Flow... \033[0m" sonos $device play_fav 'Flow' break ;; 7|p|P) echo -e "\n\033[1m Display playlist list_favs... \033[0m" sonos $device list_favs read -p "" break ;; 8|s|S) echo -e "\n\033[1m Start $device... \033[0m" sonos $device start && sleep 2 break ;; 9|t|T) echo -e "\n\033[1m Stop $device... \033[0m" sonos $device stop && sleep 2 break ;; 10|i|I) echo -e "\n\033[1m Infos on $device... \033[0m" inform $device read -p "" break ;; 11) echo -e "\n\033[1m Set volume to level 11... \033[0m" sonos $device volume 11 && sleep 2 break ;; 12|m|M) echo -e "\n\033[1m Mute ON... \033[0m" sonos $device mute on && sleep 2 break ;; 13) echo -e "\n\033[1m Set volume to level 13... \033[0m" sonos $device volume 13 && sleep 2 break ;; 14|u|U) echo -e "\n\033[1m Mute OFF... \033[0m" sonos $device mute off && sleep 2 break ;; 15) echo -e "\n\033[1m Set volume to level 15... \033[0m" sonos $device volume 15 && sleep 2 break ;; 16|l|L) echo -e "\n\033[1m Status light ON... \033[0m" sonos $device status_light on && sleep 2 break ;; 17|o|O) echo -e "\n\033[1m Status light OFF... \033[0m" sonos $device status_light off && sleep 2 break ;; 18|a|A) exec "$0" ;; *) echo -e "\n\033[1;31m invalid option \033[0m";; esac done done } while true do clear echo -e "" echo -e "\033[1m 🔈 SoCo-Cli GUI\033[0m" echo -e "" PS3='Select an option: ' options=("(A)bout" "(H)elp" "(C)hambre" "(S)alon" "(Q)uit") select opt in "${options[@]}" do case "$REPLY" in 1|a|A) about read -p "" break ;; 2|h|H) help read -p "" break ;; 3|c|C) soco "Chambre" ;; 4|s|S) soco "Salon" ;; 5|q|Q) exit ;; *) echo "invalid option" ;; esac done done