Fan art issue with multi-artists...
#1
All,

I cannot be the only person with this issue (or the only one sad enough to collect music fan art!)...

If an album track involves two or more artists (for instance U2 and Sting), then XBMC correctly identifies the U2 album, and also correctly identifies Sting.

It will list the album both under U2 and Sting (in library mode) - all well and good so far.

It will also pick up the fanart.jpg correctly for the U2 album... BUT, it will not pick up fanart.jpg for Sting.


So in the following situation..


Artist 1
|--- fanart.jpg
|--- Album 1
|--- Track 01 (ID3 tag for artist is Artist 1 & Artist 2)
Artist 2
|--- fanart.jpg


ONLY the fanart for Artist 1 is picked up.

Now I could fix this is I actually had an album by Artist 2, but I don't... I merely want their fanart (since they are an artist on the Artist 1 album)



Is this a known 'quirk' of xbmc? I realise it's a tad anal, and I can work around it... just would like to mention it for consideration in some subsequent release perhaps.
Reply
#2
tell me how to solve it in a logical way and i will do it. how can it possible tell that artist2/ is the path for artist2 when there is songs outside that folder which belongs to the artist?
Reply
#3
XBMC already handles this through the multiple artists formatting of the Artist tag. This is well documented in the online manual.... it's just the fanart code that's not taking it into account.

So if the ID3 Tag for Artist (or Album Artist) says "U2 / Sting / Madonna", the album will appear under ALL three artists in the library view (as documented) (but will only pick up the fanart for the folder under which it is stored.


The logical way to resolve this is...

For each artist in library (or file view)
{
if exists (artist\fanart.jpg)
{
artistfanart = artist\fanart.jpg
}
}

It seems that part of XBMC (library) are working really well and handling the multiple artist issue... BUT, somewhere, the code for collecting fanart either only looks at the first artist in the ID3 tag OR it's only looking for fanart in the parent folder of the physical album folder).
Reply
#4
did you read what i put? you really do not have to explain to me how my code works.

i asked you how you think we could possibly solve the problem in question. the only way to identify a path with an artist is to use the largest common paths to all songs registered to that artist. that obviously fail in your case as artist2 has songs registered within the artist1 path. the largest common path is hence the root of your music dir.
Reply
#5
Apologies... I did read itOK let me take another tack...

XBMC is clearly aware that Artist2 is featured on an Album associated with Artist1. How this is stored in the DB I do not know, but it's clear how this information was deduced (from the ID3 tag).

XBMC makes an assumption that in order to find the artist thumb... it must search for fanart.jpg in the parent folder of the album.... this is a logical assumption given the \Artist\Album structure... this is a massive assumption, but works well currently for xbmc.


Given this.... why is it not logical to search the parent folder's siblings for other artists...?

eg. \Artist 1\Album
\Artist 2

Hope this helps. I readily admit, it uses assumptions, but no greater assumption than the one already implemented (seemingly, since I don't have access to the source / logic).

What do you reckon?
Reply
#6
problem with that is, why is artist2/ a better choice than artist1/ ? you could try some heuristics like artist2/ is the largest common path for MOST of them albums etc, but even then it would fail in certain scenarios. as usual i think it makes sense to prioritize not making mistakes. another thing you could do in theory is use the name of the folders, but that will still be prone to spelling differences etc...

in the db we store the paths of the songs. current logic grabs all the paths for songs associated with an artist, then finds the largest common path.
Reply
#7
This isn't a matter of choosing artist 2 over artist 1

It's about BOTH artists having fanart assigned in the artists view of the library mode


So, in the view where all my artists are listed.... artist 1, artist 2, artist 3 etc each should have a picture.
Artist 1 works (because it has a physical mp3 below it's structure), but artist 2 does not work because it doesn't have a physical mp3 in it's structure (but it's listed in the artists view, and points to an artist 1 album (because the artist was listed in the ID3 tag))


I 'think' the current logic is 95% correct and goes like this.

1) Read the ALBUM Tag from the file
2) Add the Album to the database
3) Read the ARTIST Tag from the file
4) Add every Artist listed in the tag to the database
5) Link the First Artist listed to the actual album
6) Look in the parent folder of the file for fanart.jpg
7) If it exists assign that fan art to the First Artist
9) For each additional artist in the ID3 tag DO
9a) Link the artist to the album

I propose the following additional logic.
9b) Look in the sibling of the parent folder of the file for fanart.jpg
9c) If it exists assign that fan art to the additional artist
Reply
#8
from 6) and on it's wrong. re-read what i have written and think it through and you'll see why.
Reply
#9
OK, let's start from a different premise...

The physical structure is like this..


Artist 1
*****|--- fanart.jpg
*****|--- Album 1
*********|--- Track 01 (ID3 tag for artist is Artist 1 & Artist 2)
Artist 2
*****|--- fanart.jpg


and we know (by some logic) that the database works correctly and renders everything correctly in library mode with tables something link this.


FANART *************** ARTIST ********** ALBUMS
Artist 1\fanart.jpg <_______ Artist 1 __________> Artist 1\Album 1
Artist 2\fanart.jpg ******* Artist 2 _____|
Artist 3\fanart.jpg <_______ Artist 3 __________> Artist 3\Album 2
Artist 4\fanart.jpg <_______ Artist 4 *****|____> Artist 3\Album 3
***************************|___________>Artist 4\Album 4



Everything is perfect, except that Artist 2 has no link to its fanart.
Now how can figure where its fanart is?

a couple of obvious guesses are
1) Look in the root of each music source for a Artist 2\folder.jpg
2) Look at any album that Artist 2 points to, and look in the sibling of that album's parent folder

The logic about who to nominally assign the album to is already fine, it's ALL working perfectly as is (with some sexy and intelligent logic)...it's just this damn fanart for Artist 2.

Incidentally, I can manually assign the Fanart to Artist 2 and this works, or I can just make sure there's an mp3 below Artist 2. But I think it's doable to have this automated.

I am no proposing any logic change to how artists or albums are assigned, just a logical assumption on where to find the artwork for additional artists


You are absolutely right about the spelling isues... BUT, those issues still exist if some idiot uses the tag ACDC and AC-DC... they get multiple artist entries in the DB, so I don't see why this is any worse looking for a sibling folder (with same name as Artist 2). No harm done if it's not found
Reply
#10
yes sure. and i'm asking you how to do that logic without chances of doing errors. currently, it is very unlikely to do an error, but unfortunately, as you have noticed, it won't work in these cases. just to make sure you are on the same page as to how it works;

scenario's where it works;

scenario 1:
artist has songs registered in one path;
somepath/artist1/album1

in this case we make an assumption that we have this layout and look for the fanart in the parent folder of the song registered path.

scenario2:
artist has songs in several paths assigned, but they all share a common parent dir.
somepath/artist1/album1/
somepath/artist1/album2/

here we can deduce that the artist path is the largest common match in those paths;
somepath/artist1/

scenario where it does not work (your scenario);
songs in several paths with the largest common path not being the artist path;
somepath/artist1/album1/
somepath/artist2/album1/

in this case the largest common path is somepath. now, we could do as you said, use the folder names and hope they match the artist name. this is error prone. i don't want error prone code. if we do your other suggestion, look in the parent dir's of any single registered path, artist1 might end up with the fanart stored in somepath/artist2/ - definitely not what we want - error prone.
Reply
#11
yes sure. and i'm asking you how to do that logic without chances of doing errors. currently, it is very unlikely to do an error, but unfortunately, as you have noticed, it won't work in these cases. just to make sure you are on the same page as to how it works;

scenario's where it works;

scenario 1:
artist has songs registered in one path;
somepath/artist1/album1

in this case we make an assumption that we have this layout and look for the fanart in the parent folder of the song registered path.

scenario2:
artist has songs in several paths assigned, but they all share a common parent dir.
somepath/artist1/album1/
somepath/artist1/album2/

here we can deduce that the artist path is the largest common match in those paths;
somepath/artist1/

scenario where it does not work (your scenario);
songs in several paths with the largest common path not being the artist path;
somepath/artist1/album1/
somepath/artist2/album1/

in this case the largest common path is somepath. now, we could do as you said, use the folder names and hope they match the artist name. this is error prone. i don't want error prone code. if we do your other suggestion, look in the parent dir's of any single registered path, artist1 might end up with the fanart stored in somepath/artist2/ - definitely not what we want - error prone.
Reply
#12
Something doesn't ring right there...

IF The largest common path for artist 1 (Somepath\Artist 1\) is deduced from the most common path:

Somepath\Artist 1\Album 1
Somepath\Artist 1\Album 2


Then

If artist 2's paths are...

Somepath\Artist 1\Album 1

Why isn't artist 2 picking up artwork from Somepath\Artist 1\fanart.jpg? since this is the largest common path. (this would of course be wrong, but somewhere in your code, I'm guessing you don't bother looking for fanart for additional artists)

Assuming for the moment, you're simply skipping the fanart logic for all additional artists, and you were to add it... then the logic for 'additional' artists would have to be different and be:

a) If the artist already has an art assigned, leave it.
b) If it doesn't... try the sibling logic
Reply
#13
We are definitely getting somewhere now...

I do see your common path logic, so see your issue, but I think we can overcome it...

When I say "we" I do of course mean you lol


I definitely agree with you that we cannot have ropey logic that is very hit and miss and prone to error. Clearly the number one thing that must NEVER happen, is pointing to the wrong artwork (none is better than wrong).
Reply
#14
One last thing...

If the fanart is found at the largest common path...

how come when there's only one album, it's still found in the parent folder (Artist 1)?

\Somepath\Artist 1\Album 1\
Reply
#15
uh? i explained that.
Reply

Logout Mark Read Team Forum Stats Members Help
Fan art issue with multi-artists...0