Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Add All Artists on Track Into Artist Tag Separated by ; including featured artists #39

Closed
JapethEli opened this issue Jul 23, 2023 · 4 comments
Assignees
Labels
Enhancement Enhancement of existing functionality Feature New feature or request

Comments

@JapethEli
Copy link

🚀 Feature Request

Is your feature request related to a problem? Please describe.

If an album doesn't have the artist in the title of the track on qobuz like (feat. artist) then it will be missing from the tags completely. I'll have to manually add each featured artist.
*


Describe the solution you'd like

If you can just grab all artists per track with api from MainArtist and also FeaturedArtist and then separate each artist by semicolon it would be perfect in the tags. Example, Nas; 21 Savage; Nelly if the track had 3 artists. Thats how it should look in the artist name field.
*


Describe alternatives you've considered

Only doubledouble.top has artists correctly. All others i've tried are missing artist info if not in the title of the track. Not sure how doubledouble figured it out, but that is very nice.
*


Additional context

Nas - Magic 2 album, the last track one mic one gun, doesn't have 21 savage in the tags. But on Qobuz, 21 savage would be listed as featured artist. If you could just put all artists into artist name field from there, it would fix this issue.
*

@viviancels
Copy link

viviancels commented Jul 30, 2023

It is a HUGE problem of Qobuz itself! Just compare lists of track artists in releases on Qobuz & on Deezer:
Magic Island Sampler 002 :
Qobuz: Der Mystik, Der Mystik, Der Mystik & Alex Reliic, Renov8, Renov8
Deezer: Der Mystik & Alex Reliic pres Perplexit, Der Mystik & Alex Reliic pres Perplexity, Der Mystik & Alex Reliic pres Perplexity, Renov8 & Euphorik, Renov8 and Euphorik

Judge Jules - Hold On :
Qobuz: Judge Jules
Deezer: Judge Jules & Roger Shah feat. Amanda Angelic

QobuzDownloaderX-MOD can't take artist info from nowhere. If information about the track artist is missing in qobuz itself, then it will be missing in QobuzDownloaderX-MOD. I aownloaded thiese 2 releases in doubledouble.top, there are multitag present, it better, but track artist must be correctly as in deezer. Ex: Judge Jules & Roger Shah feat. Amanda Angelic NOT Judge Jules \\ Roger Shah \\ Amanda Angelic. Deezer has multitag artists (not artist).

Also deezer supports alternative languages:
Deezer: Kim Svärd
Qobuz: Kim Svard

@DJDoubleD
Copy link
Owner

If the info isn't in Qobuz's API result, I can't get it either.

I checked the given track from doubledouble.top and It seems they just take the entire list of "performers" and dump their roles, as returned by the Qobuz API, in separate ID3 / VORBIS tags and hope for the best.
This results in a few good results, but also a hole lot of garbage tags since the list of roles that can be returned from Qobuz is a hot mess ("Featuring", "FeaturedArtist", ...)

For example, https://play.qobuz.com/track/219736471

Credits displayed in Qobuz webplayer (and returned as such in the API result):
Qobuz WebPlayer Credits Screen

Resulting garbage tags returned by doubledouble.top's method:
Doubledouble.top's Resulting Tags

