Index: channels/dirble.py ================================================================== --- channels/dirble.py +++ channels/dirble.py @@ -1,11 +1,11 @@ # encoding: UTF-8 # api: streamtuner2 # title: Dirble # description: Song history tracker for Internet radio stations. # url: http://dirble.com/ -# version: 2.3 +# version: 2.4 # type: channel # category: radio # config: # { name: dirble_api_key, value: "", type: text, description: Alternative API access key., hidden: 1 } # png: @@ -58,11 +58,11 @@ # station banners are not accessible per CDN. # class dirble (ChannelPlugin): # control flags - has_search = False + has_search = True listformat = "srv" titles = dict(playing="Location") base = "http://api.dirble.com/v2/{}" key = "a0bdd7b8efc2f5d1ebdf1728b65a07ece4c73de5" @@ -82,15 +82,15 @@ # Fetch entries def update_streams(self, cat, search=None): self.progress(1) if search: - r = self.api("search", query=search, page=0, pages=1) + r = self.api("search", query=search, page=0, pages=1, post=1) elif cat in ("Popular", "Recent"): - r = self.api("stations/{}".format(cat.lower()), pages=15) + r = self.api("stations/{}".format(cat.lower()), pages=5) else: - r = self.api("category/{}/stations".format(self.catmap.get(cat, 0)), pages=10) + r = self.api("category/{}/stations".format(self.catmap.get(cat, 0)), pages=5) return [self.unpack(row) for row in r] # Extract rows def unpack(self, r): @@ -155,11 +155,11 @@ # Weighting bitrate and audio format for alternative stream URLs format_q = {"?":0.75, "audio/mpeg":1.0, "audio/aac":1.25, "audio/aacp":1.35, "audio/ogg":1.50} # Patch API url together, send request, decode JSON list - def api(self, method, pages=1, **params): + def api(self, method, pages=1, post=0, **params): # pagination parameters if pages > 1: params["page"] = 0 params["per_page"] = 30 params["offset"] = 0 @@ -168,11 +168,14 @@ r = [] # paginate results for params["page"] in range(0, pages): self.progress(pages) # send HTTP request and extract JSON - add = ahttp.get(self.base.format(method), params, encoding="utf-8") + if post: + method += "?token=" + params["token"] + del params["token"] + add = ahttp.get(self.base.format(method), params, post=post, json=post, encoding="utf-8") add = json.loads(add) # check for errors if isinstance(add, dict) and add.get("error"): if r: log.WARN(add["error"])