Solved Multiple artist scraping issue with MusicBrainz Picard
#1
Hello all,

I'm having trouble scraping correctly multiple artist album with Gotham recently.
For instance, I have in my library the album "Showdown!", by Albert Collins, Johnny Copeland and Robert Cray. They are all three credited on all tracks, so with Picard I 've set as artist and albumartist the three of them using "the multiple entries per field" feature of that software.
The same goes for MusicBrainz IDs.

As a result the album is shown correctly credited with the three artists ("Albert Collins, Johnny Copeland & Robert Cray), and each artists have been added to the library showing for each that album. Everything is good so far.
But if you enter the album, each song is credited with for instance Robert Cray / Robert Cray / Robert Cray.
eg: first track is displayed like this: Showdown! - T-Bone Shuffle - Robert Cray / Robert Cray / Robert Cray.

It seems it picks up there are three artists but only the first name (corresponding to the first MusicBrainz ID it encounters in the musicBrainz ID artist field).

I don't know if it's a bug or if I'm doing something wrong.

here's a link to that track for test:
http://dl.free.fr/gmilg5DnP
Reply
#2
http://forum.xbmc.org/showthread.php?tid=184514
Reply
#3
Actually I've read through that post before posting here. Didn't find any answer for my specific issue. I've tried different settings (with overriding data on and off), but even then there are the 3 correct MBIDS for the three artists, it only pickup the first name, three times. Could you please test my file and tell me if i'm doing somethnig wrong?
Reply
#4
It feels like xbmc can't handle multiple MBIDs in the same field, looking at the code:

// 1) MusicBrainz
if (!strMusicBrainzArtistID.empty())
{
// 1.a) Match on a MusicBrainz ID
strSQL = PrepareSQL("SELECT * FROM artist WHERE strMusicBrainzArtistID = '%s'",
strMusicBrainzArtistID.c_str());
m_pDS->query(strSQL.c_str());
if (m_pDS->num_rows() > 0)
{
int idArtist = (int)m_pDS->fv("idArtist").get_asInt();
m_pDS->close();
return idArtist;
}
m_pDS->close();

I'm probably wrong since I'm no dev but it looks like it only gets one MBID, so if MusicBrainz Artist ID is set with 3 values through Picard, it will only get the first one.
Reply
#5
Forget last post, I've realised that it just does what it 's supposed to do, getting one artist at the time, I should have rather look on how the song or the album is added, and not the artist....
Reply
#6
Well it seems it should get each artist if it finds several values:

std:Confusedtring GetArtistString(const VECARTISTCREDITS &credits)
{
std:Confusedtring artistString;
for (VECARTISTCREDITS::const_iterator i = credits.begin(); i != credits.end(); ++i)
artistString += i->GetArtist() + i->GetJoinPhrase();
return artistString;
}


Since I do have all MBIDs properly set in the artist field, I'm truly clueless why it gets only the first name (but 3 times for 3 artists).
Reply
#7
Ok, I've solved my issue.

Actually I was setting the MusicBrainz Artist Id field with the pull down menu in Picard, where you can add values by clicking the "add value" button. That was the culprit. I 've set instead the field with only one value, but with the three MBIDs separated by <space>/<space>, and that worked. That's the only way xbmc can handle multiple values in one field, and not with the MusicBrainz Picard way.
Reply
#8
I have songs with multiple mbid and now the strArtists repeats the artist name

for instance: strArtists = 'Afrojack feat. Chris Brown / Afrojack feat. Chris Brown'
I'm using the Universal Scraper
Reply

Logout Mark Read Team Forum Stats Members Help
Multiple artist scraping issue with MusicBrainz Picard0