Δημοσιεύτηκε: 08 Ιούλ 2011, 01:21
Έχω αυτό το patch όπου δεν αναλύει τους συνδέσμους .asx ακόμα και απλά τους χρησιμοποιεί.
Όπως βλέπω, για το .PLS μπορούμε να βάλουμε ένα URL μόνο, οπότε εδώ έχει νόημα να βάλουμε το .asx.
Ακόμα, είδα ότι σε URL δίνουν επιλογή για http://... και mms://..., το mms://... απλά δε λειτουργεί.
Στο patch αυτό χρησιμοποιούμε το Spider και για την ανάλυση των .asx.
Όπως βλέπω, για το .PLS μπορούμε να βάλουμε ένα URL μόνο, οπότε εδώ έχει νόημα να βάλουμε το .asx.
Ακόμα, είδα ότι σε URL δίνουν επιλογή για http://... και mms://..., το mms://... απλά δε λειτουργεί.
- Κώδικας: Επιλογή όλων
diff --git a/playlist-generator.py b/playlist-generator.py
index a46dea1..27b0715 100755
--- a/playlist-generator.py
+++ b/playlist-generator.py
@@ -35,6 +35,7 @@ class Spider(HTMLParser):
HTMLParser.__init__(self)
self.src = ""
+ self.urls = []
req = urllib.urlopen(url)
self.feed(req.read())
@@ -44,6 +45,13 @@ class Spider(HTMLParser):
for attr in attrs:
if attr[0] == "src" and attr[1].startswith("playerX"):
self.src = attr[1]
+ elif tag == "ref":
+ for attr in attrs:
+ if attr[0] == 'href':
+ self.urls.append(attr[1])
+ else:
+ print("Found strange ASX:", attr)
+
class PlaylistGenerator(object):
def __init__(self):
@@ -79,9 +87,19 @@ class PlaylistGenerator(object):
self.stations[match.groupdict()['id']] = match.groupdict()
def print_stations(self):
- for sid in self.stations.keys():
- print(u"Τίτλος : {0}\nΠόλη : {1}\nId : {2}\nLogo : {3}\n".format(
- self.stations[sid]['title'], self.stations[sid]['city'], sid, self.stations[sid]['logo']))
+ for (index, sid) in enumerate(self.stations.keys()):
+ print(u"Τίτλος : {0}\nΠόλη : {1}\nId : {2}\nLogo : {3}\nURL : {4}\n".format(
+ self.stations[sid]['title'], self.stations[sid]['city'], sid, self.stations[sid]['logo'], self.stations[sid]['url']))
+ if index >= TESTCOUNT:
+ break
+
+ def print_urls(self):
+ for (index, sid) in enumerate(self.stations.keys()):
+ print("Trying out", self.stations[sid]['url'])
+ spider = Spider(self.stations[sid]['url'])
+ print(sid, spider.urls)
+ if index >= TESTCOUNT:
+ break
def get_radiolist(self):
f = urllib.urlopen(self.url_rlist)
@@ -175,7 +193,8 @@ class PlaylistGenerator(object):
if __name__ == '__main__':
playlist = PlaylistGenerator()
playlist.get_radiostation_files()
- #playlist.print_stations()
+ playlist.print_urls()
+ playlist.print_stations()
playlist.make_pls()
print(u'Created .PLS playlist file, playlist.pls')
playlist.make_xspf()
Στο patch αυτό χρησιμοποιούμε το Spider και για την ανάλυση των .asx.