The method used by double double results in garbage tags like "LLC/UNIVERSAL MUSIC PUBLISHING INC" = "Nasir Jones (Sun Shining". (because they just split the roles by ",", there isn't any other way)
I'll try to collect a list of possible "roles" returned by Qobuz and select only the ones that make sense to add to the written tags.

The entire list I will probably just dump in the INVOLVEDPEOPLE tag so the user can rearrange them to their heart's content...

@DJDoubleD
Copy link
Owner

After extensive testing, there doesn't really seems to be an ideal solution, given the unreliable info present in the Qobuz Library.
The API returns a singular string for both Album Artist and Track Artist (performer) but also:

  • A list of Album Artists which seems to be a collection of the main artists of the album tracks
    This seems like an unusable list, except maybe for creating a concatenated string and store it as ALBUMARTISTSORT?
  • A (badly) delimited string containing all involved people with their (again badly) delimited list of roles.
    From this list I can get the main artists (and in most cases the featured artists). I can store them as individual artists, create a delimited list of artists, or maybe just keep the separately returned performer string as Track Artist and use the concatenated list of MainArtists and FeaturedArtists to store as ARTISTSORT.

Example album given was https://play.qobuz.com/album/zfig6airc2ubc
Results from Qobuz API:

For Album:

  • Album.Artist = "Der Mystik"
  • Album.Artists = "Der Mystik & Alex Reliic & Perplexity & Renov8 & EuphoriK" (=> list converted to "&" delimited string)

For 1st Track (01 - Mediterraneo (Club Mix)):

  • Performer = "Der Mystik"
  • Performers = Der Mystik\Alex Reliic\Perplexity (=> MainArtists parsed from Performers string)

To be continued for a decision...

@DJDoubleD
Copy link
Owner

Since there was no ideal solution, I settled on the following "solution".

New settings

new settings

  • Producer checkbox: write the producer(s) tag(s) to the audiofile (only for FLAC downloads).
  • Label checkbox: write the record label to the Publisher tag to the audiofile.
    The tag follows the ID3 v2.4 standard for Publisher.
    Since the Vorbis Comment standard suggests the "ORGANIZATION" tag but most software seems to recognize the "PUBLISHER" tag, the Publisher tag is used in both MP3 and FLAC formats.
  • Involved People checkbox: write the InvolvedPeople tag to the audiofile.
    The Qobuz API gives a string containing all "performers" and their roles for a Track in a "not ideally structured" way.
    In order to give the user all available info, the entire unaltered string is written to the InvolvedPeople tag.
    This field is recognized in the ID3 v2.4 standard standard but not in theVorbis Comment standard. Nevertheless the same tag is written to both MP3 and FLAC files.
  • PrimaryListSeparator Textfield: A string of max 3 characters which will be used to separate all but the second to last and last item of a list. Default value set to ", ".
  • ListEndSeparator Textfield: A string of max 3 characters which will be used to separate the second to last and last item of a list. Default value set to "& ".
  • Merge Performers checkbox: Merge the tags that consist of (possible) lists into 1 string. (unchecked by default)
    Functionality is explained in a tooltip. Detailed info of impacted tags below:

AlbumArtist

Instead of using the Album.Artist.Name returned by the Qobuz API by default, now all Album.Artists returned by the Qobuz API are gathered and a list of "Album.Artist.Name"s is used instead.
First the Artists with role "main-artist" (if any) are collected and then the Artists with role "featured-artist" (if any) are added to the list.
Only if the resulting AlbumArtists list is empty, the singular Album.Artist.Name is used.

  • Merge Performers unchecked
    The gathered list of AlbumArtists is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple artists, multiple ALBUMARTIST tags will be written to the audio file.
    The Album.Artist.Name is still used in folder names (like before).

  • Merge Performers checked
    The gathered list of AlbumArtists is merged into a singular delimited string and written to the audio file in 1 ALBUMARTIST tag. This merged string is also used in folder names.
    In order to create the merged string of artists, first all of the Main Artists are concatenated using the PrimaryListSeparator string as delimiter. This is done for all artists except for the last 2. These 2 are concatenated using the ListEndSeparator value as delimiter.
    The same process is used to merge the Featured Artists if any and more then 1 are present.
    Finally the merged string of Main Artists is concatenated with the merged Featured Artists list (if any), using the " Feat. " string as delimiter.

TrackArtist (Artist)

Instead of using the Track.Performer.Name returned by the Qobuz API by default, now the complete Track.Performers string, returned by the Qobuz API, is parsed (best effort) into a list of Performers and their respective roles.
From this resulting list, first the Performers with role "main-artist" (if any) are collected and then the Performers with role "featured-artist" (if any) are added to the list.
Only if the resulting Artists list is empty, the singular Track.Performer.Name is used.

  • Merge Performers unchecked
    The gathered list of Artists is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple Performers, multiple ARTIST tags will be written to the audio file.
    The Track.Performer.Name is still used in file names (like before when downloading single tracks).

  • Merge Performers checked
    The parsed list of Artists is merged into a singular delimited string and written to the audio file in 1 ARTIST tag. This merged string is also used in file names (when downloading single tracks).
    The same merger process as described for the AlbumArtist is used to merge the Track's Main Artists and Featured Artists.

Composer

From the parsed Track.Performers string, the Performers with the Composer role are collected into a list of Composers.
Only if the resulting Composers list is empty, the singular Track.Composer.Name as returned by the Qobuz API, is used.

  • Merge Performers unchecked
    The gathered list of Composers is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple Composers, multiple COMPOSER tags will be written to the audio file.

  • Merge Performers checked
    The parsed list of Composers is merged into a singular delimited string and written to the audio file in 1 COMPOSER tag.
    The Composers are merged using the PrimaryListSeparator & ListEndSeparator, as described ealier.

Producer

From the parsed Track.Performers string, the Performers with the Producer role are collected into a list of Producers.
The Producers only seem to be returned in the Track.Performers string by the Qobuz API, so there is no fallback field.
The ID3 v2.4 (MP3) spec doesn't seem to provide a tag for Producer, so it's only written to FLAC files.

  • Merge Performers unchecked
    The gathered list of Producers is written to the audio file in analogy with the previous described tags. This means that if there are multiple Producers, multiple PRODUCER tags will be written to the audio file.

  • Merge Performers checked
    The parsed list of Producers is merged into a singular delimited string and written to the audio file in 1 PRODUCER tag.
    The Producers are merged using the PrimaryListSeparator & ListEndSeparator, as described ealier.

@DJDoubleD DJDoubleD added Feature New feature or request Enhancement Enhancement of existing functionality labels Aug 14, 2023
@DJDoubleD DJDoubleD self-assigned this Aug 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Enhancement of existing functionality Feature New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants