feature
-rework modify_alarms() with fzf -add sort to fzf
This commit is contained in:
125
soco-cli-gui.sh
125
soco-cli-gui.sh
@@ -49,6 +49,39 @@ if (! type fzf > /dev/null 2>&1); then fzf_bin=0
|
|||||||
else fzf_bin=1
|
else fzf_bin=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
fzf_args=(
|
||||||
|
--height=8
|
||||||
|
--info=hidden
|
||||||
|
--with-nth=2..
|
||||||
|
--layout=reverse
|
||||||
|
--bind=change:clear-query
|
||||||
|
--border
|
||||||
|
)
|
||||||
|
|
||||||
|
# --prompt='Play'
|
||||||
|
# --header="${header:1}"
|
||||||
|
|
||||||
|
declare -A radio_uri
|
||||||
|
radio_uri=(['France Info']="http://icecast.radiofrance.fr/franceinfo-midfi.mp3"
|
||||||
|
['France Inter']="http://icecast.radiofrance.fr/franceinter-midfi.mp3"
|
||||||
|
['RTL']="https://streamer-02.rtl.fr/rtl-1-44-128"
|
||||||
|
['Classic FM']="https://classicfm.ice.infomaniak.ch/classic-fm.mp3"
|
||||||
|
['FIP Jazz']="https://icecast.radiofrance.fr/fipjazz-midfi.mp3"
|
||||||
|
['FIP Metal']="https://icecast.radiofrance.fr/fipmetal-midfi.mp3"
|
||||||
|
['FIP Reggae']="https://icecast.radiofrance.fr/fipreggae-midfi.mp3"
|
||||||
|
['FIP Rock']="https://icecast.radiofrance.fr/fiprock-midfi.mp3"
|
||||||
|
['France Bleue Bourgone']="https://icecast.radiofrance.fr/fbbourgogne-midfi.mp3"
|
||||||
|
['France Culture']="https://icecast.radiofrance.fr/franceculture-midfi.mp3"
|
||||||
|
['France Musique']="https://icecast.radiofrance.fr/francemusique-midfi.mp3"
|
||||||
|
['Frequence Jazz']="https://jazzradio.ice.infomaniak.ch/frequencejazz-high.mp3"
|
||||||
|
['Jazz Blues']="https://jazzblues.ice.infomaniak.ch/jazzblues-high.mp3"
|
||||||
|
['Le Mouv']="https://icecast.radiofrance.fr/mouv-midfi.mp3"
|
||||||
|
['RFM']="https://stream.rfm.fr/rfm.mp3"
|
||||||
|
['Soma FM']="http://ice2.somafm.com/indiepop-128-aac"
|
||||||
|
['Radio Classique']="http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3"
|
||||||
|
['Party Viber Radio']="http://www.partyviberadio.com:8020/listen.pls"
|
||||||
|
['*CHIME*']="CHIME")
|
||||||
|
|
||||||
devices() {
|
devices() {
|
||||||
discover=$(sonos-discover -p 2>/dev/null)
|
discover=$(sonos-discover -p 2>/dev/null)
|
||||||
if [ -z "$discover" ]; then
|
if [ -z "$discover" ]; then
|
||||||
@@ -1737,17 +1770,6 @@ move_alarms() {
|
|||||||
|
|
||||||
al_spec() {
|
al_spec() {
|
||||||
|
|
||||||
echo "--"
|
|
||||||
echo "$1"
|
|
||||||
echo "$2"
|
|
||||||
echo "$3"
|
|
||||||
echo "$4"
|
|
||||||
echo "$5"
|
|
||||||
echo "$6"
|
|
||||||
echo "$7"
|
|
||||||
echo "$8"
|
|
||||||
echo "--"
|
|
||||||
|
|
||||||
shopt -s nocasematch
|
shopt -s nocasematch
|
||||||
|
|
||||||
while :
|
while :
|
||||||
@@ -1800,6 +1822,7 @@ al_spec() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
read -e -p "Enable (ON/OFF or YES/NO): " -i $4 enabled
|
read -e -p "Enable (ON/OFF or YES/NO): " -i $4 enabled
|
||||||
@@ -1807,16 +1830,31 @@ al_spec() {
|
|||||||
[[ $enabled =~ $REGEX4 ]] || [[ $enabled == "_" ]] && break
|
[[ $enabled =~ $REGEX4 ]] || [[ $enabled == "_" ]] && break
|
||||||
done
|
done
|
||||||
|
|
||||||
uri=$(echo $5 | sed 's/\"//g')
|
|
||||||
|
if [ $fzf_bin -eq 1 ]; then
|
||||||
|
radio_uri+=([*No change*]="_")
|
||||||
|
|
||||||
|
header=" Choose *No change* to keep the same alarm"
|
||||||
|
prompt="Choose a radio or *CHIME* for an alarm"
|
||||||
|
|
||||||
|
choice=$(printf "Play %s\n" "${!radio_uri[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt" --header "$header")
|
||||||
|
to_play_fzf=${radio_uri[${choice:5}]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
uri=$(echo $5 | sed 's/\"//g')
|
||||||
|
[ -z "$to_play_fzf" ] && to_play_fzf="$uri"
|
||||||
|
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
read -e -p "Play (CHIME or URI): " -i "$uri" to_play
|
read -e -p "Play (CHIME or URI): " -i "$to_play_fzf" to_play
|
||||||
#REGEX5="CHIME|^(http|https)://"
|
#REGEX5="CHIME|^(http|https)://"
|
||||||
REGEX5="CHIME|^(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]+"
|
REGEX5="CHIME|^(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]+"
|
||||||
if [[ $to_play =~ $REGEX5 ]] || [[ $to_play == "_" ]]; then
|
if [[ $to_play =~ $REGEX5 ]] || [[ $to_play == "_" ]]; then
|
||||||
MATCH5="${BASH_REMATCH[0]}"
|
if [[ $to_play != "_" ]]; then
|
||||||
[ $MATCH5 != "CHIME" ] && to_play="\"$to_play\""
|
MATCH5="${BASH_REMATCH[0]}"
|
||||||
|
# echo "$MATCH5"
|
||||||
|
[ $MATCH5 != "CHIME" ] && to_play="\"$to_play\""
|
||||||
|
fi
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -1887,17 +1925,9 @@ modify_alarms() {
|
|||||||
volume="${ids[7]}"
|
volume="${ids[7]}"
|
||||||
grouped="${ids[8]^^}"
|
grouped="${ids[8]^^}"
|
||||||
|
|
||||||
echo ${ids[@]}
|
|
||||||
|
|
||||||
al_spec $start_time $duration $recurrence $enabled "$to_play" $play_mode $volume $grouped
|
al_spec $start_time $duration $recurrence $enabled "$to_play" $play_mode $volume $grouped
|
||||||
|
|
||||||
|
|
||||||
# 07:00,01:30,WEEKDAYS,ON,"http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourfm",NORMAL,50,OFF
|
|
||||||
|
|
||||||
echo $alarm_spec
|
echo $alarm_spec
|
||||||
# 06:00,00:30,WEEKDAYS,NO,CHIME,SHUFFLE,25,ON
|
|
||||||
|
|
||||||
# https://jazzradio.ice.infomaniak.ch/frequencejazz-high.mp3
|
|
||||||
|
|
||||||
sonos $loc $device modify_alarm $trk $alarm_spec
|
sonos $loc $device modify_alarm $trk $alarm_spec
|
||||||
[ $? != 0 ] && echo -e "${red}Error !${reset}"
|
[ $? != 0 ] && echo -e "${red}Error !${reset}"
|
||||||
@@ -1965,43 +1995,18 @@ create_alarms() {
|
|||||||
echo "$court_ala"
|
echo "$court_ala"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
declare -A radio_uri
|
#################
|
||||||
radio_uri=(['France Info']="http://icecast.radiofrance.fr/franceinfo-midfi.mp3"
|
# array
|
||||||
['France Inter']="http://icecast.radiofrance.fr/franceinter-midfi.mp3"
|
#################
|
||||||
['RTL']="https://streamer-02.rtl.fr/rtl-1-44-128"
|
|
||||||
['Classic FM']="https://classicfm.ice.infomaniak.ch/classic-fm.mp3"
|
|
||||||
['FIP Jazz']="https://icecast.radiofrance.fr/fipjazz-midfi.mp3"
|
|
||||||
['FIP Metal']="https://icecast.radiofrance.fr/fipmetal-midfi.mp3"
|
|
||||||
['FIP Reggae']="https://icecast.radiofrance.fr/fipreggae-midfi.mp3"
|
|
||||||
['FIP Rock']="https://icecast.radiofrance.fr/fiprock-midfi.mp3"
|
|
||||||
['France Bleue Bourgone']="https://icecast.radiofrance.fr/fbbourgogne-midfi.mp3"
|
|
||||||
['France Culture']="https://icecast.radiofrance.fr/franceculture-midfi.mp3"
|
|
||||||
['France Musique']="https://icecast.radiofrance.fr/francemusique-midfi.mp3"
|
|
||||||
['Frequence Jazz']="https://jazzradio.ice.infomaniak.ch/frequencejazz-high.mp3"
|
|
||||||
['Jazz Blues']="https://jazzblues.ice.infomaniak.ch/jazzblues-high.mp3"
|
|
||||||
['Le Mouv']="https://icecast.radiofrance.fr/mouv-midfi.mp3"
|
|
||||||
['RFM']="https://stream.rfm.fr/rfm.mp3"
|
|
||||||
['Soma FM']="http://ice2.somafm.com/indiepop-128-aac"
|
|
||||||
['Radio Classique']="http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3"
|
|
||||||
['Party Viber Radio']="http://www.partyviberadio.com:8020/listen.pls"
|
|
||||||
['*CHIME*']="CHIME")
|
|
||||||
|
|
||||||
|
|
||||||
fzf_recurrence=("DAILY" "ONCE" "WEEKDAYS" "WEEKENDS" "ON_DDDDDD")
|
fzf_recurrence=("DAILY" "ONCE" "WEEKDAYS" "WEEKENDS" "ON_DDDDDD")
|
||||||
fzf_play_mode=("NORMAL" "SHUFFLE_NOREPEAT" "SHUFFLE" "REPEAT_ALL" "REPEAT_ONE" "SHUFFLE_REPEAT_ONE")
|
fzf_play_mode=("NORMAL" "SHUFFLE_NOREPEAT" "SHUFFLE" "REPEAT_ALL" "REPEAT_ONE" "SHUFFLE_REPEAT_ONE")
|
||||||
fzf_yes_no=("ON" "OFF" "YES" "NO")
|
fzf_yes_no=("ON" "OFF" "YES" "NO")
|
||||||
|
|
||||||
|
#################
|
||||||
fzf_args=(
|
# fzf_args=
|
||||||
--height=8
|
#################
|
||||||
--info=hidden
|
|
||||||
--with-nth=2..
|
|
||||||
--layout=reverse
|
|
||||||
--bind=change:clear-query
|
|
||||||
--border
|
|
||||||
)
|
|
||||||
|
|
||||||
# --prompt='Play'
|
|
||||||
# --header="${header:1}"
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
@@ -2025,7 +2030,7 @@ create_alarms() {
|
|||||||
header=" Input recurrence"
|
header=" Input recurrence"
|
||||||
prompt="Input recurrence"
|
prompt="Input recurrence"
|
||||||
|
|
||||||
choice=$(printf "Play %s\n" "${fzf_recurrence[@]}" | fzf "${fzf_args[@]}" --prompt "$prompt")
|
choice=$(printf "Play %s\n" "${fzf_recurrence[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt")
|
||||||
recurrence_fzf=${choice:5}
|
recurrence_fzf=${choice:5}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2068,7 +2073,7 @@ create_alarms() {
|
|||||||
header=" Enable / disable alarm"
|
header=" Enable / disable alarm"
|
||||||
prompt="Enable / disable alarm"
|
prompt="Enable / disable alarm"
|
||||||
|
|
||||||
choice=$(printf "Play %s\n" "${fzf_yes_no[@]}" | fzf "${fzf_args[@]}" --prompt "$prompt")
|
choice=$(printf "Play %s\n" "${fzf_yes_no[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt")
|
||||||
enable_fzf=${choice:5}
|
enable_fzf=${choice:5}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2084,7 +2089,7 @@ create_alarms() {
|
|||||||
header=" Choose a radio or *CHIME* for an alarm"
|
header=" Choose a radio or *CHIME* for an alarm"
|
||||||
prompt="Choose a radio or *CHIME* for an alarm"
|
prompt="Choose a radio or *CHIME* for an alarm"
|
||||||
|
|
||||||
choice=$(printf "Play %s\n" "${!radio_uri[@]}" | fzf "${fzf_args[@]}" --prompt "$prompt")
|
choice=$(printf "Play %s\n" "${!radio_uri[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt")
|
||||||
to_play_fzf=${radio_uri[${choice:5}]}
|
to_play_fzf=${radio_uri[${choice:5}]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2104,7 +2109,7 @@ create_alarms() {
|
|||||||
header=" Choose play mode"
|
header=" Choose play mode"
|
||||||
prompt="Choose play mode"
|
prompt="Choose play mode"
|
||||||
|
|
||||||
choice=$(printf "Play %s\n" "${fzf_play_mode[@]}" | fzf "${fzf_args[@]}" --prompt "$prompt")
|
choice=$(printf "Play %s\n" "${fzf_play_mode[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt")
|
||||||
pm_fzf=${choice:5}
|
pm_fzf=${choice:5}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -2127,7 +2132,7 @@ create_alarms() {
|
|||||||
header=" Grouped speakers"
|
header=" Grouped speakers"
|
||||||
prompt="Grouped speakers"
|
prompt="Grouped speakers"
|
||||||
|
|
||||||
choice=$(printf "Play %s\n" "${fzf_yes_no[@]}" | fzf "${fzf_args[@]}" --prompt "$prompt")
|
choice=$(printf "Play %s\n" "${fzf_yes_no[@]}" | sort | fzf "${fzf_args[@]}" --prompt "$prompt")
|
||||||
gs_fzf=${choice:5}
|
gs_fzf=${choice:5}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user