Δημοσιεύτηκε: 13 Δεκ 2010, 23:07
από ftso
Bash script για την δημιουργία playlist αρχείου (.pls) απο "όλους" τους σταθμούς της σελίδας e-radio.gr

Το 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 :)