Δημοσιεύτηκε: 08 Ιούλ 2011, 01:21
από simosx
Έχω αυτό το patch όπου δεν αναλύει τους συνδέσμους .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.