Exemplo n.º 1
0
 def _parse_params(self, valid_params):
     """Parse params in the url / POST payload, generating a dict we can use
     in a JSON-RPC request to XBMC"""
     params = web.input()
     retval = {}
     if "albumartistsonly" in valid_params:
         retval["albumartistsonly"] = params.get("albumartistsonly") == "true"
     if "fields" in valid_params and params.get("fields"):
         retval["properties"] = params["fields"].split(",")
     if "start" in valid_params:
         try:
             pagination_start = int(params.get("start", 0))
         except ValueError:
             raise web.badrequest('"start" must be an integer.')
         retval["limits"] = {"start": pagination_start}
     if "limit" in valid_params and "limit" in params:
         try:
             retval["limits"]["end"] = pagination_start + int(params["limit"])
         except ValueError:
             raise web.badrequest('"limit" must be an integer.')
     if "sort" in valid_params and "sort" in params:
         retval["sort"] = {
             "order": "descending" if params["sort"][0] == "-" else "ascending",
             "method": params["sort"][1:],
             "ignorearticle": params.get("ignorearticle") == "true",
         }
     if "filter" in valid_params and params.get("filter"):
         # FIXME
         query = params["filter"].split(" ")
         retval["filter"] = {"field": query[0], "operator": query[1], "value": " ".join(query[2:])}
     return retval
Exemplo n.º 2
0
 def GET(self, album_id):
     method = "AudioLibrary.GetAlbumDetails"
     valid_params = ["fields"]
     params = self._parse_params(valid_params)
     try:
         params["albumid"] = int(album_id)
     except ValueError:
         raise web.badrequest("Album ID must be an integer.")
     return self.execute(method, params)