Check-in [01c7c85d47]
Overview
Comment: | radio-browser.info: support for submitting stations |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
01c7c85d478032f412b58bbe95f0a952 |
User & Date: | mario on 2016-10-31 14:31:30 |
Other Links: | manifest | tags |
Context
2016-10-31
| ||
14:32 | Update specbuttons help pages. check-in: ed73b89bba user: mario tags: trunk | |
14:31 | radio-browser.info: support for submitting stations check-in: 01c7c85d47 user: mario tags: trunk | |
2016-10-30
| ||
13:13 | bookmarks: save origin channel in `extra` field. (It's mostly unused, except for the Jamendo and timer plugins.) check-in: 7bdd44a163 user: mario tags: trunk | |
Changes
Modified channels/radiobrowser.py from [e54a90dfb7] to [0e7f4074c1].
1 2 3 4 | # encoding: UTF-8 # api: streamtuner2 # title: RadioBrowser # description: Community collection of stations; votes, clicks, homepage links. | | | 1 2 3 4 5 6 7 8 9 10 11 12 | # encoding: UTF-8 # api: streamtuner2 # title: RadioBrowser # description: Community collection of stations; votes, clicks, homepage links. # version: 0.3 # type: channel # url: http://www.radio-browser.info/ # category: radio # priority: optional # config: # { type=select, name=radiobrowser_cat, value=tags, select="tags|countries|languages", description=Which category types to list. } # documentation: http://www.radio-browser.info/#ui-tabs-7 |
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # Clementine / Kodi / RadioDroid / etc. import re import json from config import * from channels import * import ahttp # API endpoints: # http://www.radio-browser.info/webservice/json/countries # http://www.radio-browser.info/webservice/json/languages # http://www.radio-browser.info/webservice/json/tags | > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # Clementine / Kodi / RadioDroid / etc. import re import json from config import * from channels import * from uikit import uikit import ahttp # API endpoints: # http://www.radio-browser.info/webservice/json/countries # http://www.radio-browser.info/webservice/json/languages # http://www.radio-browser.info/webservice/json/tags |
︙ | ︙ | |||
67 68 69 70 71 72 73 | has_search = True listformat = "pls" titles = dict(listeners="Votes+", bitrate="Votes-", playing="Country") base = "http://www.radio-browser.info/webservice/json/" categories = [] pricat = ("topvote", "topclick") catmap = { "tags": "bytag", "countries": "bycountry", "languages": "bylanguage" } | | > > > > > | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | has_search = True listformat = "pls" titles = dict(listeners="Votes+", bitrate="Votes-", playing="Country") base = "http://www.radio-browser.info/webservice/json/" categories = [] pricat = ("topvote", "topclick") catmap = { "tags": "bytag", "countries": "bycountry", "languages": "bylanguage" } # hook menu def __init__(self, parent): ChannelPlugin.__init__(self, parent) if parent: uikit.add_menu([parent.streammenu, parent.streamactions], "Share in Radio-Browser", self.submit, insert=5) # votes, and tags, no countries or languages def update_categories(self): self.categories = list(self.pricat) for sub in [conf.radiobrowser_cat]: cats = [] for entry in self.api(sub): |
︙ | ︙ | |||
112 113 114 115 116 117 118 | listeners = int(e["votes"]), bitrate = - int(e["negativevotes"]), )) return r # fetch multiple pages | | | > > > > > > > > > > > > > > > > > > > > > > > > > | 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | listeners = int(e["votes"]), bitrate = - int(e["negativevotes"]), )) return r # fetch multiple pages def api(self, method, params={}, post=False): j = ahttp.get(self.base + method, params, post=post) try: return json.loads(j, strict=False) # some entries contain invalid character encodings except: return [] # Add radio station to RBI def submit(self, *w): cn = self.parent.channel() row = cn.row() # convert row from channel data = dict( name = row["title"], url = row["url"], homepage = row["homepage"], #favicon = self.parent.favicon.html_link_icon(row["url"]), # no longer available as module tags = row["genre"].replace(" ", ","), ) # map extra fields for _from,_val,_to in [("playing","location","country")]: #country Austria The name of the country where the radio station is located #state Vienna The name of the part of the country where the station is located #language English The main language which is used in spoken text parts of the radio station. if _from in cn.titles and cn.titles[_from].lower() == _val: data[_to] = _from # API submit j = self.api("add", data, post=1) log.SUBMIT_RBI(j) if j and "ok" in j and j["ok"] == "true" and "id" in j: self.parent.status("Submitted successfully to Radio-Browser.info, new station id #%s." % j["id"], timeout=15) |