sonos.sh
rewrite from scratch
This commit is contained in:
799
sonos.sh
799
sonos.sh
@@ -1,18 +1,75 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# list: local or discovery
|
#set -e
|
||||||
# --use-local-speaker-list, -l
|
set -u
|
||||||
# Use the local speaker list instead of SoCo discovery
|
#set -o pipefail
|
||||||
# --refresh-local-speaker-list, -r
|
|
||||||
# Refresh the local speaker list
|
#\033[background;style;color]
|
||||||
list="local"
|
# background: 40-49,100-107
|
||||||
if [ "$list" = "discovery" ]; then
|
# color: 30-39,90-97
|
||||||
loc=""
|
# style: 1 (bold) 2 (light) 4 (underline) 5 (blink) 7 (reverse) 8 (hidden)
|
||||||
else
|
|
||||||
loc=" -l"
|
list="local"
|
||||||
fi
|
if [ "$list" = "discovery" ]; then loc="";
|
||||||
|
else loc=" -l"; fi
|
||||||
|
echo "$loc"
|
||||||
|
#sleep 3
|
||||||
|
|
||||||
|
|
||||||
|
underline="\033[4m"
|
||||||
|
bgd="\033[1;4;31m"
|
||||||
|
red="\033[1;31m"
|
||||||
|
bold="\033[1m"
|
||||||
|
reset="\033[0m"
|
||||||
|
|
||||||
|
|
||||||
|
# Main Menu
|
||||||
|
|
||||||
|
main() {
|
||||||
|
|
||||||
|
clear
|
||||||
|
set device
|
||||||
|
device="$1"
|
||||||
|
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
clear
|
||||||
|
|
||||||
|
echo -e ""
|
||||||
|
echo -e "\033[1m 🔈 SoCo-Cli GUI\033[0m"
|
||||||
|
echo -e ""
|
||||||
|
|
||||||
|
echo -e " "
|
||||||
|
echo -e "---------------------------------"
|
||||||
|
echo -e " Main Menu "
|
||||||
|
echo -e "---------------------------------"
|
||||||
|
echo -e " 1) ${bgd}A${reset}bout "
|
||||||
|
echo -e " 2) ${bgd}H${reset}elp "
|
||||||
|
echo -e " 3) ➔ ${bgd}C${reset}hambre "
|
||||||
|
echo -e " 4) ➔ ${bgd}S${reset}alon "
|
||||||
|
echo -e " 5) ${bgd}Q${reset}uit "
|
||||||
|
echo -e "================================="
|
||||||
|
echo -e "Enter your menu choice [1-5]: \c "
|
||||||
|
|
||||||
|
read main_menu
|
||||||
|
|
||||||
|
case "$main_menu" in
|
||||||
|
|
||||||
|
1|a|A) about
|
||||||
|
read -p ""
|
||||||
|
;;
|
||||||
|
2|h|H) help
|
||||||
|
read -p ""
|
||||||
|
;;
|
||||||
|
3|c|C) soco "Chambre";;
|
||||||
|
4|s|S) soco "Salon";;
|
||||||
|
5|q|Q) exit 0;;
|
||||||
|
*) echo -e "\n${red}Oops!!! Please Select Correct Choice${reset}";
|
||||||
|
echo -e "Press ${bold}ENTER${reset} To Continue..." ; read ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
clear
|
|
||||||
|
|
||||||
about() {
|
about() {
|
||||||
clear
|
clear
|
||||||
@@ -35,6 +92,7 @@ about() {
|
|||||||
echo "<Press Enter to quit>"
|
echo "<Press Enter to quit>"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "\033[1mHelp:\033[0m"
|
echo -e "\033[1mHelp:\033[0m"
|
||||||
@@ -42,6 +100,7 @@ help() {
|
|||||||
echo "<Press Enter to quit>"
|
echo "<Press Enter to quit>"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inform() {
|
inform() {
|
||||||
device="$1"
|
device="$1"
|
||||||
info=$(sonos $loc $device info)
|
info=$(sonos $loc $device info)
|
||||||
@@ -67,327 +126,435 @@ inform() {
|
|||||||
printf "| %-20s | %-20s |\n" "Hardware version" "$hardware_version"
|
printf "| %-20s | %-20s |\n" "Hardware version" "$hardware_version"
|
||||||
printf "| %-20s | %-20s |\n" "Software version" "$software_version"
|
printf "| %-20s | %-20s |\n" "Software version" "$software_version"
|
||||||
echo ""
|
echo ""
|
||||||
echo "< Press Enter>"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
soco_infos() {
|
|
||||||
|
# Soco device Menu
|
||||||
|
|
||||||
|
soco() {
|
||||||
clear
|
clear
|
||||||
|
#set device
|
||||||
|
playing=""
|
||||||
device="$1"
|
device="$1"
|
||||||
|
|
||||||
while true
|
while :
|
||||||
do
|
do
|
||||||
clear
|
clear
|
||||||
echo ""
|
echo -e ""
|
||||||
echo -e "\033[1m 🔊 Sonos infos $device \033[0m"
|
echo -e "\033[1m 🔊 Sonos $device \033[0m"
|
||||||
echo ""
|
echo -e ""
|
||||||
PS3="Select an option: "
|
echo -e " "
|
||||||
options=(
|
echo -e "------------------------|-------------------------|--------------------"
|
||||||
"(A)larms"
|
echo -e " Sonos $device Menu : $playing "
|
||||||
"(G)roups"
|
echo -e "------------------------|-------------------------|--------------------"
|
||||||
"(I)nfo"
|
echo -e " 1) France In${bgd}f${reset}o " " | " "11) volume ${bgd}11${reset} " " | " "21) ➔ ${bgd}I${reset}nfos "
|
||||||
"(S)hares"
|
echo -e " 2) France Int${bgd}e${reset}r " " | " "12) ${bgd}m${reset}ute ON " " | " "22) ➔ ${bgd}L${reset}ists "
|
||||||
"S(y)sinfo"
|
echo -e " 3) ${bgd}K${reset}6 FM " " | " "13) volume ${bgd}13${reset} " " | " "23) Play al${bgd}b${reset}ums "
|
||||||
"(R)eturn"
|
echo -e " 4) Rires et ${bgd}C${reset}hansons " " | " "14) m${bgd}u${reset}te OFF " " | " "24) Play artists (${bgd}x${reset}) "
|
||||||
)
|
echo -e " 5) ${bgd}R${reset}TL " " | " "15) volume ${bgd}15${reset} " " | " "25) Play tracks (${bgd}y${reset}) "
|
||||||
select opt2 in "${options[@]}"
|
echo -e " 6) ${bgd}D${reset}eezer Flow " " | " "16) ${bgd}s${reset}tart $device " " | " "26) "
|
||||||
do
|
echo -e " 7) " " | " "17) s${bgd}t${reset}op $device " " | " "27) "
|
||||||
case "$REPLY" in
|
echo -e " 8) " " | " "18) ${bgd}p${reset}rev on $device " " | " "28) "
|
||||||
1|a|A)
|
echo -e " 9) " " | " "19) ${bgd}n${reset}ext on $device " " | " "29) ${bgd}H${reset}elp "
|
||||||
echo -e "\n\033[1m Alarms... \033[0m"
|
echo -e "10) " " | " "20) Sha${bgd}z${reset}aaaam " " | " "30) ➔ ${bgd}A${reset}ccueil "
|
||||||
a=$(sonos $device alarms)
|
echo -e "========================================================================"
|
||||||
echo -e "\n $a \n"
|
echo -e "Enter your menu choice [1-30]: \c "
|
||||||
read -p "< Press Enter>"
|
read soco_menu
|
||||||
break
|
|
||||||
;;
|
case "$soco_menu" in
|
||||||
2|g|G)
|
|
||||||
echo -e "\n\033[1m Groups... \033[0m"
|
1|f|F) option_1;;
|
||||||
g=$(sonos $device groups)
|
2|e|E) option_2;;
|
||||||
echo -e "\n $g \n"
|
3|k|K) option_3;;
|
||||||
read -p "< Press Enter>"
|
4|c|C) option_4;;
|
||||||
break
|
5|r|R) option_5;;
|
||||||
;;
|
6|d|D) option_6;;
|
||||||
3|i|I)
|
11) option_11;;
|
||||||
echo -e "\n\033[1m Info... \033[0m"
|
12|m|M) option_12;;
|
||||||
#sonos $device info
|
13) option_13;;
|
||||||
inform $device
|
14|u|U) option_14;;
|
||||||
read -p ""
|
15) option_15;;
|
||||||
break
|
16|s|S) option_16;;
|
||||||
;;
|
17|t|T) option_17;;
|
||||||
4|s|S)
|
18|p|P) option_18;;
|
||||||
echo -e "\n\033[1m Shares... \033[0m"
|
19|n|N) option_19;;
|
||||||
s=$(sonos $device shares)
|
20|z|Z) option_20;;
|
||||||
echo -e "\n $s \n"
|
21|i|I) soco_infos $device;;
|
||||||
read -p "< Press Enter>"
|
22|l|L) soco_lists $device;;
|
||||||
break
|
23|b|B) play_album_from_library;;
|
||||||
;;
|
24|x|X) play_artist_from_library;;
|
||||||
5|y|Y)
|
25|y|Y) play_track_from_library;;
|
||||||
echo -e "\n\033[1m Sysinfo... \033[0m"
|
29|h|H) help;;
|
||||||
y=$(sonos $device sysinfo)
|
30|a|A) exec "$0";;
|
||||||
echo -e "\n $y \n"
|
*) echo -e "\n${red}Oops!!! Please Select Correct Choice${reset}";
|
||||||
read -p "< Press Enter>"
|
echo -e "Press ${bold}ENTER${reset} To Continue..." ; read ;;
|
||||||
break
|
esac
|
||||||
;;
|
done
|
||||||
6|r|R)
|
|
||||||
exec "$0"
|
|
||||||
;;
|
|
||||||
*) echo -e "\n\033[1;31m invalid option \033[0m";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Playing France Info
|
||||||
|
option_1() {
|
||||||
|
#echo "$loc"
|
||||||
|
playing="Playing France Info..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'franceinfo' && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Playing France Inter
|
||||||
|
option_2() {
|
||||||
|
playing="Playing France Inter..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'france inter' && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Playing K6 FM
|
||||||
|
option_3() {
|
||||||
|
playing="Playing K6 FM..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'K6 FM' && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Playing Rires et Chansons
|
||||||
|
option_4() {
|
||||||
|
playing="Playing Rires et Chansons..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'Rire et Chansons' && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Playing RTL
|
||||||
|
option_5() {
|
||||||
|
playing="Playing RTL..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'RTL' && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Playing Deezer Flow
|
||||||
|
option_6() {
|
||||||
|
playing="Playing Deezer Flow..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device play_fav 'Flow'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set volume to level 11
|
||||||
|
option_11() {
|
||||||
|
#playing="Playing Deezer Flow..."
|
||||||
|
echo -e "\n\033[1m Set volume to level 11... \033[0m"
|
||||||
|
sonos $loc $device volume 11 && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mute ON
|
||||||
|
option_12() {
|
||||||
|
playing="Mute ON..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device mute on && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set volume to level 13
|
||||||
|
option_13() {
|
||||||
|
#playing="Start $device..."
|
||||||
|
echo -e "\n\033[1m Set volume to level 13... \033[0m"
|
||||||
|
sonos $loc $device volume 13 && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mute OFF
|
||||||
|
option_14() {
|
||||||
|
#playing="Playing Deezer Flow..." <= Shazaaam
|
||||||
|
echo -e "\n\033[1m Mute OFF... \033[0m"
|
||||||
|
sonos $loc $device mute off && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set volume to level 15
|
||||||
|
option_15() {
|
||||||
|
#playing="Stop $device..."
|
||||||
|
echo -e "\n\033[1m Set volume to level 15... \033[0m"
|
||||||
|
sonos $loc $device volume 15 && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start $device
|
||||||
|
option_16() {
|
||||||
|
playing="Start $device..." # <= Shazaaam
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device start && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Stop $device
|
||||||
|
option_17() {
|
||||||
|
playing="Stop $device..."
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device stop && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Previous tracks
|
||||||
|
option_18() {
|
||||||
|
#playing="Start $device..." # <= Shazaaam
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device previous && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Next tracks
|
||||||
|
option_19() {
|
||||||
|
#playing="Stop $device..." # <= Shazaaam
|
||||||
|
echo -e "\n\033[1m $playing \033[0m"
|
||||||
|
sonos $loc $device next && sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Shazaaaam
|
||||||
|
option_20() {
|
||||||
|
echo -e "\n\033[1m Shazaaaam... \033[0m"
|
||||||
|
shazam
|
||||||
|
}
|
||||||
|
|
||||||
|
shazam() {
|
||||||
|
sz=$(sonos $loc $device track)
|
||||||
|
|
||||||
|
if [[ "$sz" =~ "Artist" ]]; then artist=$(echo "$sz" | grep "Artist" | awk -F"[=:]" '{print $2}');
|
||||||
|
else artist=""; fi
|
||||||
|
|
||||||
|
if [[ "$sz" =~ "Title" ]]; then title=$(echo "$sz" | grep "Title" | awk -F"[=:]" '{print $2}');
|
||||||
|
else title=""; fi
|
||||||
|
|
||||||
|
if [[ "$sz" =~ "Album" ]]; then album=$(echo "$sz" | grep "Album" | awk -F"[=:]" '{print $2}');
|
||||||
|
else album=""; fi
|
||||||
|
|
||||||
|
result=$( grep -i "uRi" <<< $sz)
|
||||||
|
if [ -n "$result" ]; then
|
||||||
|
uri=$(echo ${sz} | grep "URI" | grep -Eo '(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]');
|
||||||
|
|
||||||
|
if [[ "$uri" =~ "?" ]]; then
|
||||||
|
radio=$(echo "$uri" | awk -F"?" '{print $1}')
|
||||||
|
else
|
||||||
|
radio="$uri"
|
||||||
|
fi
|
||||||
|
else radio=""; fi
|
||||||
|
|
||||||
|
if [ -n "$radio" ]; then
|
||||||
|
shazam="\033[1mOn air\033[0m: \033[3m$radio\033[0m"
|
||||||
|
else
|
||||||
|
shazam="\033[1mOn air\033[0m: \033[1m$title\033[0m \033[3mfrom\033[0m $album \033[3mof\033[0m $artist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\n $shazam \n"
|
||||||
|
sleep 2.5
|
||||||
|
#read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Search artist in library -> add album to queue -> play it
|
||||||
|
play_artist_from_library() {
|
||||||
|
read -p "Search artist in library: " search
|
||||||
|
sonos $loc $device search_artists "$search"
|
||||||
|
|
||||||
|
read -p "Album to play: " number
|
||||||
|
sonos $loc $device queue_search_result_number $number first : $device play_from_queue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Search album in library -> add to queue -> play it
|
||||||
|
play_album_from_library() {
|
||||||
|
read -p "Search album in library: " search
|
||||||
|
sonos $loc $device search_albums "$search"
|
||||||
|
|
||||||
|
read -p "Album to play: " number
|
||||||
|
sonos $loc $device queue_search_result_number $number first : $device play_from_queue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Search track in library -> add to queue -> play it
|
||||||
|
play_track_from_library() {
|
||||||
|
read -p "Search track in library: " search
|
||||||
|
sonos $loc $device search_tracks "$search"
|
||||||
|
|
||||||
|
read -p "Track to play: " number
|
||||||
|
sonos $loc $device queue_search_result_number $number first : $device play_from_queue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Help
|
||||||
|
help() {
|
||||||
|
echo -e "\n\033[1m Help... \033[0m\n"
|
||||||
|
echo -e "Play albums:"
|
||||||
|
echo -e "Play artists:"
|
||||||
|
echo -e "Play tracks:"
|
||||||
|
|
||||||
|
echo -e "\n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Soco device Lists Menu
|
||||||
|
|
||||||
soco_lists() {
|
soco_lists() {
|
||||||
clear
|
clear
|
||||||
device="$1"
|
device="$1"
|
||||||
|
|
||||||
while true
|
while :
|
||||||
do
|
do
|
||||||
clear
|
clear
|
||||||
echo ""
|
echo -e ""
|
||||||
echo -e "\033[1m 🔊 Sonos lists $device \033[0m"
|
echo -e "\033[1m 🔊 Sonos lists $device \033[0m"
|
||||||
echo ""
|
echo -e ""
|
||||||
PS3="Select an option: "
|
echo -e " "
|
||||||
options=(
|
echo -e "--------------------------------"
|
||||||
"Favourite radio (s)tations"
|
echo -e " Sonos $device lists Menu "
|
||||||
"(F)avourites"
|
echo -e "--------------------------------"
|
||||||
"(Q)ueue"
|
echo -e " 1) Favourite radio ${bgd}s${reset}tations " " | "
|
||||||
"List (a)rtists"
|
echo -e " 2) ${bgd}F${reset}avourites " " | "
|
||||||
"List al(b)ums"
|
echo -e " 3) ${bgd}Q${reset}ueue " " | "
|
||||||
"(R)eturn"
|
echo -e " 4) List ${bgd}a${reset}rtists " " | "
|
||||||
)
|
echo -e " 5) List al${bgd}b${reset}ums " " | "
|
||||||
select opt2 in "${options[@]}"
|
echo -e " 6) " " | "
|
||||||
do
|
echo -e " 7) " " | "
|
||||||
case "$REPLY" in
|
echo -e " 8) " " | "
|
||||||
1|s|S)
|
echo -e " 9) ${bgd}C${reset}lear queue " " | "
|
||||||
echo -e "\n\033[1m Favourite radio stations... \033[0m"
|
echo -e "10) ${bgd}R${reset}eturn " " | "
|
||||||
s=$(sonos $device favourite_radio_stations)
|
echo -e "================================"
|
||||||
echo -e "\n $s \n"
|
echo -e "Enter your menu choice [1-10]: \c "
|
||||||
read -p "< Press Enter>"
|
read lists
|
||||||
break
|
|
||||||
;;
|
case "$lists" in
|
||||||
2|f|F)
|
|
||||||
echo -e "\n\033[1m Favourites... \033[0m"
|
1|s|S) list_1;;
|
||||||
f=$(sonos $device list_favs)
|
2|f|F) list_2;;
|
||||||
echo -e "\n $f \n"
|
3|q|Q) list_3;;
|
||||||
read -p "< Press Enter>"
|
4|a|A) list_4;;
|
||||||
break
|
5|b|B) list_5;;
|
||||||
;;
|
9|c|C) list_9;;
|
||||||
3|q|Q)
|
10|r|R) exec "$0";;
|
||||||
echo -e "\n\033[1m Queue... \033[0m"
|
*) echo -e "\n${red}Oops!!! Please Select Correct Choice${reset}";
|
||||||
q=$(sonos $device list_queue)
|
echo -e "Press ${bold}ENTER${reset} To Continue..." ; read ;;
|
||||||
echo -e "\n $q \n"
|
esac
|
||||||
read -p "< Press Enter>"
|
done
|
||||||
break
|
|
||||||
;;
|
|
||||||
4|a|A)
|
|
||||||
echo -e "\n\033[1m List artists... \033[0m"
|
|
||||||
a=$(sonos $device list_artists | more)
|
|
||||||
echo -e "\n $a \n"
|
|
||||||
read -p "< Press Enter>"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
5|b|B)
|
|
||||||
echo -e "\n\033[1m List albums... \033[0m"
|
|
||||||
b=$(sonos $device list_albums | more)
|
|
||||||
echo -e "\n $b \n"
|
|
||||||
read -p "< Press Enter>"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
6|r|R)
|
|
||||||
exec "$0"
|
|
||||||
;;
|
|
||||||
*) echo -e "\n\033[1;31m invalid option \033[0m";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
soco() {
|
|
||||||
|
# Favourite radio stations
|
||||||
|
list_1() {
|
||||||
|
echo -e "\n\033[1m Favourite radio stations... \033[0m"
|
||||||
|
s=$(sonos $loc $device favourite_radio_stations)
|
||||||
|
echo -e "\n $s \n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Favourites
|
||||||
|
list_2() {
|
||||||
|
echo -e "\n\033[1m Favourites... \033[0m"
|
||||||
|
f=$(sonos $loc $device list_favs)
|
||||||
|
echo -e "\n $f \n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Queue
|
||||||
|
list_3() {
|
||||||
|
echo -e "\n\033[1m Queue... \033[0m"
|
||||||
|
q=$(sonos $loc $device list_queue)
|
||||||
|
echo -e "\n $q \n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# List Artists
|
||||||
|
list_4() {
|
||||||
|
echo -e "\n\033[1m List artists... \033[0m"
|
||||||
|
a=$(sonos $loc $device list_artists | more)
|
||||||
|
echo -e "\n $a \n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Lists Albums
|
||||||
|
list_5() {
|
||||||
|
echo -e "\n\033[1m List albums... \033[0m"
|
||||||
|
b=$(sonos $loc $device list_albums | more)
|
||||||
|
echo -e "\n $b \n"
|
||||||
|
read -p "< Press Enter>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear queue
|
||||||
|
list_9() {
|
||||||
|
echo -e "\n\033[1m Clear queue... \033[0m"
|
||||||
|
sonos $loc $device clear_queue
|
||||||
|
q=$(sonos $loc $device queue_length)
|
||||||
|
if [ $q -eq 0 ]; then echo "Queue is empty"; else echo "Queue is not empty"; fi
|
||||||
|
sleep 1.5
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Soco device Infos Menu
|
||||||
|
|
||||||
|
soco_infos() {
|
||||||
clear
|
clear
|
||||||
device="$1"
|
device="$1"
|
||||||
|
|
||||||
while true
|
while :
|
||||||
do
|
do
|
||||||
clear
|
clear
|
||||||
echo ""
|
echo -e ""
|
||||||
echo -e "\033[1m 🔊 Sonos $device \033[0m"
|
echo -e "\033[1m 🔊 Sonos $device infos \033[0m"
|
||||||
echo ""
|
echo -e ""
|
||||||
PS3="Select an option: "
|
echo -e " "
|
||||||
options=(
|
echo -e "--------------------------------"
|
||||||
"France In(f)o"
|
echo -e " Sonos $device infos Menu "
|
||||||
"France In(t)er"
|
echo -e "--------------------------------"
|
||||||
"(K)6 FM"
|
echo -e " 1) ${bgd}A${reset}larms " " | "
|
||||||
"Rires et (C)hansons"
|
echo -e " 2) ${bgd}G${reset}roups " " | "
|
||||||
"(R)TL"
|
echo -e " 3) ${bgd}I${reset}nfo " " | "
|
||||||
"(D)eezer Flow"
|
echo -e " 4) ${bgd}S${reset}hares " " | "
|
||||||
"(P)laylist list_favs"
|
echo -e " 5) S${bgd}y${reset}sinfo " " | "
|
||||||
"-(s)tart $device"
|
echo -e " 6) " " | "
|
||||||
"-s(t)op $device"
|
echo -e " 7) " " | "
|
||||||
"-(i)nfos on $device"
|
echo -e " 8) " " | "
|
||||||
"-volume (11)"
|
echo -e " 9) " " | "
|
||||||
"-(m)ute ON"
|
echo -e "10) ${bgd}R${reset}eturn " " | "
|
||||||
"-volume (13)"
|
echo -e "================================"
|
||||||
"-m(u)te OFF"
|
echo -e "Enter your menu choice [1-10]: \c "
|
||||||
"-volume (15)"
|
read infos
|
||||||
"-status light O(N)"
|
|
||||||
"-status light (O)FF"
|
case "$infos" in
|
||||||
"Sha(z)aaaam"
|
|
||||||
"➔ (I)nfos"
|
1|a|A) info_1;;
|
||||||
"➔ (L)ists"
|
2|g|G) info_2;;
|
||||||
"Menu Princip(a)l"
|
3|i|I) info_3;;
|
||||||
)
|
4|s|S) info_4;;
|
||||||
select opt2 in "${options[@]}"
|
5|y|Y) info_5;;
|
||||||
do
|
10|r|R) exec "$0";;
|
||||||
case "$REPLY" in
|
*) echo -e "\n${red}Oops!!! Please Select Correct Choice${reset}";
|
||||||
1|f|F)
|
echo -e "Press ${bold}ENTER${reset} To Continue..." ; read ;;
|
||||||
echo -e "\n\033[1m Playing France Info... \033[0m"
|
esac
|
||||||
sonos $loc $device play_fav 'franceinfo' && sleep 2
|
done
|
||||||
break
|
}
|
||||||
;;
|
|
||||||
2|t|T)
|
# Alarms
|
||||||
echo -e "\n\033[1m Playing France Inter... \033[0m"
|
info_1() {
|
||||||
sonos $loc $device play_fav 'france inter' && sleep 2
|
echo -e "\n\033[1m Alarms... \033[0m"
|
||||||
break
|
a=$(sonos $loc $device alarms)
|
||||||
;;
|
echo -e "\n $a \n"
|
||||||
3|k|K)
|
read -p "< Press Enter>"
|
||||||
echo -e "\n\033[1m Playing K6 FM... \033[0m"
|
}
|
||||||
sonos $loc $device play_fav 'K6 FM' && sleep 2
|
|
||||||
break
|
# Groups
|
||||||
;;
|
info_2() {
|
||||||
4|c|C)
|
echo -e "\n\033[1m Groups... \033[0m"
|
||||||
echo -e "\n\033[1m Playing Rires et Chansons... \033[0m"
|
g=$(sonos $loc $device groups)
|
||||||
sonos $loc $device play_fav 'Rire et Chansons' && sleep 2
|
echo -e "\n $g \n"
|
||||||
break
|
read -p "< Press Enter>"
|
||||||
;;
|
}
|
||||||
5|r|R)
|
|
||||||
echo -e "\n\033[1m Playing RTL... \033[0m"
|
# Infos
|
||||||
sonos $loc $device play_fav 'RTL' && sleep 2
|
info_3() {
|
||||||
break
|
inform $device
|
||||||
;;
|
read -p "< Press Enter>"
|
||||||
6|d|D)
|
}
|
||||||
echo -e "\n\033[1m Playing Deezer Flow... \033[0m"
|
|
||||||
sonos $loc $device play_fav 'Flow'
|
# Shares
|
||||||
break
|
info_4() {
|
||||||
;;
|
echo -e "\n\033[1m Shares... \033[0m"
|
||||||
7|p|P)
|
s=$(sonos $loc $device shares)
|
||||||
echo -e "\n\033[1m Display playlist list_favs... \033[0m"
|
echo -e "\n $s \n"
|
||||||
sonos $loc $device list_favs
|
read -p "< Press Enter>"
|
||||||
read -p ""
|
}
|
||||||
break
|
|
||||||
;;
|
# Sysinfo
|
||||||
8|s|S)
|
info_5() {
|
||||||
echo -e "\n\033[1m Start $device... \033[0m"
|
echo -e "\n\033[1m Sysinfo... \033[0m"
|
||||||
sonos $loc $device start && sleep 2
|
y=$(sonos $loc $device sysinfo)
|
||||||
break
|
echo -e "\n $y \n"
|
||||||
;;
|
read -p "< Press Enter>"
|
||||||
9|t|T)
|
|
||||||
echo -e "\n\033[1m Stop $device... \033[0m"
|
|
||||||
sonos $loc $device stop && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
10)
|
|
||||||
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 $loc $device volume 11 && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
12|m|M)
|
|
||||||
echo -e "\n\033[1m Mute ON... \033[0m"
|
|
||||||
sonos $loc $device mute on && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
13)
|
|
||||||
echo -e "\n\033[1m Set volume to level 13... \033[0m"
|
|
||||||
sonos $loc $device volume 13 && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
14|u|U)
|
|
||||||
echo -e "\n\033[1m Mute OFF... \033[0m"
|
|
||||||
sonos $loc $device mute off && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
15)
|
|
||||||
echo -e "\n\033[1m Set volume to level 15... \033[0m"
|
|
||||||
sonos $loc $device volume 15 && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
16|n|N)
|
|
||||||
echo -e "\n\033[1m Status light ON... \033[0m"
|
|
||||||
sonos $loc $device status_light on && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
17|o|O)
|
|
||||||
echo -e "\n\033[1m Status light OFF... \033[0m"
|
|
||||||
sonos $loc $device status_light off && sleep 2
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
18|z|Z)
|
|
||||||
echo -e "\n\033[1m Shazaaaam... \033[0m"
|
|
||||||
sonos $loc $device track && sleep 5
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
18|i|I)
|
|
||||||
echo -e "\n\033[1m Infos... \033[0m"
|
|
||||||
soco_infos $device
|
|
||||||
#break
|
|
||||||
;;
|
|
||||||
19|l|L)
|
|
||||||
echo -e "\n\033[1m Lists... \033[0m"
|
|
||||||
soco_lists $device
|
|
||||||
#break
|
|
||||||
;;
|
|
||||||
20|a|A)
|
|
||||||
exec "$0"
|
|
||||||
;;
|
|
||||||
*) echo -e "\n\033[1;31m invalid option \033[0m";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
while true
|
main
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user