Το script χρειάζεται κάτι λιγότερο απο 1 ώρα για να δημιουργήσει την λίστα με αλφαβητική σειρά.
Τα αρχεία που παρέχει το e-radio είναι τύπου .asx τα οποία περιέχουν τα πραγματικά streams σε http και mms.
Στην λίστα συμπεριλαμβάνονται μόνο το http καθώς τα mms δεν παίζουν πάντα.
Αν κάποιο stream δεν παίζει με http μπορείτε να κάνετε χειροκίνητα την αλλαγή σε mms.
Επίσης πολλά αρχεία .asx περιέχουν 2 ζεύγη απο streams απο τα οποία το ένα είναι παλιό και δεν δουλεύει.
Το script κάνει έλεγχο και των δυο και κρατάει το ενεργό μόνο. Παρόλα αυτά μπορεί σε μερικές περιπτώσεις να κάνει λάθος
αν κάποιο stream ενώ δουλεύει είναι προσωρινά down.
Προσοχή! όσο τρέχετε το script θα πρέπει να μην χρησιμοποιήσετε καθόλου τον mplayer ή πρόγραμμα που τον χρησιμοποιεί όπως ο smplayer.
Ένα έτοιμο stream δημιουργημένο στις 13/12/2010
http://dl.dropbox.com/u/1320617/eradio/eradio.xspf.zip
http://dl.dropbox.com/u/1320617/eradio/eradio.pls.zip
Απλά αποσυμπιέστε και ανοίξτε το με τον αγαπημένο σας player.
- Κώδικας: Επιλογή όλων
#!/bin/bash
#e-radio.gr playlist generator (erplsgen)
#Copyright (C) 2010 Dimitris Diamantis (aka ftso)
#This is free software. You may redistribute copies of it under the terms of
#the GNU General Public License <http://www.gnu.org/licenses/GPL.html>
#There is NO WARRANTY, to the extent permitted by law.
#Dependencies: mplayer, wget, bash, awk
###Number of e-radio sids###
numberofsids=2500
############################
cd /tmp
rm /tmp/eradio1.txt
rm /tmp/eradio2.txt
rm /tmp/eradio3.txt
rm /tmp/eradio4.txt
rm /tmp/eradio.pls
clear
echo "Close mplayer and wait..."
c1=0
c3=1
while [ $c1 -lt $numberofsids ]; do
wget --quiet http://www.e-radio.gr/player/player.el.asp?sid=$c1 -O /tmp/eradio2.txt
cat /tmp/eradio2.txt | grep stationtitle
if [ $? -ne 0 ]; then
let c1=$c1+1
continue
fi
rname=$(cat /tmp/eradio2.txt | grep stationtitle | sed 's^.*title\">^^g' | sed 's^<.*^^g' | sed 's^ ^_^g' | sed 's^,^\.^g')
rwebname=$(cat /tmp/eradio2.txt | grep playerX.asp?sID | sed 's^.*cn=^^g' | sed 's^&web.*^^')
rurl="http://www.e-radio.gr/asx/$rwebname.asx"
rstreamtmp=$(wget $rurl -O - | tr '\r' '\n' | grep http | sed 's^<REF HREF = "^^g' | sed 's^"/>^^g')
rstream=$(echo $rstreamtmp | sed 's^ ^\\^g')
rm /tmp/eradio2.txt
echo "
$rname~$rstream
" >> /tmp/eradio3.txt
let c1=$c1+1
done
rm /tmp/eradio2.txt
cat /tmp/eradio3.txt | sort -u >> /tmp/eradio2.txt
echo '[playlist]' > /tmp/eradio4.txt
echo >> /tmp/eradio4.txt
for line in `cat /tmp/eradio2.txt`; do
rname2=$(echo $line | awk -v C3="${c3}" 'BEGIN { FS = "~" } ; { print "Title"C3"="$1 }')
rstream2=$(echo $line | awk -v C4="${c3}" 'BEGIN { FS = "~" } ; { print "File"C4"="$2 }')
echo $rname2 >> /tmp/eradio4.txt
echo $rstream2 >> /tmp/eradio4.txt
echo 'Length1=-1' >> /tmp/eradio4.txt
echo >> /tmp/eradio4.txt
echo >> /tmp/eradio4.txt
let c3=$c3+1
done
let c4=$c3-1
echo "
NumberOfEntries=$c4
Version=2" >> /tmp/eradio4.txt
for dstreams in $(cat /tmp/eradio4.txt | grep '\\'); do
str1=$(echo $dstreams | grep '\\' | sed 's^File[0-9]*=^^g' | awk 'BEGIN { FS = "\\" } ; { print $1 }')
str2=$(echo $dstreams | grep '\\' | sed 's^File[0-9]*=^^g' | awk 'BEGIN { FS = "\\" } ; { print $2 }')
mplayer -endpos 1 $str1 | grep playback
if [ $? -eq 0 ]; then
rm /tmp/eradio1.txt
cat /tmp/eradio4.txt | sed "s^$str2^^g" >> /tmp/eradio1.txt
rm /tmp/eradio4.txt
cat /tmp/eradio1.txt >> /tmp/eradio4.txt
else
rm /tmp/eradio1.txt
cat /tmp/eradio4.txt | sed "s^$str1^^g" >> /tmp/eradio1.txt
rm /tmp/eradio4.txt
cat /tmp/eradio1.txt >> /tmp/eradio4.txt
fi
wait
killall mplayer
done
wait
cat /tmp/eradio4.txt | sed 's^\\^^g' > /tmp/eradio.pls
rm /tmp/eradio1.txt
rm /tmp/eradio2.txt
rm /tmp/eradio3.txt
rm /tmp/eradio4.txt
clear
echo "Playlist: /tmp/eradio.pls"
exit 0;
Μπορείτε να το κατεβάσετε απο εδώ...
http://www.ftso.gr/MyWork/eradio_playlist_generator
Enjoy