summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/metadata.py
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2025-10-17 14:41:23 +0200
committerRobert Honz <exislow+github@gmail.com>2025-10-17 14:41:23 +0200
commit676569e511ce47159f4e854bef0731e21ca9f9dd (patch)
treea488ce9046f3d39072864e96af9e61d3a334befe /tidal_dl_ng/metadata.py
parentf150b6ef6a78973453e4ad5b4587a2938ba09e39 (diff)
downloadtidal-dl-ng-676569e511ce47159f4e854bef0731e21ca9f9dd.tar.gz
feat(metadata): ✨ add support for synced and unsynced lyrics
* Introduced `lyrics_synced` and `lyrics_unsynced` fields in the `Metadata` class. * Updated the `Download` class to handle both synced and unsynced lyrics from the track. * Enhanced metadata writing to include `UNSYNCEDLYRICS` in the tags.
Diffstat (limited to 'tidal_dl_ng/metadata.py')
-rw-r--r--tidal_dl_ng/metadata.py10
1 files changed, 8 insertions, 2 deletions
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")