Το χρονικό:
Ήταν ένα ζεστό φθινοπωρινό απόγευμα, ο ήλιος είχε μόλις σβήσει στη θάλασσα κι εγώ ύστερα από πολλές ώρες απόλαυσης στιγμών ξεγνοιασιάς κι ευχαρίστησης επέστερφα σπίτι ακούγοντας slow rock στο ραδιόφωνο του αυτοκινήτου μου. Μπαίνοντας σπίτι, θέλοντας να σπάσω την εκκωφαντική ησυχία που επικρατούσε, αποφάσισα να βάλω να ακούσω ένα σταθμό από τον υπολογιστή μου. Πληκτρολογώ http: τα δυο ενοχλητικά κι άχρηστα slashes (//) και το domain name του portal με τις περισσότερες διευθύνσεις Ελληνικών ραδιοφώνων e-radio.gr. Ωστόσο, αυτό που ακούστηκε, ήταν η αγανάκτησή μου κι όχι αυτό που τόσο πολύ ήθελα και καρτερικά περίμενα. Όμως, τι είχε συμβεί; To windows media player plugin που ήταν απαραίτητο για την αναπαραγωγή αρνιόταν πεισματικά να λειτουργήσει (τι πρωτότυπο, όχι ότι δεν υπήρχε εναλλακτική, απλά ήθελα να το φτιάξω κιόλας). Περνώστας σύντομα στην εναλλακτική, ανοίγω τον κώδικα της σελίδας και ψάχνοντας βρίσκω το link του σταθμού, το οποίο στη συνέχεια βάζω στο vlc player και ξεκινάει το steaming επιτυχώς! Και τότε μου ήρθε!
H ιδέα:
Τι ωραίο που θα ήταν να μη χρειάζεται να περιμένεις να ανοίξει ο browser, να φορτώσει το site, να επιλέξεις το link και να ελπίζεις να μην κολλήσει κάποιο plugin του browser ή και ο ίδιος ο browser για να ακούσεις το σταθμό της επιλογής σου απρόσκοπτα, αλλά απλά να μπορείς να έχεις ένα playlist το οποίο θα αναπαράγεις με κάποιον player.
Με πολλή θέληση και λίγες γραμμές κώδικα κατάφερα να πάρω αυτό που ήθελα. Ένα playlist με όλα τα ραδιόφωνα που ήταν καταχωρημένα στο e-radio.gr. Όμως και πάλι κάτι δεν ήταν σωστό. Γιατί να έχω μόνο εγώ αυτή τη δυνατότητα ενώ είναι σίγουρο ότι πολλοί άλλοι θα είχαν βρεθεί στην ίδια θέση και ίσως ήλπιζαν για κάτι αντίστοιχο;
Η δημοσιοποίηση του playlist θα έλυνε το πρόβλημα μόνο προσωρινά, καθώς πολλά links μπορεί να άλλαζαν ή να έπαυαν να λειτουργούν γεγονός που θα καθιστούσε τη λίστα απαρχαιωμένη και αναξιόπιστη (και θα απαιτούσε από εμένα συνέχεια να την ενημερώνω, αναγκάζοντας πολλούς χρήστες να εξαρτώνται από ένα και μόνο χρήστη).
Για το λόγο αυτό, αποφάσισα κι ανέπτυξα ένα πρόγραμμα σε Java (eradioParser), το οποίο μπορεί να χρησιμοποιήσει ο καθένας κατα το δοκούν, ώστε να εξάγει κάποιο playlist από το e-radio.gr. Το πρόγραμμα δίνει τη δυνατότητα στο χρήστη να επιλέξει αν θέλει να εξάγει όλους τους σταθμούς που είναι καταχωρημένοι στο e-radio.gr ή να εξάγει κάποια κατηγορία σταθμών με βάση την τοποθεσία ή το είδος της μουσικής στο οποίο αυτοί είναι ενταγμένοι, σύμφωνα πάντα με την αρχική κατηγοριοποίηση του ιστοτόπου.
Για να δημιουργήσει κάποιος ένα playlist αρκούν τα εξής απλά βήματα:
- Κατεβάζει το eradioParser
v1.0v1.1 από εδώ. - Τρέχει το πρόγραμμα: ανοίγοντας ένα terminal (κοσνόλα) πληκτρολογούμε (αφού πρώτα πλοηγηθούμε στο directory που βρίσκεται το πρόγραμμα):
$java -jar eradioParser-1.1.jar [χωρίς το δολλάριο $ φυσικά 🙂 ]. Επιλέγουμε από το μενού αυτό που θέλουμε και περιμένουμε το τέλος της εκτέλεσης του προγράμματος, όπου δημιουργείται το αρχείo playlist.xspf, που είναι και το ζητούμενο. Αναπαράγουμε με vlc player.
XSPF is the XML format for sharing playlists.
- It is free and open — No proprietary lock-in.
- It is portable — You should be able to send a playlist to your friend and have it work.
- It is well-engineered — Most playlist formats get the easy things wrong.
- Unlike M3U
- XSPF is XML.
- Unlike SMIL
- XSPF is simple.
- Unlike ASX
- XSPF is open.
Αν κάποιος το επιθυμεί, μπορεί χρησιμοποιώντας έναν editor, να ανοίξει το .xspf playlist και να προσθέσει σε αυτό άλλους αγαπημένους του σταθμούς που θα ήθελε να βρίσκονται στην ίδια λίστα. Πως μπορεί να γίνει αυτό;
Η δομή του playlist, που θα δούμε σε έναν editor και μας ενδιαφέρει είναι η εξής:
<track>
<location>http://radioStation.com</location>
<title>Radio title</title>
</track>
Το παραπάνω block κώδικα επαναλαμβάνεται. Πιο αναλυτικά:
➾ To πεδίο <track> είναι αυτό που δηλώνει ένα νέα πεδίο καταχώρησης (δηλαδή υποδεικνύει ότι αρχίζει μια καινούργια καταχώρηση).
➾ Το πεδίο <location> καταχωρεί το url ή το path της καταχώρησης (εδώ το url του σταθμού)
➾ Το πεδίο <title> τέλος καταχωρεί τον τίτλο.
Επομένως, αν ο σταθμός που θέλουμε να προσθέσουμε λέγεται Magic και το url του είναι: http://MagicFm.com, τότε ο κώδικας που προσθέτουμε είναι:
<track>
<location>http://MagicFm.com</location>
<title>Magic</title>
</track>
Τέλος, το πρόγαμμα είναι ελεύθερο λογισμικό (free software), δηλαδή μπορεί ο καθένας να το χρησιμοποιήσει και να το αναδιανείμει ελεύθερα. Για όσους ενδιαφέρονται υπαρχει και ολόκληρος ο πηγαίος κώδικας του προγράμματος οι βιβλιοθήκες κ.τ.λ. (όπως απαιτείται) σε repository που έχω δημιουργήσει στο github το οποίο μπορεί να κάνει fork, preview ή follow και να παρακολουθεί το development.
Παραθέτω και πάλι τα χρήσιμα links:
eradioParser v1.0, οδηγίες
*UPDATE*
Αυτό που ξέχασα είναι ότι το πρόγραμμα υποστηρίζει και command line arguments (ορίσματα γραμμής εντολών). Μπορείτε να το τρέξετε είτε εισάγοντας μια σειρά από links σαν ορίσματα, τα οποία διαχωριζονται με κενό, είτε το path ενός αρχείου στο δίσκο το οποίο θα περιέχει τα links που μας ενδιαφέρουν. Τα links στο αρχείο πρέπει να είναι ένα ανά σειρά. Δηλαδή, οι δυνατοί τρόποι για να τρέξετε το πρόγραμμα είναι:
$java -jar eradioParser-1.1.jar [χωρίς ορίσματα]
$java -jar eradioParser-1.1.jar link1 link2 link3 link4 [με ένα ή περισσότερα Url ορίσματα]
$java -jar eradioParser-1.1.jar PathOfFile [με όρισμα το path ενός αρχείου]
Το path του αρχείου πρέπει να έχει τη μορφή π.χ.:
C:/Users/Me/myfile.txt [σε Windwos]
/home/User/myFile.txt [σε GNU/LINUX και Mac]
Τα links πρέπει να είναι κάποιας κατηγορίας μουσικού είδους ή τοποθεσίας ή και συνδυασμός αυτών (τα οποία τα βρίσκετε αν πάτε στο e-radio.gr και κάνετε δεξί κλικ στην επιλογή του μενού που σας ενδιαφέρει π.χ. Περιοχές–>Αθήνα και πατήσετε “copy link address”): π.χ.
$java -jar eradioParser-1.1.jar http://www.e-radio.gr/categories/rock.asp http://www.e-radio.gr/locations/crete.asp
όπου το πρώτο link αφορά τους σταθμούς που εντάσσονται στην κατηγορία Rock, ενώ το δεύτερο τους σταθμούς που βρίσκονται στην τοποθεσία Κρήτη. Κατ’αυτόν τον τρόπο μπορούμε να παράγουμε συνδυασμένα playlist.
My site Article Home covers a lot of topics about SEO and I thought we could greatly benefit from each other. Awesome posts by the way!