Beispiel #1
0
def get_params_in_query(query_string):
    params = parse_qs(query_string)

    # Unpickle pickled data
    if "_pickle_" in params:
        unpickled = pickle.loads(binascii.unhexlify(params.pop("_pickle_")))
        params.update(unpickled)

    return params
def get_params_in_query(query_string):
    """Get parameters dict from Kodi query (sys.argv[2])

    Args:
        query_string (str): Query string passed to the addon (e.g. ?foo=bar&baz=quux)
    Returns:
        dict: Paramters found in the query string
    """

    params = parse_qs(query_string)

    # Unpickle pickled data
    if "_pickle_" in params:
        unpickled = pickle.loads(binascii.unhexlify(params.pop("_pickle_")))
        params.update(unpickled)

    return params
    def parse_params(self, raw_params):
        if raw_params.startswith("_pickle_="):
            # Decode params using binascii & json
            raw_params = pickle.loads(binascii.unhexlify(raw_params[9:]))
        else:
            # Decode params using urlparse.parse_qs
            raw_params = parse_qs(raw_params)

        # Populate dict of params
        self.params.update(raw_params)

        # Construct separate dictionaries for callback and support params
        for key, value in self.params.items():
            if key.startswith(u"_") and key.endswith(u"_"):
                self.support_params[key] = value
            else:
                self.callback_params[key] = value
    def parse_args(self):
        """Extract arguments given by Kodi"""
        _, _, route, raw_params, _ = urlparse.urlsplit(sys.argv[0] + sys.argv[2])
        self.selector = route if len(route) > 1 else "root"
        self.handle = int(sys.argv[1])

        if raw_params:
            params = parse_qs(raw_params)
            self.params.update(params)

            # Unpickle pickled data
            if "_pickle_" in params:
                unpickled = pickle.loads(binascii.unhexlify(self.params.pop("_pickle_")))
                self.params.update(unpickled)

            # Construct a separate dictionary for callback specific parameters
            self.callback_params = {key: value for key, value in self.params.items()
                                    if not (key.startswith(u"_") and key.endswith(u"_"))}
    def parse_args(self, redirect=None):
        """Extract arguments given by Kodi"""
        _, _, route, raw_params, _ = urlparse.urlsplit(redirect if redirect else sys.argv[0] + sys.argv[2])
        self.selector = route if len(route) > 1 else "root"
        self.handle = int(sys.argv[1])

        if raw_params:
            params = parse_qs(raw_params)
            self.params.update(params)

            # Unpickle pickled data
            if "_pickle_" in params:
                unpickled = pickle.loads(binascii.unhexlify(self.params.pop("_pickle_")))
                self.params.update(unpickled)

            # Construct a separate dictionary for callback specific parameters
            self.callback_params = {key: value for key, value in self.params.items()
                                    if not (key.startswith(u"_") and key.endswith(u"_"))}
def tags(plugin, url):
    """
    List tags for a video.
    site: https://www.watchmojo.com/video/id/19268/

    :param Route plugin: Tools related to Route callbacks.
    :param unicode url: The url to a video.
    """
    plugin.category = plugin.localize(TAGS)
    url = url_constructor(url)
    source = urlquick.get(url)

    # Parse all video tags
    root_elem = source.parse("div", attrs={"id": "tags"})
    for elem in root_elem.iterfind("a"):
        url = elem.get("href")
        urlparams = utils.parse_qs(url)
        if "q" in urlparams:
            search_term = urlparams["q"]

            item = Listitem()
            item.label = elem.text.title()
            item.set_callback(search_results, search_term)
            yield item
 def test_parse_qs_fail(self):
     with self.assertRaises(ValueError):
         utils.parse_qs("q=search&safe=no&safe=yes")
 def test_parse_qs_part(self):
     ret = utils.parse_qs("q=search&safe=no")
     self.assertIsInstance(ret, dict)
     self.assertDictEqual(ret, {u"q": u"search", u"safe": u"no"})
 def test_parse_qs_full(self):
     ret = utils.parse_qs("http://example.com/path?q=search&safe=no")
     self.assertIsInstance(ret, dict)
     self.assertDictEqual(ret, {u"q": u"search", u"safe": u"no"})