diff --git a/utils.py b/utils.py index 5915db9..b8b9081 100644 --- a/utils.py +++ b/utils.py @@ -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