Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ ⎇ branch:  streamtuner2


Check-in [059815af7b]

Overview
Comment:Fix for radionet station/player page change `"streamUrl":` to `"streams":[{"url":`
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 059815af7b3d7735a7b5801630e66920b2642fdf
User & Date: mario on 2020-05-11 16:34:07
Other Links: manifest | tags
Context
2020-05-11
16:35
bump version for radionet plugin check-in: 95e3d5fa0a user: mario tags: trunk
16:34
Fix for radionet station/player page change `"streamUrl":` to `"streams":[{"url":` check-in: 059815af7b user: mario tags: trunk
16:24
Add duplicate filter for Xiph. check-in: 08803f2b56 user: mario tags: trunk
Changes

Modified contrib/radionet.py from [edd29444df] to [bb2c46f76a].

119
120
121
122
123
124
125
126

127
128
129
130
131
132
133
134
135
136
137
138
139
119
120
121
122
123
124
125

126
127
128
129
130
131
132
133
134
135
136
137
138
139







-
+













        return r

    # api search is gone, now requires to fetch streamUrl from per-radio homepage
    def resolve_urn(self, row):
        if row.get("url", "-").find("urn:radionet:") != 0:
            return
        html = ahttp.get(row["homepage"])
        stream = re.findall('"streamUrl":\s*"([^"]+)"', html, re.S)
        stream = re.findall('"stream[s:[{"\s]+url"[\s:]+"([^"]+)"', html, re.S|re.I)
        if stream:
            row["url"] = stream[0]
            return row
    

    # extract JavaScript key from any HTML blob (needed for station query)
    def set_key(self, html):
        ls = re.findall("""apiKey: '(\w+)'""", html)
        if ls:
            self.apiKey = ls[0]