Apr 302012
 
 April 30, 2012  Posted by at 06:38 Programming Tagged with: , ,  Add comments

Το χρονικό:

Ήταν ένα ζεστό φθινοπωρινό απόγευμα, ο ήλιος είχε μόλις σβήσει στη θάλασσα κι εγώ ύστερα από πολλές ώρες απόλαυσης στιγμών ξεγνοιασιάς κι ευχαρίστησης επέστερφα σπίτι ακούγοντας 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 αρκούν τα εξής απλά βήματα:

  1. Κατεβάζει το eradioParser v1.0 v1.1 από εδώ.
  2. Τρέχει το πρόγραμμα: ανοίγοντας ένα terminal (κοσνόλα) πληκτρολογούμε (αφού πρώτα πλοηγηθούμε στο directory που βρίσκεται το πρόγραμμα):
    $java -jar eradioParser-1.1.jar [χωρίς το δολλάριο $ φυσικά 🙂 ]. Επιλέγουμε από το μενού αυτό που θέλουμε και περιμένουμε το τέλος της εκτέλεσης του προγράμματος, όπου δημιουργείται το αρχείo playlist.xspf, που είναι και το ζητούμενο. Αναπαράγουμε με vlc player.
Οδηγίες βήμα προς βήμα για όσους δεν είναι εξοικειωμένοι με την κονσόλα υπάρχουν εδώ.
Το πρόγραμμα τρέχει σε κάθε λειτουργικό σύστημα, ενώ το playlist που παράγει είναι portable (xspf). Γιατί XSPF;

 

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.

  One Response to “e-radio playlist generator!”

  1. 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!

     

 Leave a Reply

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>