[GH-ISSUE #660] Separate multiple artists #472

Closed
opened 2026-02-26 02:33:19 +03:00 by kerem · 1 comment
Owner

Originally created by @duhow on GitHub (Sep 30, 2017).
Original GitHub issue: https://github.com/koel/koel/issues/660

A note on Wiki says:
TCOM, TEXT, TOLY, TOPE, and TPE1 can contain multiple values separated by a foreslash ("/").
NOTE: ID3 v2.3 uses / as multiple artist separator, while v2.4 uses \\.

Having this song for example, tagged with MusicBrainz:

id3v1 tag info for 11 Edge.mp3:
Title  : Edge                            Artist: Virtual Riot feat. Varia
Album  : There Goes Your Money           Year: 2013, Genre: Drum & Bass (127)
Comment:                                 Track: 11
------------------------------
id3v2 tag info for 11 Edge.mp3:
TIT2 (Title/songname/content description): Edge
TPE1 (Lead performer(s)/Soloist(s)): Virtual Riot feat. Varia
TRCK (Track number/Position in set): 11/16
TALB (Album/Movie/Show title): There Goes Your Money
TPOS (Part of a set): 1/1
TCON (Content type): Drum & Bass (127)
IPLS (Involved people list):
TBPM (BPM (beats per minute)): 86
TDAT (Date): 0309
TORY (Original release year): 2013
TYER (Year): 2013
TFLT (File type): MPG/3
TKEY (Initial key): G#maj
TENC (Encoded by): Beatport
TPE2 (Band/orchestra/accompaniment): Virtual Riot
TSO2 ():  frame
TSRC (ISRC (international standard recording code)): GBKQU1392441
TXXX (User defined text information): (SCRIPT): Latn
TMED (Media type): Digital Media
TIT1 (Content group description): SectionZ Records
TPUB (Publisher): SectionZ Records
TXXX (User defined text information): (originalyear): 2013
TXXX (User defined text information): (CATALOGNUMBER): SZLP0010
TSOP ():  frame
TXXX (User defined text information): (Artists): Virtual Riot/Varia
UFID (Unique file identifier): http://musicbrainz.org, 36 bytes
TXXX (User defined text information): (MusicBrainz Album Type): album
TXXX (User defined text information): (MusicBrainz Album Status): official
TXXX (User defined text information): (MusicBrainz Album Release Country): XW
TXXX (User defined text information): (Acoustid Id): 597032fe-5b7c-4662-8550-7cff86aa5560
TXXX (User defined text information): (MusicBrainz Album Id): 8658cea1-9c52-4598-9834-767b5df2ba82
TXXX (User defined text information): (MusicBrainz Album Artist Id): 33db34de-5419-4d4c-a45b-3dfd6b7d8a72
TXXX (User defined text information): (MusicBrainz Release Group Id): 20615485-0104-4bd7-aa75-a78d4d558f4e
TXXX (User defined text information): (MusicBrainz Release Track Id): 3fbb0207-4813-4386-90df-9a877bd9ae3b
TXXX (User defined text information): (MusicBrainz Artist Id): 33db34de-5419-4d4c-a45b-3dfd6b7d8a72/8fb52e7c-f03d-433b-b993-459cbe81a267
APIC (Attached picture): ()[, 3]: image/jpeg, 22213 bytes

When I'm searching for Virtual Riot artist songs, this one does not appear. Instead, it appears as Virtual Riot feat. Varia artist, which is not just one, but two.

The TPE1 field is not separated with foreslash, but it exists a custom field Artists which contains all the artists tagged in this file.
In order to process Artists correctly and finding them, is it posible to priorize the Artists field first if exists, separate all the artists, and add them to the same song?

Originally created by @duhow on GitHub (Sep 30, 2017). Original GitHub issue: https://github.com/koel/koel/issues/660 A note on [Wiki](https://en.wikipedia.org/wiki/ID3#ID3v2_frame_specification) says: `TCOM, TEXT, TOLY, TOPE, and TPE1 can contain multiple values separated by a foreslash ("/").` **NOTE:** ID3 v2.3 uses `/` as multiple artist separator, while v2.4 uses `\\`. Having this song for example, tagged with [MusicBrainz](https://musicbrainz.org/): ``` id3v1 tag info for 11 Edge.mp3: Title : Edge Artist: Virtual Riot feat. Varia Album : There Goes Your Money Year: 2013, Genre: Drum & Bass (127) Comment: Track: 11 ------------------------------ id3v2 tag info for 11 Edge.mp3: TIT2 (Title/songname/content description): Edge TPE1 (Lead performer(s)/Soloist(s)): Virtual Riot feat. Varia TRCK (Track number/Position in set): 11/16 TALB (Album/Movie/Show title): There Goes Your Money TPOS (Part of a set): 1/1 TCON (Content type): Drum & Bass (127) IPLS (Involved people list): TBPM (BPM (beats per minute)): 86 TDAT (Date): 0309 TORY (Original release year): 2013 TYER (Year): 2013 TFLT (File type): MPG/3 TKEY (Initial key): G#maj TENC (Encoded by): Beatport TPE2 (Band/orchestra/accompaniment): Virtual Riot TSO2 (): frame TSRC (ISRC (international standard recording code)): GBKQU1392441 TXXX (User defined text information): (SCRIPT): Latn TMED (Media type): Digital Media TIT1 (Content group description): SectionZ Records TPUB (Publisher): SectionZ Records TXXX (User defined text information): (originalyear): 2013 TXXX (User defined text information): (CATALOGNUMBER): SZLP0010 TSOP (): frame TXXX (User defined text information): (Artists): Virtual Riot/Varia UFID (Unique file identifier): http://musicbrainz.org, 36 bytes TXXX (User defined text information): (MusicBrainz Album Type): album TXXX (User defined text information): (MusicBrainz Album Status): official TXXX (User defined text information): (MusicBrainz Album Release Country): XW TXXX (User defined text information): (Acoustid Id): 597032fe-5b7c-4662-8550-7cff86aa5560 TXXX (User defined text information): (MusicBrainz Album Id): 8658cea1-9c52-4598-9834-767b5df2ba82 TXXX (User defined text information): (MusicBrainz Album Artist Id): 33db34de-5419-4d4c-a45b-3dfd6b7d8a72 TXXX (User defined text information): (MusicBrainz Release Group Id): 20615485-0104-4bd7-aa75-a78d4d558f4e TXXX (User defined text information): (MusicBrainz Release Track Id): 3fbb0207-4813-4386-90df-9a877bd9ae3b TXXX (User defined text information): (MusicBrainz Artist Id): 33db34de-5419-4d4c-a45b-3dfd6b7d8a72/8fb52e7c-f03d-433b-b993-459cbe81a267 APIC (Attached picture): ()[, 3]: image/jpeg, 22213 bytes ``` When I'm searching for `Virtual Riot` artist songs, this one does not appear. Instead, it appears as `Virtual Riot feat. Varia` artist, which is not just one, but two. The **TPE1** field is not separated with foreslash, but it exists a custom field **Artists** which contains all the artists tagged in this file. In order to process Artists correctly and finding them, is it posible to priorize the **Artists** field first if exists, separate all the artists, and add them to the same song?
kerem closed this issue 2026-02-26 02:33:19 +03:00
Author
Owner

@X-Ryl669 commented on GitHub (Oct 13, 2017):

It's a huge can of worms you're currently trying to open.
ID3v2.3 says:

TPE1
The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character.

Since your song does not follow this scheme, it's not being parsed correctly, so: you should fix your song. That being said, I doubt the PHP's GetID3 library is parsing the "/" anyway as separate entities, so even if the file was good, Koel would not extract more than one artists from this song.

That's exactly related to a topic of another issue I've started, to change a song's model to support multiple artists. So for now, I doubt this could be fixed.

<!-- gh-comment-id:336515561 --> @X-Ryl669 commented on GitHub (Oct 13, 2017): It's a huge can of worms you're currently trying to open. ID3v2.3 says: > TPE1 The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. Since your song does not follow this scheme, it's not being parsed correctly, so: you should fix your song. That being said, I doubt the PHP's GetID3 library is parsing the "/" anyway as separate entities, so even if the file was good, Koel would not extract more than one artists from this song. That's exactly related to a topic of another issue I've started, to change a song's model to support multiple artists. So for now, I doubt this could be fixed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#472
No description provided.