Esempio n. 1
0
def dump(lyrics, kcl=True):
    """Dump data from Lyrics instance to Lyrics3 v2.00 format

    Args:
        lyrics (Lyrics): Lyrics instance to dump as Lyrics3 v2.00 data

    Kwargs:
        kcl (bool): Include KCL lyrics in addition to LYR lyrics;
        this allows us to include higher-precision timestamps in a
        backwards-compatible way.

    Returns:
        str. String containing Lyrics3 v2.00 data, including "LYRICSBEGIN"
            but not including size descriptor and "LYRICS200" string.
    """
    lyrData = timedtext.dump(lyrics, crlf=True)

    if len(lyrData) >= 10**FIELD_SIZE_LENGTH:
        raise ValueError, "Lyrics too long"

    lyrics3Data = (START_TAG
              + "LYR{{:0{}}}".format(FIELD_SIZE_LENGTH).format(len(lyrData))
              + lyrData)

    if kcl:
        kclData = timedtext.dump(lyrics, frac=True)
        if len(kclData) >= 10**FIELD_SIZE_LENGTH:
            raise ValueError, "Lyrics too long"
        lyrics3Data += ("KCL{{:0{}}}".format(FIELD_SIZE_LENGTH).format(len(kclData))
                   + kclData)

    return lyrics3Data
Esempio n. 2
0
 def LoadLyrics(self, lyrics):
     self.edit_separator()
     self.delete('0.0', tk.END)
     if lyrics is not None:
         self.insert('0.0', timedtext.dump(lyrics, frac=True))
     self.edit_reset()
     self.edit_modified(False)