def parse_managed(): # TODO: parse ratings, exclude bad managed edges for line in parse_simple('edges/managed.txt'): idx = sha1(line).hexdigest()[:5] args = line.split() l, r = args[:2] yield '%s=%s.%s' % (l, r, idx), args
def interpret_picard(picard_string): data = {} for match in re.finditer("(\\w+):\\(((?:[^\\\\)]|\\\\.)*)\\)", picard_string): key = match.group(1) value = unescape_picard(match.group(2)) if key == "track": value = re.sub("-([^\"&?\\/\\s]{11})$", "", value) try: try: artist, title = parse_simple(value) except: print("PARSE FAILED") traceback.print_exc() artist, title = get_artist_title(value) data["artist"] = artist data["name"] = title except: print("BOTH FAILED") traceback.print_exc() data["track"] = value elif key != "tnum": data[key] = value ret = "" for key, value in data.items(): if value is not None: ret += " {}:({})".format(key, escape_picard(value)) return ret[1:]
def parse_ratings(): ratings = {} for line in parse_simple('ratings.txt'): sp = line.split() if len(sp) < 4: continue name, rev, user, flags = sp[:4] if flags[0] not in '012345': continue ratings.setdefault(name, {}).setdefault(rev, {}).setdefault(user, (int(flags[0]), flags[1:])) return ratings
def parse_ratings(): ratings = {} for line in parse_simple('ratings.txt'): sp = line.split() if len(sp) < 4: continue name, rev, user, flags = sp[:4] if flags[0] not in '012345': continue ratings.setdefault(name, {}).setdefault(rev, {}).setdefault( user, (int(flags[0]), flags[1:])) return ratings