Δημοσιεύτηκε: 12 Ιούλ 2023, 10:51
από xXx
the_eye έγραψε:Μια ιδέα που έχω, αν σκοπεύεις να ασχοληθείς, είναι να κρατάς τους σταθμούς σε ξεχωριστό αρχείο το οποίο να κάνεις download/ενημέρωση στο ξεκίνημα του script.
Με αυτό τον τρόπο θα μπορείς εύκολα να αλλάζεις/ενημερώνεις σε όλους που χρησιμοποιούν το script τους σταθμούς.


Spoiler: show
Είμαι ήδη στην διαδικασία ενός "εξυπνότερου" σκρίπ, το οποίο θα παρέχει διαφορετικούς σταθμούς στον χρήστη,
ανάλογα με την τοποθεσία του. Το οποίο μάλιστα, είναι και αρκετά μικρότερο ως σκριπτ.
Δουλεύει καλά ήδη, το μόνο πρόβλημα που έχω ότι ακόμη δεν έχω ψαχτεί πως να το κάνω να τρέχει αυτόνομα,
και χωρίς προσωρινά αρχεία, έξτρα αρχεία, και λοιπά. Το παραθέτω:
Κώδικας: Επιλογή όλων

#!/bin/bash
if [ "$(which whiptail)" == "" ]
then
echo " Please install whiptail."
exit 1
fi
if [ "$(which mpv)" == "" ]
then
echo " Please install mpv."
exit 1
fi
if [ "$(which killall)" == "" ]
then
echo " Please install psmisc."
exit 1
fi
if [ "$(which wget)" == "" ]
then
echo " Please install wget."
exit 1
fi
if [ "$(wget -qO- 1.1.1.1)" == "" ]
then
echo " This script needs internet."
exit 1
fi
URL="http://opml.radiotime.com/Browse.ashx?c=local"
DATA="$(wget -qO- $URL | cut -f4,6 -d\" | grep 'Tune.ashx?id=' | sed "s/\&/\&/g" | sed "s/\'//g" | sed "s/ /_/g")"
NAME=($(echo "$DATA" | cut -f1 -d\"))
UURL=($(echo "$DATA" | cut -f2 -d\"))
X=0
echo '#!/bin/bash'
echo 'while [ 1 ]'
echo 'do'
echo 'CHOICE=$('
echo 'whiptail --title "ΡΑΔΙΟΦΩΝΟ" --menu "Επέλεξε σταθμό:" --default-item "$CHOICE" 30 60 22 \'
for i in "${NAME[@]}"
do
echo "\"$X)\"" \"$(echo "${NAME[$X]}" | sed "s/_/ /g")\" "\\"
let X+=1
done

echo "\"$X)\"" "Κλείσιμο" "3>&2 2>&1 1>&3"
echo ")"
echo 'case $CHOICE in'
X=0
for i in "${UURL[@]}"
do
echo "\"$X)\")" "killall mpv 2>/dev/null ; mpv" ""${UURL[$X]}"" "&>/dev/null & ;;"
let X+=1
done
echo "\"$X)\")" "killall mpv 2>/dev/null ; exit ;;"
echo "esac"
echo "done"

Οπότε, αναφορικά με το παραπάνω "μόνο πρόβλημα", είναι το ότι για να τρέξει το "ζωντανότερο" αυτό σκριπτ,
θα πρέπει κάποιος αφού το σώσει, και το κάνει εκτελέσιμο, να το καλέσει ως εξής:
Κώδικας: Επιλογή όλων
radio | bash

Μέχρι να βρω τρόπο (και χρόνο) να το κάνω πιό ευπαρουσίαστο.
Ως λύση πάντως, είναι σίγουρα πιό έξυπνη, και χωρίς τίποτα hardcoded στο σκρίπτ.
Αν κάποιος το δοκιμάσει από Αθήνα, ας μας πει πόσους σταθμούς του βγάζει.