示例#1
0
 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:]
示例#3
0
 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
示例#4
0
 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
示例#5
0
 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