Spaces:
Running
Running
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) | |