diff options
| author | exislow <exislow@users.noreply.github.com> | 2025-10-17 14:44:08 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-17 14:44:08 +0200 |
| commit | 72dd8fc598188c753958fb2b86b001d7bdcce043 (patch) | |
| tree | a488ce9046f3d39072864e96af9e61d3a334befe | |
| parent | f150b6ef6a78973453e4ad5b4587a2938ba09e39 (diff) | |
| parent | 676569e511ce47159f4e854bef0731e21ca9f9dd (diff) | |
| download | tidal-dl-ng-72dd8fc598188c753958fb2b86b001d7bdcce043.tar.gz | |
Merge pull request #588 from exislow:483-possibility-to-add-lrc-into-unsyncedlyrics-tag
feat(metadata): ✨ add support for synced and unsynced lyrics
| -rw-r--r-- | tidal_dl_ng/download.py | 13 | ||||
| -rw-r--r-- | tidal_dl_ng/metadata.py | 10 |
2 files changed, 17 insertions, 6 deletions
diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index bfc33d7..7ad9612 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -1183,6 +1183,8 @@ class Download: copy_right: str = track.copyright if hasattr(track, "copyright") and track.copyright else "" isrc: str = track.isrc if hasattr(track, "isrc") and track.isrc else "" lyrics: str = "" + lyrics_synced: str = "" + lyrics_unsynced: str = "" cover_data: bytes = None if self.settings.data.lyrics_embed or self.settings.data.lyrics_file: @@ -1190,10 +1192,12 @@ class Download: try: lyrics_obj = track.lyrics() + if lyrics_obj.text: + lyrics_unsynced = lyrics_obj.text + lyrics = lyrics_unsynced if lyrics_obj.subtitles: - lyrics = lyrics_obj.subtitles - elif lyrics_obj.text: - lyrics = lyrics_obj.text + lyrics_synced = lyrics_obj.subtitles + lyrics = lyrics_synced except: lyrics = "" # TODO: Implement proper logging. @@ -1227,7 +1231,8 @@ class Download: m: Metadata = Metadata( path_file=path_media, target_upc=target_upc, - lyrics=lyrics, + lyrics=lyrics_synced, + lyrics_unsynced=lyrics_unsynced, copy_right=copy_right, title=name_builder_title(track), artists=name_builder_artist(track, delimiter=self.settings.data.metadata_delimiter_artist), diff --git a/tidal_dl_ng/metadata.py b/tidal_dl_ng/metadata.py index 530f581..c8e1728 100644 --- a/tidal_dl_ng/metadata.py +++ b/tidal_dl_ng/metadata.py @@ -2,7 +2,7 @@ import pathlib import mutagen from mutagen import flac, id3, mp4 -from mutagen.id3 import APIC, TALB, TCOM, TCOP, TDRC, TIT2, TOPE, TPE1, TRCK, TSRC, TXXX, USLT, WOAS +from mutagen.id3 import APIC, SYLT, TALB, TCOM, TCOP, TDRC, TIT2, TOPE, TPE1, TRCK, TSRC, TXXX, USLT, WOAS class Metadata: @@ -20,6 +20,7 @@ class Metadata: composer: str isrc: str lyrics: str + lyrics_unsynced: str path_cover: str cover_data: bytes album_replay_gain: float @@ -49,6 +50,7 @@ class Metadata: albumartist: str = "", date: str = "", lyrics: str = "", + lyrics_unsynced: str = "", cover_data: bytes = None, album_replay_gain: float = 1.0, album_peak_amplitude: float = 1.0, @@ -72,6 +74,7 @@ class Metadata: self.composer = composer self.isrc = isrc self.lyrics = lyrics + self.lyrics_unsynced = lyrics_unsynced self.cover_data = cover_data self.album_replay_gain = album_replay_gain self.album_peak_amplitude = album_peak_amplitude @@ -136,6 +139,7 @@ class Metadata: self.m.tags["COMPOSER"] = self.composer self.m.tags["ISRC"] = self.isrc self.m.tags["LYRICS"] = self.lyrics + self.m.tags["UNSYNCEDLYRICS"] = self.lyrics_unsynced self.m.tags["URL"] = self.url_share self.m.tags[self.target_upc["FLAC"]] = self.upc @@ -158,7 +162,8 @@ class Metadata: self.m.tags.add(TDRC(encoding=3, text=self.date)) self.m.tags.add(TCOM(encoding=3, text=self.composer)) self.m.tags.add(TSRC(encoding=3, text=self.isrc)) - self.m.tags.add(USLT(encoding=3, lang="eng", desc="desc", text=self.lyrics)) + self.m.tags.add(SYLT(encoding=3, desc="text", text=self.lyrics)) + self.m.tags.add(USLT(encoding=3, desc="text", text=self.lyrics_unsynced)) self.m.tags.add(WOAS(encoding=3, text=self.isrc)) self.m.tags.add(TXXX(encoding=3, desc=self.target_upc["MP3"], text=self.upc)) @@ -180,6 +185,7 @@ class Metadata: self.m.tags["\xa9day"] = self.date self.m.tags["\xa9wrt"] = self.composer self.m.tags["\xa9lyr"] = self.lyrics + self.m.tags["----:com.apple.iTunes:UNSYNCEDLYRICS"] = self.lyrics_unsynced.encode("utf-8") self.m.tags["isrc"] = self.isrc self.m.tags["\xa9url"] = self.url_share self.m.tags[f"----:com.apple.iTunes:{self.target_upc['MP4']}"] = self.upc.encode("utf-8") |
