🛠 Album Artist ID3 tag only shows the main album artists. Fixes #51

This commit is contained in:
Robert Honz
2024-03-19 07:23:35 +01:00
parent ce639659b4
commit bc88b6fcac
3 changed files with 25 additions and 7 deletions
+10 -3
View File
@@ -30,7 +30,14 @@ from tidal_dl_ng.constants import (
from tidal_dl_ng.helper.decryption import decrypt_file, decrypt_security_token from tidal_dl_ng.helper.decryption import decrypt_file, decrypt_security_token
from tidal_dl_ng.helper.exceptions import MediaMissing, UnknownManifestFormat from tidal_dl_ng.helper.exceptions import MediaMissing, UnknownManifestFormat
from tidal_dl_ng.helper.path import check_file_exists, format_path_media, path_file_sanitize from tidal_dl_ng.helper.path import check_file_exists, format_path_media, path_file_sanitize
from tidal_dl_ng.helper.tidal import instantiate_media, items_results_all, name_builder_item, name_builder_title from tidal_dl_ng.helper.tidal import (
instantiate_media,
items_results_all,
name_builder_album_artist,
name_builder_artist,
name_builder_item,
name_builder_title,
)
from tidal_dl_ng.metadata import Metadata from tidal_dl_ng.metadata import Metadata
from tidal_dl_ng.model.gui_data import ProgressBars from tidal_dl_ng.model.gui_data import ProgressBars
from tidal_dl_ng.model.tidal import StreamManifest from tidal_dl_ng.model.tidal import StreamManifest
@@ -306,12 +313,12 @@ class Download:
lyrics=lyrics, lyrics=lyrics,
copy_right=copy_right, copy_right=copy_right,
title=name_builder_title(track), title=name_builder_title(track),
artists=[artist.name for artist in track.artists], artists=name_builder_artist(track),
album=track.album.name if track.album else "", album=track.album.name if track.album else "",
tracknumber=track.track_num, tracknumber=track.track_num,
date=release_date, date=release_date,
isrc=isrc, isrc=isrc,
albumartist=name_builder_item(track), albumartist=name_builder_album_artist(track),
totaltrack=track.album.num_tracks if track.album and track.album.num_tracks else 1, totaltrack=track.album.num_tracks if track.album and track.album.num_tracks else 1,
totaldisc=track.album.num_volumes if track.album and track.album.num_volumes else 1, totaldisc=track.album.num_volumes if track.album and track.album.num_volumes else 1,
discnumber=track.volume_num if track.volume_num else 1, discnumber=track.volume_num if track.volume_num else 1,
+11
View File
@@ -1,4 +1,5 @@
from tidalapi import Album, Mix, Playlist, Session, Track, UserPlaylist, Video from tidalapi import Album, Mix, Playlist, Session, Track, UserPlaylist, Video
from tidalapi.artist import Role
from tidalapi.session import SearchTypes from tidalapi.session import SearchTypes
from tidal_dl_ng.constants import MediaType from tidal_dl_ng.constants import MediaType
@@ -9,6 +10,16 @@ def name_builder_artist(media: Track | Video | Album) -> str:
return ", ".join(artist.name for artist in media.artists) return ", ".join(artist.name for artist in media.artists)
def name_builder_album_artist(media: Track | Album) -> str:
artists_tmp: [str] = []
for artist in media.album.artists:
if Role.main in artist.roles:
artists_tmp.append(artist.name)
return ", ".join(artists_tmp)
def name_builder_title(media: Track | Video) -> str: def name_builder_title(media: Track | Video) -> str:
result: str = media.full_name if hasattr(media, "full_name") else media.name result: str = media.full_name if hasattr(media, "full_name") else media.name
+4 -4
View File
@@ -30,7 +30,7 @@ class Metadata:
path_file: str, path_file: str,
album: str = "", album: str = "",
title: str = "", title: str = "",
artists: list[str] | None = None, artists: str = "",
copy_right: str = "", copy_right: str = "",
tracknumber: int = 0, tracknumber: int = 0,
discnumber: int = 0, discnumber: int = 0,
@@ -105,7 +105,7 @@ class Metadata:
self.m.tags["title"] = self.title self.m.tags["title"] = self.title
self.m.tags["album"] = self.album self.m.tags["album"] = self.album
self.m.tags["albumartist"] = self.albumartist self.m.tags["albumartist"] = self.albumartist
self.m.tags["artist"] = ", ".join(self.artists) if self.artists else "" self.m.tags["artist"] = self.artists
self.m.tags["copyright"] = self.copy_right self.m.tags["copyright"] = self.copy_right
self.m.tags["tracknumber"] = str(self.tracknumber) self.m.tags["tracknumber"] = str(self.tracknumber)
self.m.tags["tracktotal"] = str(self.totaltrack) self.m.tags["tracktotal"] = str(self.totaltrack)
@@ -120,7 +120,7 @@ class Metadata:
self.m.tags.add(TIT2(encoding=3, text=self.title)) self.m.tags.add(TIT2(encoding=3, text=self.title))
self.m.tags.add(TALB(encoding=3, text=self.album)) self.m.tags.add(TALB(encoding=3, text=self.album))
self.m.tags.add(TOPE(encoding=3, text=self.albumartist)) self.m.tags.add(TOPE(encoding=3, text=self.albumartist))
self.m.tags.add(TPE1(encoding=3, text=", ".join(self.artists) if self.artists else "")) self.m.tags.add(TPE1(encoding=3, text=self.artists))
self.m.tags.add(TCOP(encoding=3, text=self.copy_right)) self.m.tags.add(TCOP(encoding=3, text=self.copy_right))
self.m.tags.add(TRCK(encoding=3, text=str(self.tracknumber))) self.m.tags.add(TRCK(encoding=3, text=str(self.tracknumber)))
self.m.tags.add(TRCK(encoding=3, text=self.discnumber)) self.m.tags.add(TRCK(encoding=3, text=self.discnumber))
@@ -133,7 +133,7 @@ class Metadata:
self.m.tags["\xa9nam"] = self.title self.m.tags["\xa9nam"] = self.title
self.m.tags["\xa9alb"] = self.album self.m.tags["\xa9alb"] = self.album
self.m.tags["aART"] = self.albumartist self.m.tags["aART"] = self.albumartist
self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else "" self.m.tags["\xa9ART"] = self.artists
self.m.tags["cprt"] = self.copy_right self.m.tags["cprt"] = self.copy_right
self.m.tags["trkn"] = [[self.tracknumber, self.totaltrack]] self.m.tags["trkn"] = [[self.tracknumber, self.totaltrack]]
self.m.tags["disk"] = [[self.discnumber, self.totaldisc]] self.m.tags["disk"] = [[self.discnumber, self.totaldisc]]