Skip to content

Commit 6f8e575

Browse files
committed
Improve volume control and error handling in MPV integration
1 parent 511864a commit 6f8e575

File tree

1 file changed

+34
-15
lines changed

1 file changed

+34
-15
lines changed

shelldio.sh

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,38 @@ validate_station_lists() {
6969
# mpv_pid=$!
7070
# }
7171
fade_out() {
72-
for vol in {100..0..-5}; do
73-
echo '{ "command": ["set_property", "volume", '"$vol"'] }' | socat - /tmp/mpv_socket &>/dev/null
74-
sleep 0.03
75-
done
72+
if [ -S /tmp/mpv_socket ]; then
73+
for vol in {100..0..-5}; do
74+
echo '{ "command": ["set_property", "volume", '"$vol"'] }' | socat - /tmp/mpv_socket &>/dev/null
75+
sleep 0.03
76+
done
77+
fi
7678
}
7779

7880
fade_in() {
79-
for vol in {0..100..5}; do
80-
echo '{ "command": ["set_property", "volume", '"$vol"'] }' | socat - /tmp/mpv_socket &>/dev/null
81-
sleep 0.03
82-
done
81+
if [ -S /tmp/mpv_socket ]; then
82+
for vol in {0..100..5}; do
83+
echo '{ "command": ["set_property", "volume", '"$vol"'] }' | socat - /tmp/mpv_socket &>/dev/null
84+
sleep 0.03
85+
done
86+
fi
8387
}
8488

8589
start_mpv() {
8690
if [[ -n "$mpv_pid" ]] && kill -0 "$mpv_pid" 2>/dev/null; then
8791
fade_out
8892
kill "$mpv_pid" 2>/dev/null
89-
wait "$mpv_pid" 2>/dev/null
93+
# Wait up to 3 seconds for process to terminate
94+
for i in {1..30}; do
95+
if ! kill -0 "$mpv_pid" 2>/dev/null; then
96+
break
97+
fi
98+
sleep 0.1
99+
done
100+
# Force kill if still running
101+
if kill -0 "$mpv_pid" 2>/dev/null; then
102+
kill -9 "$mpv_pid" 2>/dev/null
103+
fi
90104
rm -f /tmp/mpv_socket
91105
fi
92106

@@ -109,7 +123,7 @@ start_mpv() {
109123
echo ""
110124
echo "Αποτυχία σύνδεσης στον σταθμό"
111125
if kill -0 "$mpv_pid" 2>/dev/null; then
112-
kill "$mpv_pid" 2>/dev/null
126+
kill -9 "$mpv_pid" 2>/dev/null
113127
fi
114128
mpv_pid=""
115129
return 1
@@ -212,6 +226,7 @@ EOF
212226

213227
# Δημιουργεί και εμφανίζει σε λίστα τους σταθμούς στο txt file που δέχεται σαν flag
214228
list_stations() {
229+
num=0 # Initialize counter
215230
while IFS='' read -r line || [[ -n "$line" ]]; do
216231
num=$((num + 1))
217232
echo ["$num"] "$line" | cut -d "," -f1
@@ -299,12 +314,12 @@ remove_station() {
299314
sleep 1
300315
list_stations "$my_stations"
301316
while true; do
302-
read -rp "Επέλεξε αριθμού σταθμού (Q/q για έξοδο): " remove_station
303-
if [[ $remove_station = "q" ]] || [[ $remove_station = "Q" ]]; then
317+
read -rp "Επέλεξε αριθμού σταθμού (Q/q για έξοδο): " station_to_remove
318+
if [[ $station_to_remove = "q" ]] || [[ $station_to_remove = "Q" ]]; then
304319
echo "Έξοδος..."
305320
exit 0
306-
elif [ "$remove_station" -gt 0 ] && [ "$remove_station" -le "$num" ]; then #έλεγχος αν το input είναι μέσα στο εύρος της λίστας των σταθμών
307-
station=$(sed "${remove_station}q;d" "$my_stations")
321+
elif [ "$station_to_remove" -gt 0 ] && [ "$station_to_remove" -le "$num" ]; then #έλεγχος αν το input είναι μέσα στο εύρος της λίστας των σταθμών
322+
station=$(sed "${station_to_remove}q;d" "$my_stations")
308323
stathmos_name=$(echo "$station" | cut -d "," -f1)
309324
grep -v "$stathmos_name" "$HOME/.shelldio/my_stations.txt" >"$HOME/.shelldio/my_stations.tmp" && mv "$HOME/.shelldio/my_stations.tmp" "$HOME/.shelldio/my_stations.txt"
310325
echo "Διαγράφηκε ο σταθμός $stathmos_name."
@@ -595,7 +610,11 @@ while [ "$1" != "" ]; do
595610
fi
596611
echo "Γίνεται λήψη του αρχείου των σταθμών από το αποθετήριο."
597612
sleep 1
598-
curl -sL https://raw.githubusercontent.com/CerebruxCode/shelldio/stable/.shelldio/all_stations.txt --output "$HOME/.shelldio/all_stations.txt"
613+
if ! curl -sL https://raw.githubusercontent.com/CerebruxCode/shelldio/stable/.shelldio/all_stations.txt --output "$HOME/.shelldio/all_stations.txt"; then
614+
echo "Αποτυχία λήψης του αρχείου σταθμών. Ελέγξτε τη σύνδεσή σας στο διαδίκτυο."
615+
exit 1
616+
fi
617+
echo "Επιτυχής λήψη του αρχείου σταθμών."
599618
exit 0
600619
;;
601620
-u | --update)

0 commit comments

Comments
 (0)