'Retrieves all matches from string as a dict
:param string: the filename or release name
:type string: str
:param options: the filename or release name
:type options: str|dict
:return:
:rtype:'

def guessit(self, string, options=None):

    try:
        options = parse_options(options)
        result_decode = False
        result_encode = False
        fixed_options = {}
        for (key, value) in options.items():
            key = GuessItApi._fix_option_encoding(key)
            value = GuessItApi._fix_option_encoding(value)
            fixed_options[key] = value
        options = fixed_options
        if (six.PY2 and isinstance(string, six.text_type)):
            string = string.encode('utf-8')
            result_decode = True
        if (six.PY3 and isinstance(string, six.binary_type)):
            string = string.decode('ascii')
            result_encode = True
        matches = self.rebulk.matches(string, options)
        if result_decode:
            for match in matches:
                if isinstance(match.value, six.binary_type):
                    match.value = match.value.decode('utf-8')
        if result_encode:
            for match in matches:
                if isinstance(match.value, six.text_type):
                    match.value = match.value.encode('ascii')
        return matches.to_dict(options.get('advanced', False), options.get('implicit', False))
    except:
        raise GuessitException(string, options)
