diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py index 41dd1df9a..d97930655 100644 --- a/yt_dlp/postprocessor/ffmpeg.py +++ b/yt_dlp/postprocessor/ffmpeg.py @@ -683,13 +683,27 @@ def _embed_lyrics(self, subtitles, filename, ext): with open(sub['filepath'], encoding='utf-8') as f: sub['data'] = f.read() + def totime(time): + time = time.split(":") + return int((int(time[0])*60 + float(time[1]))*1000) + def convert_lrc_to_sylt(lrc): + lrc = lrc.split("\n") + lrc = [i.strip() for i in lrc] + lrc = [i for i in lrc if i] + lrc = [i for i in lrc if i[-1] != "]"] + lrc = [i.split("]") for i in lrc] + lrc = [[i[0][1:], i[1]] for i in lrc] + lrc = [(i[1], totime(i[0])) for i in lrc] + return lrc if ext == 'mp3': metadata = mutagen.id3.ID3(filename) for lang, sub in subtitles.items(): - metadata.add(mutagen.id3.USLT( + metadata.add(mutagen.id3.SYLT( encoding=mutagen.id3.Encoding.UTF8, lang=ISO639Utils.short2long(lang) or 'und', - text=sub['data'])) + format=2, + type=1, + text=convert_lrc_to_sylt(sub['data']))) else: metadata = mutagen.File(filename) metadata['©lyr' if ext == 'm4a' else 'lyrics'] = [sub['data'] for sub in subtitles.values()]