File size: 1,290 Bytes
011064a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78dd807
011064a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def remove_metadata(LRC):
    lines = LRC.split("\n")
    sep = "\n"
    while lines and (not lines[0] or not lines[0][1].isdigit() or lines[0][0] != '['):
        del lines[0]
    return sep.join(lines)

def safe_read(i, a):
    if i > len(a):
        return None
    else:
        return a[i]

def get_line_info(linein):
    # Extract minutes and seconds, handle potential issues with slicing and conversion
    minutes = float(linein[1:3])
    seconds = float(linein[4:9])
    lt = minutes * 60 + seconds
    line = ""
    i = 10
    j = 1
    breaks = []
    times = []
    while i < len(linein):
        if safe_read(i+9,linein) == '>' and linein[i] == '<':
            tb = 0
            breaks.append(j)
            tb += float(linein[i+1:i+3])*60
            tb += float(linein[i+4:i+9])
            times.append(tb)
            i += 10
        else:
            line += linein[i]
            i += 1
            j += 1
    return {"time": lt, 
            "line": line, 
            "wordbreaks": breaks,
            "wordtimes": times}

def convert_to_json(LRC: str):
    e = LRC.split("\n")
    a = []
    for i in e:
        a.append(get_line_info(i))
    return a

if __name__ == "__main__":
    e = open(".lrc", encoding="UTF8")

    p = convert_to_json(e.read())
    print(p)