diff options
| author | exislow <exislow@users.noreply.github.com> | 2025-10-17 15:41:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-17 15:41:10 +0200 |
| commit | 4f01f605e47462df6e2b11c60e587a8812530382 (patch) | |
| tree | ffc6bfced4bbbdc95818d69b34a7f97425195c9f | |
| parent | 3d5b52209e7bfd5e292a32a75d454965ec468e5f (diff) | |
| parent | c8cb43adf73e7d8dbcb8ee58bfb2c74d6a2ea7e9 (diff) | |
| download | tidal-dl-ng-4f01f605e47462df6e2b11c60e587a8812530382.tar.gz | |
Merge pull request #589 from exislow:486-explicit-tagging
feat(metadata): ✨ add explicit track metadata handling
| -rw-r--r-- | tidal_dl_ng/constants.py | 1 | ||||
| -rw-r--r-- | tidal_dl_ng/download.py | 7 | ||||
| -rw-r--r-- | tidal_dl_ng/metadata.py | 4 |
3 files changed, 11 insertions, 1 deletions
diff --git a/tidal_dl_ng/constants.py b/tidal_dl_ng/constants.py index 0630137..f2f774b 100644 --- a/tidal_dl_ng/constants.py +++ b/tidal_dl_ng/constants.py @@ -13,6 +13,7 @@ PLAYLIST_EXTENSION: str = ".m3u" PLAYLIST_PREFIX: str = "_" FILENAME_LENGTH_MAX: int = 255 FORMAT_TEMPLATE_EXPLICIT: str = " (Explicit)" +METADATA_EXPLICIT: str = " 🅴" class QualityVideo(StrEnum): diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 7ad9612..4ac2b14 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -35,6 +35,7 @@ from tidal_dl_ng.constants import ( CHUNK_SIZE, COVER_NAME, EXTENSION_LYRICS, + METADATA_EXPLICIT, METADATA_LOOKUP_UPC, PLAYLIST_EXTENSION, PLAYLIST_PREFIX, @@ -1226,6 +1227,9 @@ class Download: metadata_target_upc = MetadataTargetUPC(self.settings.data.metadata_target_upc) target_upc: dict[str, str] = METADATA_LOOKUP_UPC[metadata_target_upc] + explicit: bool = track.explicit if hasattr(track, "explicit") else False + title = name_builder_title(track) + title += METADATA_EXPLICIT if explicit else "" # `None` values are not allowed. m: Metadata = Metadata( @@ -1234,7 +1238,7 @@ class Download: lyrics=lyrics_synced, lyrics_unsynced=lyrics_unsynced, copy_right=copy_right, - title=name_builder_title(track), + title=title, artists=name_builder_artist(track, delimiter=self.settings.data.metadata_delimiter_artist), album=track.album.name if track.album else "", tracknumber=track.track_num, @@ -1252,6 +1256,7 @@ class Download: url_share=track.share_url if track.share_url and self.settings.data.metadata_write_url else "", replay_gain_write=self.settings.data.metadata_replay_gain, upc=track.album.upc if track.album and track.album.upc else "", + explicit=explicit, ) m.save() diff --git a/tidal_dl_ng/metadata.py b/tidal_dl_ng/metadata.py index c8e1728..7d8ccb9 100644 --- a/tidal_dl_ng/metadata.py +++ b/tidal_dl_ng/metadata.py @@ -31,6 +31,7 @@ class Metadata: replay_gain_write: bool upc: str target_upc: dict[str, str] + explicit: bool m: mutagen.mp4.MP4 | mutagen.mp4.MP4 | mutagen.flac.FLAC def __init__( @@ -59,6 +60,7 @@ class Metadata: url_share: str = "", replay_gain_write: bool = True, upc: str = "", + explicit: bool = False, ): self.path_file = path_file self.title = title @@ -84,6 +86,7 @@ class Metadata: self.replay_gain_write = replay_gain_write self.upc = upc self.target_upc = target_upc + self.explicit = explicit self.m: mutagen.FileType = mutagen.File(self.path_file) def _cover(self) -> bool: @@ -189,6 +192,7 @@ class Metadata: 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") + self.m.tags["rtng"] = [1 if self.explicit else 0] if self.replay_gain_write: self.m.tags["----:com.apple.iTunes:REPLAYGAIN_ALBUM_GAIN"] = str(self.album_replay_gain).encode("utf-8") |
