Check-in [cf32efcb61]
Overview
Comment: | Implement state: mapping (though no idea what 0-2 mean), and make default API key internally predefined again. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
cf32efcb61007c07c61b099d45819315 |
User & Date: | mario on 2015-04-30 20:54:10 |
Other Links: | manifest | tags |
Context
2015-04-30
| ||
21:21 | A little more comments on playlist_export usage. check-in: bf7e0f1bf3 user: mario tags: trunk | |
20:54 | Implement state: mapping (though no idea what 0-2 mean), and make default API key internally predefined again. check-in: cf32efcb61 user: mario tags: trunk | |
20:37 | Add delicast favicon. check-in: 046dd8a5da user: mario tags: trunk | |
Changes
Modified channels/dirble.py from [0aabd4d53a] to [b1c153b5bc].
1 2 3 4 5 6 7 8 9 | # encoding: UTF-8 # api: streamtuner2 # title: Dirble # description: Song history tracker for Internet radio stations. # url: http://dirble.com/ # version: 2.0 # type: channel # category: radio # config: | | < < < < < < < < > > > | > > > > > > > > > > > | 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | # encoding: UTF-8 # api: streamtuner2 # title: Dirble # description: Song history tracker for Internet radio stations. # url: http://dirble.com/ # version: 2.0 # type: channel # category: radio # config: # { name: dirble_api_key, value: "", type: text, description: Alternative API access key. } # png: # iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAA3NCSVQICAjb4U/gAAACP0lE # QVQokVVSO0+UURA9M/d+jyWbBVcQFSQhPqJSYBRFA5pVoFGURApjYYWtvYUNP8FKOwsttDFq # jMTEWEiDD0wETNSIxJC46yqEsCz7ve4di28hOO2cMzNnzqH+azcBACAiAgQg1EsAQESwCYBA # pwCxNowjI1v7YGLH0Y5iSQFhJEprYjZxtG13+/lCb2dOWxBBABiTrJSLkx8+z/xa0yRutml4 # sC9X+qqJyFqTzTcPDfTup2p5NSTFSintOFmvZ7iv687Dl8/ezufaGgcHT2enKjpdbxMbRcnr # x09uT36JfJ9FWLtnCoWxkRM3Ris/F//Mlpce3LtvSsW6BhAxs5VgtVqtxUaJQCqPnr4ItXfr # Uve5fVM/PpbZzXgNniYCEaUs1spxdKIdBUvEsr4282nu29nuowdbmov2ytXRxukJBhGwwRCI # 1F9pRbSjlytheTnY3t6iHCcMo9BYxtai1AymjSlRbII4YUcRAQQiMKWO0Vbahk2An3H9jJvU # IhEQCKD/TiJiZsXEzMxMYSy78rnOVvf34lISJ8R1pwGqpyCJkvUgCiyziFjJ5Fv7Tx5r07WJ # udJajRVDAI30TUQilG1qPry3I/Y9BThubmigb+R4x8L0m1fz5Ti3h0QE0ClcQCA+dflCz0VD # RKwUE5mgOvtu8u7z9wsVsyPPrBxfayqMjVtrMrmmI4f27swqkVS+GGMqy39nvy+W1uGxKL+h # u+uAt1KkwvVxAGJsEEWxEWzGm4iV8l1HM9K0BmEkrP8BlhoAUfmOxecAAAAASUVORK5CYII= # priority: optional # documentation: http://dirble.com/developer/api # # # Server responses take a few seconds, and JSON # decoding is surprisingly slow. import json from config import * from channels import * import ahttp # Dirble # # Hmm ok, the new v2 API isn't so bad after all. # It actually contains streaming urls, and even # station homepages now. # # ยท No idea what status: or timedout: mean, # just mapped to `deleted` and `status` # ยท Stream alternatives aren't yet sorted. # ยท Leave favicons to regular behaviour, # station banners are not accessible per CDN. # class dirble (ChannelPlugin): # control flags has_search = False listformat = "srv" titles = dict(listeners=False, playing="Location") base = "http://api.dirble.com/v2/{}" key = "a0bdd7b8efc2f5d1ebdf1728b65a07ece4c73de5" # Retrieve cat list and map def update_categories(self): cats = [] for row in self.api("categories/tree"): print row |
︙ | ︙ | |||
89 90 91 92 93 94 95 | title = r["name"], playing = "{country} {description}".format(**r), homepage = r["website"], url = s["stream"], format = s["content_type"], bitrate = s["bitrate"], # img = r["image"]["image"]["thumb"]["url"], # CDN HTTPS trip up requests.get | | > > | > > | | 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 121 122 123 124 125 126 127 | title = r["name"], playing = "{country} {description}".format(**r), homepage = r["website"], url = s["stream"], format = s["content_type"], bitrate = s["bitrate"], # img = r["image"]["image"]["thumb"]["url"], # CDN HTTPS trip up requests.get state = self.state_map[int(s["status"])] if s["status"] in [0,1,2] else "", deleted = s["timedout"], ) state_map = ["gtk-media-pause", "gtk-media-next", "gtk-media-rewind"] # Patch API url together, send request, decode JSON list def api(self, method, **params): params["token"] = conf.dirble_api_key or self.key try: # HTTP request and JSON decoding take a while r = ahttp.get(self.base.format(method), params) r = json.loads(r) if isinstance(r, dict) and "error" in r: log.ERR(r["error"]) raise Exception # cut down stream list if len(r) > int(conf.max_streams): del r[int(conf.max_streams):] except Exception as e: log.ERR("Dirble API retrieval failure:", e) r = [] return r |