72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
sub.append(t)
self.catmap[t] = p
c.append(sorted(sub))
self.categories = c
# extract stream urls
def update_streams(self, cat):
rx_title = re.compile('<a href="([^">]+)" target="_blank">(.+?)</a>', re.I)
rx_urls = re.compile('<a href="([^">]+)">(\d+)(?: Kbps)?</a>', re.I)
rx_genre = re.compile('<td class="cell">([^<]+)</td>', re.I)
entries = []
html = ahttp.get("http://www.radiolist.net/" + self.catmap[cat])
for block in re.findall("<tr>(.+?)</tr>", html, re.S):
ut = re.findall(rx_title, block) # homepage+title
uu = re.findall(rx_urls, block) # urls+bitrates
lg = re.findall(rx_genre, block) # location+genre
#print ut, uu, lg
if ut and uu and lg:
url, br = self.best_url(uu)
entries.append(dict(
homepage = ut[0][0],
title = unhtml(ut[0][1]),
url = url,
bitrate = br,
format = self.mime_guess(url, "audio/mpeg"),
listformat = self.list_guess(url),
playing = lg[0],
genre = lg[1]
))
# done
[log.DATA(e) for e in entries]
return entries
# pick highest rated URL from [(url,bitrate),…] tuples
def best_url(self, urls):
r = dict([(u, to_int(b)) for u,b in urls]) # {url: bitrate, …}
best = sorted(r, key=r.get, reverse=True)
return best[0], r[best[0]]
|
|
|
|
|
>
>
>
|
|
|
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
sub.append(t)
self.catmap[t] = p
c.append(sorted(sub))
self.categories = c
# extract stream urls
def update_streams(self, cat):
rx_title = re.compile('<a\s+href="([^">]+)"[^>]+target="_blank"[^>]*>(.+?)</a>', re.I)
rx_urls = re.compile('<a href="([^">]+)">(\d+)(?: Kbps)*</a>', re.I)
rx_genre = re.compile('<td[^>]+>(\w*[^<>]*)</td>\s*<td[^>]+>(\w+[^<>]+)</td>\s*$', re.I)
entries = []
html = ahttp.get("http://radiolist.net/" + self.catmap[cat])
log.DATA(html)
for block in re.findall("<tr>(.+?)</tr>", html, re.S):
log.BLOCK(block)
ut = re.findall(rx_title, block) # homepage+title
uu = re.findall(rx_urls, block) # urls+bitrates
lg = re.findall(rx_genre, block) # location+genre
#print ut, uu, lg
if ut and uu and lg:
log.D(ut,uu,lg)
url, br = self.best_url(uu)
entries.append(dict(
homepage = ut[0][0],
title = unhtml(ut[0][1]),
url = url,
bitrate = br,
format = self.mime_guess(url, "audio/mpeg"),
listformat = self.list_guess(url),
playing = lg[0][0],
genre = lg[0][1]
))
# done
[log.DATA(e) for e in entries]
return entries
# pick highest rated URL from [(url,bitrate),…] tuples
def best_url(self, urls):
r = dict([(u, to_int(b)) for u,b in urls]) # {url: bitrate, …}
best = sorted(r, key=r.get, reverse=True)
return best[0], r[best[0]]
|