def parse(self, values, conn):
        super(LookupHandlerParams, self).parse(values, conn)
        self._parse_client(values, conn)
        self.meta = values.get('meta')
        if self.meta == '0' or not self.meta:
            self.meta = []
        elif self.meta == '1':
            self.meta = ['recordingids']
        elif self.meta == '2':
            self.meta = ['m2']
        else:
            self.meta = self.meta.split()
        self.max_duration_diff = values.get('maxdurationdiff', type=int)
        if self.max_duration_diff is None:
            self.max_duration_diff = const.FINGERPRINT_MAX_LENGTH_DIFF
        elif self.max_duration_diff > const.FINGERPRINT_MAX_ALLOWED_LENGTH_DIFF or self.max_duration_diff < 1:
            raise errors.InvalidMaxDurationDiffError('maxdurationdiff')
        self.batch = values.get('batch', type=int)
        self.fingerprints = []
        suffixes = list(iter_args_suffixes(values, 'fingerprint', 'trackid'))
        if not suffixes:
            raise errors.MissingParameterError('fingerprint')
        for i, suffix in enumerate(suffixes):
            try:
                self._parse_query(values, suffix)
            except errors.WebServiceError:
                if not self.fingerprints and i + 1 == len(suffixes):
                    raise
dataset/ETHPy150Open lalinsky/acoustid-server/acoustid/api/v2/__init__.py/LookupHandlerParams.parse/original