Check-in [fac6bc374a]
Overview
| Comment: | streema: fix url regex (now alphanumeric titles) and urn_resolve patterns for new player layout |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
fac6bc374af603a232416444dced8fc2 |
| User & Date: | mario on 2019-06-14 18:25:28 |
| Other Links: | manifest | tags |
Context
|
2019-07-15
| ||
| 14:38 | vTuner: minor fix from stream_update regex check-in: 4419f22d5d user: mario tags: trunk | |
|
2019-06-14
| ||
| 18:25 | streema: fix url regex (now alphanumeric titles) and urn_resolve patterns for new player layout check-in: fac6bc374a user: mario tags: trunk | |
|
2019-03-24
| ||
| 11:50 |
Switched radionet plugin to resolve_urn() and speedier -grep loop.
check-in: 9688154862 user: mario tags: trunk
| |
Changes
Modified contrib/streema.py from [46c666d039] to [147f9871b4].
1 2 3 4 5 | # api: streamtuner2 # title: Streema # description: Directory and app for over 70.000 stations # type: channel # category: radio | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # api: streamtuner2 # title: Streema # description: Directory and app for over 70.000 stations # type: channel # category: radio # version: 0.4 # url: http://www.streema.com/ # png: # iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABF0lEQVR42oWTMWsCURCE/Y/Bxh+QLrUIloKdELCxTOOBRSSgpZVYhCAWCtcEETGQJmCTkG7k47HcereeA4vnu32zszt7jceRFMXDQGoN # pd40RXci9d+kpxep+VzkNaLLXBzMpe1R+vu/jq8fabxKOSEBL6YfqgVEnSwgsMoen9+JcJlL5990xv9QAYf5qbhMC/RrQf/trLgctoA8A/0yPCO38PkVApPpAdFsndyoJeDlaKFarPZ3FJj3i12qHIEh # sichgSfi18j8bHDmpgvlQfFMNe/O5hAoMOnMoJMVRNjHCnsFbGKFgCl7IJPloZoHLrEPlRYi+8ogh724uUiv72ny0QeEQl+5QmDDIomeLVhdzuzzLrt1AQVnVKF/yji7AAAAAElFTkSuQmCC # config: - # priority: optional # extraction-method: regex, action-handler # # Streema lists over 70000 radio stations. Requires a double lookup # however, as stream addresses are embedded in the web player only. # Channel only polls one page of results, skips external stream pages. # # Currently playing field is quite spotty. No homepages are listed. # The category map is prepared here, because it's quite slow to # update. Region/city categories are left unused. # # The server search function is implemented however. # import re, traceback import ahttp from config import * from channels import * # streema.com class streema (ChannelPlugin): |
| ︙ | ︙ | |||
67 68 69 70 71 72 73 |
else:
return
# split into blocks
for html in re.split('<div[^>]+?(?:data-role="player-popup"|class="item")', html):
# not very efficient
| | > > > | > > > > > | < | > > | 67 68 69 70 71 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 115 116 117 118 119 120 |
else:
return
# split into blocks
for html in re.split('<div[^>]+?(?:data-role="player-popup"|class="item")', html):
# not very efficient
url = re.findall('data-url="/radios/play/([\w_.-]+)"', html) # skips external-stream-tab http:// entries
homepage = re.findall('data-profile-url="/radios/(.+?)"', html)
title = re.findall('title="Play (.+?)"', html)
img = re.findall('<img\s*src="(.+?)"', html)
playing = re.findall('<span class="now-playing-text">(.*?)</span>', html, re.S)
genre = re.findall('<p class="genre">(.*?)</p>', html, re.S)
listeners = re.findall('<p>(\d+) Listen\w*s</p>', html)
# catch absent fields
try:
r.append(dict(
url = "urn:streema:" + url[0],
homepage = self.base + "/" + homepage[0],
title = title[0],
img = img[0],
img_resize = 24,
playing = playing[0],
genre = unhtml(genre[0]),
listeners = to_int(listeners[0])
))
except:
#log.E(e)
#traceback.print_exc()
pass #some field missing
# done
return r
# load page and get first download url (there's four, but usually identical)
def resolve_urn(self, row):
if row.get("url", "-").find("urn:streema:") != 0:
return
id = row["url"][12:]
html = ahttp.get("http://streema.com/radios/play/%s" % id)
patterns = [
'<ul class="stream-downloads">.+?<a href="(.+?)"',
"<source src='(.+?)'",
'stream:\s+\{.+?\s+url:\s+"(.+?)"'
]
for rx in patterns:
url = re.findall(rx, html, re.S)
if url:
row["url"] = url[0]
return url[0]
return
|