soco-cli-gui.sh

Features:
+check last version and update for soco-cli
This commit is contained in:
2021-01-16 12:04:35 +01:00
parent 93c94497fb
commit e3fc8b6755

View File

@@ -14,12 +14,14 @@ if [ "$list" = "discovery" ]; then loc="";
else loc=" -l"; fi else loc=" -l"; fi
echo "$loc" echo "$loc"
#sleep 3 #sleep 3
GITHUB_TOKEN=13314ba0099450eaa6c0b2233d0f6adde1f5c718
italic="\033[3m" italic="\033[3m"
underline="\033[4m" underline="\033[4m"
bgd="\033[1;4;31m" bgd="\033[1;4;31m"
red="\033[1;31m" red="\033[1;31m"
bold="\033[1m" bold="\033[1m"
bold_under="\033[1;4m"
reset="\033[0m" reset="\033[0m"
@@ -36,7 +38,7 @@ main() {
clear clear
echo -e "" echo -e ""
echo -e "\033[1m 🔈 SoCo-Cli GUI\033[0m" echo -e "${bold} 🔈 SoCo-Cli GUI${reset}"
echo -e "" echo -e ""
echo -e " " echo -e " "
@@ -72,23 +74,36 @@ main() {
about() { about() {
vers=$(sonos -v)
reponse=""
last_tag=""
if [ -n "$GITHUB_TOKEN" ]; then
GITHUB_API_HEADER_ACCEPT="Accept: application/vnd.github.v3+json"
GITHUB_API_REST="/repos/avantrec/soco-cli/tags"
reponse=$(curl -H "${GITHUB_API_HEADER_ACCEPT}" -H "Authorization: token $GITHUB_TOKEN" -s "https://api.github.com${GITHUB_API_REST}")
fi
[ -n "$reponse" ] && last_tag=$(echo $reponse | jq '.[0] | (.name)') || last_tag="-"
clear clear
echo "" echo ""
echo -e "\033[1mAbout:\033[0m" echo -e "${bold}About:${reset}"
echo "" echo ""
echo " ##### ##### #### #### ## "; echo -e "${bold} ##### ##### #### #### ## ${reset}"
echo " ## ## ## ## ## ## "; echo -e "${bold} ## ## ## ## ## ## ${reset}"
echo " ##### ## ## #### ## ## #### ## ## ### ## ## ## ### "; echo -e "${bold} ##### ## ## #### ## ## #### ## ## ### ## ## ## ### ${reset}"
echo " ## ## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ## "; echo -e "${bold} ## ## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ## ${reset}"
echo " ##### ## ## ## ## ## ## ## # ## ## ## ## ## ## "; echo -e "${bold} ##### ## ## ## ## ## ## ## # ## ## ## ## ## ## ${reset}"
echo " ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## "; echo -e "${bold} ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ${reset}"
echo " ###### ##### #### ##### #### ####### #### ## ###### #### "; echo -e "${bold} ###### ##### #### ##### #### ####### #### ## ###### #### ${reset}"
echo " ##### "; echo -e "${bold} ##### ${reset}"
echo "" echo ""
echo "Just a GUI for the wonderful tool SoCo-Cli" echo "Just a GUI for the wonderful tool SoCo-Cli"
echo "" echo ""
echo "https://github.com/avantrec/soco-cli" echo "https://github.com/avantrec/soco-cli"
echo "" echo ""
echo "To install / upgrade soco-cli: pip3 install -U soco-cli (last tag: $last_tag)"
echo -e "\n$vers\n"
echo "<Press Enter to quit>" echo "<Press Enter to quit>"
} }
@@ -96,7 +111,7 @@ about() {
help() { help() {
clear clear
echo "" echo ""
echo -e "\033[1;4mHelp:\033[0m" echo -e "${bold_under}Help:${reset}"
echo -e "\n${bold}Main Menu:${reset}" echo -e "\n${bold}Main Menu:${reset}"
@@ -202,7 +217,7 @@ soco() {
do do
clear clear
echo -e "" echo -e ""
echo -e "\033[1m 🔊 Sonos $device \033[0m" echo -e "${bold} 🔊 Sonos $device ${reset}"
echo -e "" echo -e ""
echo -e " " echo -e " "
echo -e "------------------------|-------------------------|--------------------" echo -e "------------------------|-------------------------|--------------------"
@@ -261,112 +276,112 @@ soco() {
option_1() { option_1() {
#echo "$loc" #echo "$loc"
playing="Playing France Info..." playing="Playing France Info..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'franceinfo' && sleep 2 sonos $loc $device play_fav 'franceinfo' && sleep 2
} }
# Playing France Inter # Playing France Inter
option_2() { option_2() {
playing="Playing France Inter..." playing="Playing France Inter..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'france inter' && sleep 2 sonos $loc $device play_fav 'france inter' && sleep 2
} }
# Playing K6 FM # Playing K6 FM
option_3() { option_3() {
playing="Playing K6 FM..." playing="Playing K6 FM..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'K6 FM' && sleep 2 sonos $loc $device play_fav 'K6 FM' && sleep 2
} }
# Playing Rires et Chansons # Playing Rires et Chansons
option_4() { option_4() {
playing="Playing Rires et Chansons..." playing="Playing Rires et Chansons..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'Rire et Chansons' && sleep 2 sonos $loc $device play_fav 'Rire et Chansons' && sleep 2
} }
# Playing RTL # Playing RTL
option_5() { option_5() {
playing="Playing RTL..." playing="Playing RTL..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'RTL' && sleep 2 sonos $loc $device play_fav 'RTL' && sleep 2
} }
# Playing Deezer Flow # Playing Deezer Flow
option_6() { option_6() {
playing="Playing Deezer Flow..." playing="Playing Deezer Flow..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device play_fav 'Flow' sonos $loc $device play_fav 'Flow'
} }
# Set volume to level 11 # Set volume to level 11
option_11() { option_11() {
#playing="Playing Deezer Flow..." #playing="Playing Deezer Flow..."
echo -e "\n\033[1m Set volume to level 11... \033[0m" echo -e "\n${bold} Set volume to level 11... ${reset}"
sonos $loc $device volume 11 && sleep 2 sonos $loc $device volume 11 && sleep 2
} }
# Mute ON # Mute ON
option_12() { option_12() {
playing="Mute ON..." playing="Mute ON..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device mute on && sleep 2 sonos $loc $device mute on && sleep 2
} }
# Set volume to level 13 # Set volume to level 13
option_13() { option_13() {
#playing="Start $device..." #playing="Start $device..."
echo -e "\n\033[1m Set volume to level 13... \033[0m" echo -e "\n${bold} Set volume to level 13... ${reset}"
sonos $loc $device volume 13 && sleep 2 sonos $loc $device volume 13 && sleep 2
} }
# Mute OFF # Mute OFF
option_14() { option_14() {
playing="" playing=""
echo -e "\n\033[1m Mute OFF... \033[0m" echo -e "\n${bold} Mute OFF... ${reset}"
sonos $loc $device mute off && sleep 2 sonos $loc $device mute off && sleep 2
} }
# Set volume to level 15 # Set volume to level 15
option_15() { option_15() {
#playing="Stop $device..." #playing="Stop $device..."
echo -e "\n\033[1m Set volume to level 15... \033[0m" echo -e "\n${bold} Set volume to level 15... ${reset}"
sonos $loc $device volume 15 && sleep 2 sonos $loc $device volume 15 && sleep 2
} }
# Start $device # Start $device
option_16() { option_16() {
playing="Start $device..." # <= Shazaaam playing="Start $device..." # <= Shazaaam
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device start && sleep 2 sonos $loc $device start && sleep 2
} }
# Stop $device # Stop $device
option_17() { option_17() {
playing="Stop $device..." playing="Stop $device..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device stop && sleep 2 sonos $loc $device stop && sleep 2
} }
# Pause $device # Pause $device
option_18() { option_18() {
playing="Pause $device..." playing="Pause $device..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device pause && sleep 2 sonos $loc $device pause && sleep 2
} }
# Previous tracks # Previous tracks
option_19() { option_19() {
#playing="Start $device..." # <= Shazaaam #playing="Start $device..." # <= Shazaaam
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device previous && sleep 2 sonos $loc $device previous && sleep 2
} }
# Next tracks # Next tracks
option_20() { option_20() {
#playing="Stop $device..." # <= Shazaaam #playing="Stop $device..." # <= Shazaaam
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
sonos $loc $device next && sleep 2 sonos $loc $device next && sleep 2
} }
@@ -399,7 +414,7 @@ play_track_from_library() {
# Help # Help
help_soco() { help_soco() {
echo -e "\n\033[1m Help... \033[0m\n" echo -e "\n${bold} Help... ${reset}\n"
echo -e "Play albums:" echo -e "Play albums:"
echo -e "Play artists:" echo -e "Play artists:"
echo -e "Play tracks:" echo -e "Play tracks:"
@@ -411,7 +426,7 @@ help_soco() {
# Sleep timer # Sleep timer
sleeep() { sleeep() {
playing="Set sleep timer..." playing="Set sleep timer..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
status=$(sonos $loc $device status) status=$(sonos $loc $device status)
if [[ "$status" != "STOPPED" ]]; then if [[ "$status" != "STOPPED" ]]; then
@@ -448,7 +463,7 @@ sleeep() {
# Cancel timer # Cancel timer
sleeep_3() { sleeep_3() {
clear clear
echo -e "\n\033[1m Cancel timer... \033[0m\n" echo -e "\n${bold} Cancel timer... ${reset}\n"
secs=$(sonos $loc $device sleep_timer) secs=$(sonos $loc $device sleep_timer)
if [ $secs -ne 0 ]; then if [ $secs -ne 0 ]; then
@@ -528,7 +543,7 @@ sleeep_1() {
# Shazaaaam # Shazaaaam
option_27() { option_27() {
echo -e "\n\033[1m Shazaaaam... \033[0m" echo -e "\n${bold} Shazaaaam... ${reset}"
shazam shazam
} }
@@ -556,9 +571,9 @@ shazam() {
else radio=""; fi else radio=""; fi
if [ -n "$radio" ]; then if [ -n "$radio" ]; then
shazam="\033[1mOn air\033[0m: \033[3m$radio\033[0m" shazam="${bold}On air${reset}: \033[3m$radio${reset}"
else else
shazam="\033[1mOn air\033[0m: \033[1m$title\033[0m \033[3mfrom\033[0m $album \033[3mof\033[0m $artist" shazam="${bold}On air${reset}: ${bold}$title${reset} \033[3mfrom${reset} $album \033[3mof${reset} $artist"
fi fi
echo -e "\n $shazam \n" echo -e "\n $shazam \n"
@@ -569,7 +584,7 @@ shazam() {
# Switch status light # Switch status light
led() { led() {
playing="Switch status light..." playing="Switch status light..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
led=$(sonos $loc $device status_light) led=$(sonos $loc $device status_light)
echo -e "Status light is ${bold}$led${reset}" echo -e "Status light is ${bold}$led${reset}"
@@ -602,7 +617,7 @@ soco_lists() {
do do
clear clear
echo -e "" echo -e ""
echo -e "\033[1m 🔊 Sonos lists $device \033[0m" echo -e "${bold} 🔊 Sonos lists $device ${reset}"
echo -e "" echo -e ""
echo -e " " echo -e " "
echo -e "------------------------------------------------------------------------------" echo -e "------------------------------------------------------------------------------"
@@ -647,7 +662,7 @@ soco_lists() {
# Favourite radio stations # Favourite radio stations
list_1() { list_1() {
echo -e "\n\033[1m Favourite radio stations... \033[0m" echo -e "\n${bold} Favourite radio stations... ${reset}"
s=$(sonos $loc $device favourite_radio_stations) s=$(sonos $loc $device favourite_radio_stations)
echo -e "\n $s \n" echo -e "\n $s \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -655,7 +670,7 @@ list_1() {
# Favourites # Favourites
list_2() { list_2() {
echo -e "\n\033[1m Favourites... \033[0m" echo -e "\n${bold} Favourites... ${reset}"
f=$(sonos $loc $device list_favs) f=$(sonos $loc $device list_favs)
echo -e "\n $f \n" echo -e "\n $f \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -663,7 +678,7 @@ list_2() {
# Queue # Queue
list_3() { list_3() {
echo -e "\n\033[1m Queue... \033[0m" echo -e "\n${bold} Queue... ${reset}"
q=$(sonos $loc $device list_queue) q=$(sonos $loc $device list_queue)
echo -e "\n $q \n" echo -e "\n $q \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -671,7 +686,7 @@ list_3() {
# Remove from queue # Remove from queue
list_4() { list_4() {
echo -e "\n\033[1m Remove from queue... \033[0m" echo -e "\n${bold} Remove from queue... ${reset}"
l=$(sonos $loc $device queue_length) l=$(sonos $loc $device queue_length)
if [ $l -ne 0 ]; then if [ $l -ne 0 ]; then
@@ -691,7 +706,7 @@ list_4() {
# Clear queue # Clear queue
list_5() { list_5() {
echo -e "\n\033[1m Clear queue... \033[0m" echo -e "\n${bold} Clear queue... ${reset}"
sonos $loc $device clear_queue sonos $loc $device clear_queue
q=$(sonos $loc $device queue_length) q=$(sonos $loc $device queue_length)
if [ $q -eq 0 ]; then echo "Queue is empty"; else echo "Queue is not empty"; fi if [ $q -eq 0 ]; then echo "Queue is empty"; else echo "Queue is not empty"; fi
@@ -700,7 +715,7 @@ list_5() {
# List Artists # List Artists
list_7() { list_7() {
echo -e "\n\033[1m List artists... \033[0m" echo -e "\n${bold} List artists... ${reset}"
a=$(sonos $loc $device list_artists | more) a=$(sonos $loc $device list_artists | more)
echo -e "\n $a \n" echo -e "\n $a \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -708,7 +723,7 @@ list_7() {
# Lists Albums # Lists Albums
list_8() { list_8() {
echo -e "\n\033[1m List albums... \033[0m" echo -e "\n${bold} List albums... ${reset}"
b=$(sonos $loc $device list_albums | more) b=$(sonos $loc $device list_albums | more)
echo -e "\n $b \n" echo -e "\n $b \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -716,7 +731,7 @@ list_8() {
# Create Sonos playlist # Create Sonos playlist
list_11() { list_11() {
echo -e "\n\033[1m Create Sonos playlist... \033[0m" echo -e "\n${bold} Create Sonos playlist... ${reset}"
echo -e "\n" echo -e "\n"
read -p "Input a name for playlist: " name read -p "Input a name for playlist: " name
sonos $loc $device create_playlist "$name" sonos $loc $device create_playlist "$name"
@@ -724,7 +739,7 @@ list_11() {
#list_playlists #list_playlists
list_12() { list_12() {
echo -e "\n\033[1m List Sonos playlist... \033[0m" echo -e "\n${bold} List Sonos playlist... ${reset}"
l=$(sonos $loc $device list_playlists) l=$(sonos $loc $device list_playlists)
echo -e "\n $l \n" echo -e "\n $l \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -732,7 +747,7 @@ list_12() {
#delete_playlist #delete_playlist
list_13() { list_13() {
echo -e "\n\033[1m Delete Sonos playlist... \033[0m" echo -e "\n${bold} Delete Sonos playlist... ${reset}"
while : while :
do do
@@ -746,7 +761,7 @@ list_13() {
# List tracks in all Sonos Playlists # List tracks in all Sonos Playlists
list_14() { list_14() {
echo -e "\n\033[1m List tracks in all Sonos Playlists... \033[0m" echo -e "\n${bold} List tracks in all Sonos Playlists... ${reset}"
c=$(sonos $loc $device list_all_playlist_tracks) c=$(sonos $loc $device list_all_playlist_tracks)
echo -e "\n $c \n" echo -e "\n $c \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -755,7 +770,7 @@ list_14() {
# Add a Sonos playlist to queue # Add a Sonos playlist to queue
list_15() { list_15() {
playing="Add Sonos playlist to queue..." playing="Add Sonos playlist to queue..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
echo -e "\nList of Sonos playlist:" echo -e "\nList of Sonos playlist:"
sonos $loc $device list_playlists sonos $loc $device list_playlists
@@ -768,7 +783,7 @@ list_15() {
# Remove a track from a Sonos playlist # Remove a track from a Sonos playlist
list_16() { list_16() {
playing="Remove a track from a Sonos playlist..." playing="Remove a track from a Sonos playlist..."
echo -e "\n\033[1m $playing \033[0m" echo -e "\n${bold} $playing ${reset}"
while : while :
do do
@@ -798,7 +813,7 @@ soco_infos() {
do do
clear clear
echo -e "" echo -e ""
echo -e "\033[1m 🔊 Sonos $device infos \033[0m" echo -e "${bold} 🔊 Sonos $device infos ${reset}"
echo -e "" echo -e ""
echo -e " " echo -e " "
echo -e "--------------------------------" echo -e "--------------------------------"
@@ -837,7 +852,7 @@ soco_infos() {
# Alarms # Alarms
info_1() { info_1() {
echo -e "\n\033[1m Alarms... \033[0m" echo -e "\n${bold} Alarms... ${reset}"
a=$(sonos $loc $device alarms) a=$(sonos $loc $device alarms)
echo -e "\n $a \n" echo -e "\n $a \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -845,7 +860,7 @@ info_1() {
# Groups # Groups
info_2() { info_2() {
echo -e "\n\033[1m Groups... \033[0m" echo -e "\n${bold} Groups... ${reset}"
g=$(sonos $loc $device groups) g=$(sonos $loc $device groups)
echo -e "\n $g \n" echo -e "\n $g \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -859,7 +874,7 @@ info_3() {
# Shares # Shares
info_4() { info_4() {
echo -e "\n\033[1m Shares... \033[0m" echo -e "\n${bold} Shares... ${reset}"
s=$(sonos $loc $device shares) s=$(sonos $loc $device shares)
echo -e "\n $s \n" echo -e "\n $s \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -867,7 +882,7 @@ info_4() {
# Reindex # Reindex
info_5() { info_5() {
echo -e "\n\033[1m Reindex shares... \033[0m" echo -e "\n${bold} Reindex shares... ${reset}"
y=$(sonos $loc $device reindex) y=$(sonos $loc $device reindex)
echo -e "\n $y \n" echo -e "\n $y \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -875,7 +890,7 @@ info_5() {
# Sysinfo # Sysinfo
info_6() { info_6() {
echo -e "\n\033[1m Sysinfo... \033[0m" echo -e "\n${bold} Sysinfo... ${reset}"
s=$(sonos $loc $device sysinfo) s=$(sonos $loc $device sysinfo)
echo -e "\n $s \n" echo -e "\n $s \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -883,7 +898,7 @@ info_6() {
# All Zones (rooms) # All Zones (rooms)
info_7() { info_7() {
echo -e "\n\033[1m All Zones... \033[0m" echo -e "\n${bold} All Zones... ${reset}"
z=$(sonos $loc $device all_zones) z=$(sonos $loc $device all_zones)
echo -e "\n $z \n" echo -e "\n $z \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -891,7 +906,7 @@ info_7() {
# Refreshing the Local Speaker List # Refreshing the Local Speaker List
info_8() { info_8() {
echo -e "\n\033[1m Refreshing the Local Speaker List... \033[0m" echo -e "\n${bold} Refreshing the Local Speaker List... ${reset}"
r=$(sonos -lr $device groups) r=$(sonos -lr $device groups)
echo -e "\n $r \n" echo -e "\n $r \n"
read -p "< Press Enter>" read -p "< Press Enter>"
@@ -905,7 +920,7 @@ all() {
do do
clear clear
echo -e "" echo -e ""
echo -e "\033[1m 🔊 Sonos All devices \033[0m" echo -e "${bold} 🔊 Sonos All devices ${reset}"
echo -e "" echo -e ""
echo -e "Below commands apply to all Sonos devices in the network." echo -e "Below commands apply to all Sonos devices in the network."
echo -e "" echo -e ""
@@ -944,7 +959,7 @@ all() {
# Switch OFF status light # Switch OFF status light
all_1() { all_1() {
cde="Switch OFF status light on All devices..." cde="Switch OFF status light on All devices..."
echo -e "\n\033[1m $cde \033[0m" echo -e "\n${bold} $cde ${reset}"
sleep 0.5 sleep 0.5
saslof=$(sonos _all_ status_light off | tr '\n' ' ' | xargs) saslof=$(sonos _all_ status_light off | tr '\n' ' ' | xargs)
@@ -957,7 +972,7 @@ all_1() {
# Switch ON status light # Switch ON status light
all_2() { all_2() {
cde="Switch ON status light on All devices..." cde="Switch ON status light on All devices..."
echo -e "\n\033[1m $cde \033[0m" echo -e "\n${bold} $cde ${reset}"
sleep 0.5 sleep 0.5
saslon=$(sonos _all_ status_light on | tr '\n' ' ' | xargs) saslon=$(sonos _all_ status_light on | tr '\n' ' ' | xargs)
@@ -970,7 +985,7 @@ all_2() {
# Mute ON # Mute ON
all_3() { all_3() {
cde="Mute ON All devices..." cde="Mute ON All devices..."
echo -e "\n\033[1m $cde \033[0m" echo -e "\n${bold} $cde ${reset}"
sleep 0.5 sleep 0.5
saslon=$(sonos _all_ mute on | tr '\n' ' ' | xargs) saslon=$(sonos _all_ mute on | tr '\n' ' ' | xargs)
@@ -983,7 +998,7 @@ all_3() {
# Mute OFF # Mute OFF
all_4() { all_4() {
cde="Mute OFF All devices..." cde="Mute OFF All devices..."
echo -e "\n\033[1m $cde \033[0m" echo -e "\n${bold} $cde ${reset}"
sleep 0.5 sleep 0.5
saslon=$(sonos _all_ mute off | tr '\n' ' ' | xargs) saslon=$(sonos _all_ mute off | tr '\n' ' ' | xargs)