Added parseLrcLine()

This commit is contained in:
2025-12-16 14:43:47 +00:00
parent 9e13634f28
commit 5f2a915adb

View File

@ -2,6 +2,8 @@
A set of common utilities.
"""
import re
def inputYN(text: str, default: bool=None):
"""
Prompty the user with a yes/no prompt.
@ -20,3 +22,28 @@ def inputYN(text: str, default: bool=None):
return False
if default is not None and i == '':
return default
def parseLrcLine(lrcLine: str) -> [float, str]:
"""
Parses a line from an lrc file.
Turns "[00:36.21] If you decide to stay" into
[36.21, 'If you decide to stay'].
Args:
lrcLine (str): The single line from the lrc file.
Returns:
float: How many seconds into the song the lyric is.
str: The lytic.
"""
t = None
if re.search(r'^\[[0-9][0-9]:[0-9][0-9](\.[0-9][0-9])?\].*$', lrcLine):
timeStamp = lrcLine[1:].split(']')[0]
minutes, seconds = timeStamp.split(':')
minutes, seconds = (int(minutes), float(seconds))
t = minutes * 60 + seconds
lrcLine = ']'.join(lrcLine.split(']')[1:]).strip()
return t, lrcLine