Check-in [aaf273595a]
Overview
Comment: | Fix radiolist.net current page layout extraction (some countries empty now, just webplayers for some pages) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
aaf273595a3d3b9ce92ae705a3c49943 |
User & Date: | mario on 2018-01-15 19:43:47 |
Other Links: | manifest | tags |
Context
2018-01-15
| ||
20:05 | Update delicast plugin for new q: url scheme check-in: 33053d07d0 user: mario tags: trunk | |
19:43 | Fix radiolist.net current page layout extraction (some countries empty now, just webplayers for some pages) check-in: aaf273595a user: mario tags: trunk | |
2017-11-17
| ||
13:20 | Change default streamripper user agent to 'iTunes 12.5/Gecko/SR' check-in: e4d747b68a user: mario tags: trunk | |
Changes
Modified contrib/radiolist.py from [b9c7e173ba] to [bca1fb8450].
1 2 3 4 5 | # encoding: UTF-8 # api: streamtuner2 # title: radiolist.net # description: Station list by continent+country # url: http://radiolist.net/ | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | # encoding: UTF-8 # api: streamtuner2 # title: radiolist.net # description: Station list by continent+country # url: http://radiolist.net/ # version: 0.4 # type: channel # category: radio # priority: extra # png: # iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAFVBMVEVKb61qibyDnMegs9S6yeDV4O37/vyx66abAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMB # AJqcGAAAAAd0SU1FB+ECDBAgLJqgZW4AAADoSURBVBjTNdBNj4MgEAbgqdLeZdo9C5NwFmo5Y7Wedauc1y/+/09YdLskkDwJmZl3IOxnON4A8frQhdc/7mG2cv3gx29X # rdUfZuVHQ3JHEzZ7GSuNXxFV/FYYwryO6MOiZqEdnQPUC/fsXZaMuxa6MFfOVYN7kIWpHZClyJGLFjbbC617KaRUEJ4r4fU7IqNYrW5f2kgU5gZInG6MZ086eejcyIvO |
︙ | ︙ | |||
72 73 74 75 76 77 78 | sub.append(t) self.catmap[t] = p c.append(sorted(sub)) self.categories = c # extract stream urls def update_streams(self, cat): | | | | | > > > | | | 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]] |