Playlist με τους ραδιοφωνικούς σταθμούς του e-radio.gr με python.

Εδώ και καιρό έχω στο μυαλό μου να γράχω ένα script για να παίζω ραδιόφωνο (www.e-radio.gr) μέσω του XBMC στο htpc. Το πρώτο βήμα είναι προφανώς μια λίστα με τις διευθύνσεις των ραδιοφωνικών streams. Η ιδέα πάρθηκε από το giorgos logiotatidis’ blog, όπου έχει ένα παρόμοιο script που όμως πλέον δε δουλεύει προφανώς επειδή το e-radio.gr έχει αλλάξει κατά πολύ το κώδικα της σελίδας του… Ορίστε λοιπόν ένα καινούργιο, το οποίο δημιουργεί αυτόματα μια playlist (eradio.pls) για το totem, vlc κ.α

#!/usr/bin/env python
'''
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    Copyright (C) 2010 Nikiforakis Manos (nikiforakis.m@gmail.com)
'''

import re, urllib

HTML = urllib.urlopen("http://www.e-radio.gr").readlines()
sstring = re.compile("(?<=logos\/gr\/promo\/)([A-Za-z0-9-]+)")
k = 1
pls=[]
pls.append("[Playlist]\n")
pls.append("NumberOfEntries=...")
print 'Wait while fetching www.e-radio.gr and adding radio stations in playlist...'
for line in HTML:
	radios = sstring.findall(line)
	#print radios
	i = 0
	while i+1 < len(radios):
		stationurl= "http://eradio.gr/asx/%s.asx" %(radios[i])
		a=urllib.urlopen(stationurl).read()
		checkstation=re.compile('Server Error')
		checkresult = checkstation.findall(a)
		if len(checkresult)>0:
		#	print checkresult[0], stationurl;
			pass
		else:
			#Get the TITLE
			title_re=re.compile('(<TITLE>)(.*?)(</TITLE>)')
			title=title_re.findall(a)
			print 'Added %s' %(title[0][1])
			#Get the URI
			mms_re=re.compile('''("[http|mms].*?")''')
			mms=mms_re.findall(a)
			mms_uri= mms[1].strip('''"''') # 0 for http,  1 for mms
			#print "File%d=%s" %(k,mms_uri)
			pls.append("File%d=%s\n" %(k,mms_uri))
			k += 1
		i += 1

pls[1]="NumberOfEntries=%d\n" %(k-1)

playlist_file=open('eradio.pls', 'w')

for station in pls:
	playlist_file.write(station)

playlist_file.close()
*Είμαι πολυ αρχαριος στις regular expressions οπότε ίσως να γίνεται και ευκολότερα / εξυπνότερα…!
** Στο κώδικα της κύριας σελίδας του http://www.e-radio.gr δεν υπάρχουν οι διευθύνσεις των streams, αλλα ψάχνοντάς το λίγο βρήκα ότι τα ονόματα που χρησιμοποιούν για τα λογότυπα των σταθμών, είναι ίδια με τμήμα της διεύθυνσης του εκάστοτε stream. Υπάρχουν και εξαιρέσεις, και για αυτό το λόγο ο παραπάνω κώδικας δοκιμάζει τις διευθύνσεις που φτιάχνει και εμφανίζει μόνο τις σωστές. Με λίγα λόγια κάποιοι σταθμοί λείπουν. Παρόλα αυτά είναι λίγοι. Το script μου βγάζει μια λίστα με 168 σταθμούς.
***Καθημερινά κάποιοι σταθμοί έχουν μικροπροβλήματα, οπότε μπορείτε να εκτελείτε συχνά το script ώστε οι διευθύνσεις των streams να είναι λειτουργικές.

4 Responses to Playlist με τους ραδιοφωνικούς σταθμούς του e-radio.gr με python.

  1. Ο/Η Giorgos λέει:

    Ωραίος! Πάντα ήθελα να το ξαναφτιάξω αλλά με νικούσε η βαρεμάρα😉 Ενδιαφέρον το blog, συνέχισε έτσι!

    • Ο/Η emnik λέει:

      Ευχαριστώ Γιώργο, αν δεν ήταν το δικό σου script δε θα είχα ασχοληθεί. Το είδα, το κατάλαβα και το χρησιμοποίησα ως βάση. Μου έδειξες λοιπόν το δρόμο στην εξαγωγή πληροφοριών από μια σελίδα😉 !

  2. Ο/Η myle λέει:

    Μπράβο! Πολύ ωραία προσπάθεια!

  3. Ο/Η Giorgos λέει:

    Μάνο έκανα μερικές αλλαγές στην δουλειά σου για να συμπεριλάβουμε περισσότερους σταθμούς και να παρουσιάζονται αλφαβητικά. Μπορείς να βρεις το ανανεωμένο script στο site μου http://www.sealabs.net/seadog/2010/01/playlist-%ce%b3%ce%b9%ce%b1-%cf%84%ce%bf-eradio-gr-version-4/

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s

Αρέσει σε %d bloggers: