e-radio playlist generator

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

e-radio playlist generator

Δημοσίευσηαπό ftso » 13 Δεκ 2010, 23:07

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 :)
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό kikirikou » 13 Δεκ 2010, 23:22

Ωραίος :bow: :bow: :clap: :clap:
Γνώσεις ⇛ Linux: το παλεύω ┃ Προγραμματισμός: θεωρία ┃ Αγγλικά,Γερμανικά: Μέτρια
Laptop:
Spoiler: show
Acer Aspire 5715Z (ο Λάζαρος)(πολύ plug and pray κατάσταση)
Λειτουργικά ⇛ Ubuntu 11.04
Προδιαγραφές ⇛ Επεξεργαστής: Intel Pentium dual-core 1.86GHz │ Ram:1GB DDR2 │ Κάρτα γραφικών: Mobile Intel 252MB Accelerator X3100 │Οθόνη: 15.4" WXGA (8ms/220-nit)

Links: Οδηγός προς Νεοεισερχομένους|Δέντρο διανομών(χρονολογικά)|γλωσσάρι
Εικόνα
Άβαταρ μέλους
kikirikou
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 465
Εγγραφή: 22 Οκτ 2010, 17:05
Τοποθεσία: παντού και πουθενά...
IRC: kikirikou
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό medigeek » 14 Δεκ 2010, 00:24

hint: http://e-radio.gr/cache/mediadata_1.js :P
Κώδικας: Επιλογή όλων
wget -q http://e-radio.gr/cache/mediadata_1.js -O - | iconv -f iso-8859-7 -t utf-8
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό ftso » 14 Δεκ 2010, 00:40

ξέχασες να αλλάξεις το EOL ( hint: tr '\r' '\n' ) :P
Η λίστα εμφανίζει 10 σταθμούς λιγότερους απο αυτήν που έφτιαξα εγώ :S
Πάντως αν υπάρχει και κάποια με τα streams θα κάνει την δουλειά πολύ πιο γρήγορα!
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό medigeek » 14 Δεκ 2010, 01:05

Δεν εχω ιδέα, απλά έπαιζα με τη σελίδα τους. :)
Χμ.. αν διάβαζες τα server responses / headers;
Κώδικας: Επιλογή όλων
$ curl -sI http://www.example.com | grep -i content-type
Content-Type: text/html; charset=UTF-8
$ curl -sI "http://www.e-radio.gr/asx/alfaserres.asx" | grep -i content-type
Content-Type: video/x-ms-asf
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό ftso » 14 Δεκ 2010, 01:11

χμμμ...βασικά τώρα το περιεχόμενο των .asx διαβάζω καθώς εκεί βρίσκονται τα streams.
δεν νομίζω να υπάρχουν αλλού εκτός απο τις ίδιες τις σελίδες των σταθμών.
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό ftso » 14 Δεκ 2010, 11:39

Δημιούργησα και ένα .xspf το όποιο είναι ανοιχτό πρότυπο για xml playlist.
http://xspf.org/
Συγκριτικά με το .pls φαίνεται να συνεργάζεται καλύτερα με όλους τους players που δοκίμασα...
Επίσης στο .xspf έγιναν και μικρές διορθώσεις σε μερικούς σταθμούς.

Download
http://dl.dropbox.com/u/1320617/eradio/eradio.xspf.zip
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό medigeek » 14 Δεκ 2010, 17:07

Απίθανη δουλειά! :)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό simosx » 14 Δεκ 2010, 17:21

Εξαιρετική δουλειά!
Κάτι που θα ήταν καλό είναι τα ονόματα των σταθμών να είναι πιο προσιτά στο κοινό.
Για παράδειγμα,
Κώδικας: Επιλογή όλων
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
   <trackList>
      <track>
         <location>http://wm1.greekstream.net/1055rock</location>
         <title>Εν Λευκώ 87,7 ◆ ΑΘΗΝΑ</title>
      </track>
      <track>
         <location>http://155.207.18.114:8000/1431med</location>
         <title>Εκρηξη Fm 99,7 ◆ ΘΕΣΣΑΛΟΝΙΚΗ</title>
      </track>
      <track>
         <location>http://live2.isolservers.com:8000</location>
         <title>Studio Λευκάδας 90,5 ◆ ΛΕΥΚΑΔΑ</title>
      </track>
   </trackList>
</playlist>


(οι σταθμοί δεν αντιστοιχούν με τα ονόματα, το αρχείο είναι απλά δοκιμή).

1. Δοκίμασα και ο Banshee 1.8 δε μπορεί να διαβάσει το παραπάνω αρχείο .xspf, αν και έχει υποστήριξη.
Αν μπορεί να βάλει κανείς Banshee 1.9 και να δοκιμάσει ξανά, θα είναι εξαιρετικό!
2. Στο Banshee υπάρχουν τα πεδία Station, Creator και Description. Θα είναι καλύτερο να βάλουμε π.χ. τον τοποθεσία στο Description.
Ωστόσο, πιστεύω ότι πρέπει να συνδυάσουμε το human readable όνομα με το URL του αντίστοιχου σταθμού. Πιο πολύ δουλειά, λιγότερη αν τη μοιραστούμε.
Αν υπάρχουν <description> στο .xspf, τότε θα βοηθούσα αφάνταστα. Διαφορετικά, διατηρούμε την παραπάνω παραδοχή.
3. Για το Genre του τραγουδιού, αυτό προκύπτει αυτόματα από το σταθμό, αν ο σταθμός δίνει την πληροφορία αυτή.

ftso, δεν ξέρω αν έχεις την ευχέρια να βάλεις το πρόγραμμα εντολών που χρησιμοποιείς στο github.com. Θα ήταν δυνατόν θα δώσουμε ένα χεράκι.
Δες και viewtopic.php?f=6&t=5424
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: e-radio playlist generator

Δημοσίευσηαπό vagrale13 » 14 Δεκ 2010, 17:24

Μπραβο ftso, παρα πολυ καλο! :clap:
Το μονο σταθμο που δεν μπορεσα να παιξω, ειναι η era sport.
Στη λιστα εχει http://media.ertonline.gr:8080/erasport ενω για να παιξει χρειαζεται mms://a1113.l3271935112.c32719.g.lm.aka ... ctor:35112
κατα τ' αλλα, οτι δοκιμασα λειτουργει! :)
Desktop 1: Mint 13 Maya i386 / Ubuntu 14.10 Utopic Unicorn i386 (development branch)
CPU: AMD ATHLON II X2 215 │ RAM: 4026Mb │ Graphics Card: GeForce 210 512MB │ LG W2243S : 1920 x 1080
Desktop 2: Ubuntu 12.04 LTS Precise Pangoli i386
AMD Athlon 64 X2 5800+ │ 1024Mb │ nForce 7600 256MB (onboard) | 1024 x 768
Laptop : Sony Vaio VGN-N11m : Ubuntu 14.04Lts Trusty Tahr i386 (Mate desktop)


*Οδηγοί - How to - Tutorials σε Κατηγορίες
*Oδηγίες προς νεοεισερχόμενους σε forum ή linux
Άβαταρ μέλους
vagrale13
Freedom
Freedom
 
Δημοσιεύσεις: 7107
Εγγραφή: 04 Απρ 2009, 19:29
Τοποθεσία: κάπου εδώ μέσα στο net :P
Launchpad: vagrale
IRC: vagrale13
Εκτύπωση

Επόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron