• 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 11
v18 Implemented feature request for Music library extended artwork support
#46
I saw the Movie DB scraper got updated so in preperation for the music side of things, I added for music 2 new types of artwork:

ArtistHDClearArt
Image

ArtistWideThumb
Image

Now Lets build on this awesome work with some beautiful skins for music Smile
Reply
#47
I've tested this and it all looks good except multiple artists: only the first artist and album artist are included.

Below is a result of the JSON-RPC method GetSongDetails. Kodi identifies two song artists and two album artists (and does have artwork for both), but is only including artwork for the first of each. The URLs are truncated so it's not clear from this, but `albumartist` is artwork for Rush and `artist` is artwork for Pink Floyd.

json:
{
  "songdetails": {
    "album": "2112",
    "albumartist": [
      "Rush",
      "Pink Floyd"
    ],
    "albumartistid": [
      2,
      4
    ],
    "art": {
      "album.discart": "image://http%3a%2f%2fwww.theaudiodb.com%2fimages%2fmedia%2f…",
      "album.thumb": "image://C%3a%5cUsers%5crmrec%5cMusic%5cFake%20music%5cRush%…",
      "albumartist.banner": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "albumartist.clearlogo": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "albumartist.fanart": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "albumartist.fanart1": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "albumartist.fanart2": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "albumartist.thumb": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f5…",
      "artist.banner": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…",
      "artist.clearart": "image://http%3a%2f%2fmedia.theaudiodb.com%2fimages%2fmedia%…",
      "artist.clearlogo": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…",
      "artist.fanart": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…",
      "artist.fanart1": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…",
      "artist.fanart2": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…",
      "artist.thumb": "image://https%3a%2f%2fassets.fanart.tv%2ffanart%2fmusic%2f8…"
    },
    "artist": [
      "Pink Floyd",
      "Rush"
    ],
    "artistid": [
      4,
      2
    ],
    "label": "The Twilight Zone",
    "musicbrainzalbumartistid": [
      "534ee493-bfac-4575-a44a-0ae41e2c3fe4",
      "83d91898-7763-47d7-b03b-b92132375c47"
    ],
    "musicbrainzartistid": [
      "83d91898-7763-47d7-b03b-b92132375c47",
      "534ee493-bfac-4575-a44a-0ae41e2c3fe4"
    ],
    "songid": 3,
    "title": "The Twilight Zone"
  }
}
Reply
#48
Thanks Ryan, issue is that I accidentally left a bool parameter as "true" (only get primary artist) when it needs to be "false". I'll get a new test build up later today with this correctly enabled.

Here we are: 20180119-cb3fad80-PR13352 (a win64 build).
If this tests OK for you then I'll merge the PR
Reply
#49
I'm trying to see how a skin is to get the new art into the db.  For video, dialogVideoInfo control button 10 sends a message that has the dialog call OnGetArt.  This call opens a select dialog that shows all existing arttypes defined for that content type and allows user to set art for an existing arttype and/or define a new arttype.  But in dialogMusicInfo control button 10 instead calls OnGetThumb which only looks for thumb arttype.   Users need to be able to create new arttypes and assign art from the GUI.

I'm also not sure how a skin associates a role artist thumb art with a specific role artist in the info dialogs.

scott s.
.
Reply
#50
Scott, at this point the only ways to set extra art for music items is either via JSON API or Python script calls.
 
Quote:Users need to be able to create new arttypes and assign art from the GUI.
Yes I know. I am currently working to change the music info dialogs so that the "Get Thumb" and "Get Fanart" buttons are replaced by one "Get Art" button, thus provide a manual way for users to set this art too. At the same time I am moving data fetching from the main thread hence avoiding problems with data access from locking the UI and leaving the user stuck. Step by step... Smile
 
Quote:I'm also not sure how a skin associates a role artist thumb art with a specific role artist in the info dialogs.

On the song info dialog control 50 lists artists, so use Container(50).Listitem.Art(thumb) to get artist thumbs or Container(50).Listitem.Art(fanart) for fanart etc.

On the artist info dialog the control 50 list is of albums, and so you can use Container(50).Listitem.Art(thumb) to get album covers, or say Container(50).Listitem.Art(artist.fanart) to get any album artist fanart if there is any.

It will get documented (well in the skin updates post) once PR is merged.
Reply
#51
That's the ticket, artwork for multiple artists are visible now. Ohh, Container.Art(artist1.*) is still missing for skins when viewing the list of songs for one album with multiple album artists, though they are available on the album ListItem that was navigated from. It looks like Container is packing the artists together into just artist.*; artwork for the second artist is included if the first artist doesn't have that art type.
Reply
#52
Thanks for the extended testing Ryan.
(2018-01-20, 02:15)rmrector Wrote:  Ohh, Container.Art(artist1.*) is still missing for skins when viewing the list of songs for one album with multiple album artists, though they are available on the album ListItem that was navigated from.
Yeap, got it thanks. Will fix and get yet another test build up later today.Humm... are you sure? As best I can see artist1.* art is there when the song has more than one artist.  Note when list content is songs, the second album artist art is albumartist1.* (what was in artist1.* for the albums list)

I could do with a skin mod to help me test this, but I guess that is what you are doing, and having another pair of eyes on it is even better. But what shows via JSON is also what is there for the skin, they use the same routine, and I can see the art via JSON.

I think this is OK, and you were just looking in the wrong place.

EDIT: yeap, I hacked Confuence (I really don't know what I am doing with skinning) and multiple song/album artists is working as intended. Smile
Reply
#53
So I have merged https://github.com/xbmc/xbmc/pull/13352 thanks all for testing, feedback etc.

Now onwards with the music info dialogs, and making manual setting of music art possible too.
Reply
#54
Thanks.  Was wanting to test or see what skin mods I need but couldn't figure out an easy way to get any art into the database first (other than artist thumbs whichI need to play around with).

scott s.
.
Reply
#55
I've double checked and I'm still seeing this problem, with Container.Art() only, not ListItem.Art. Container.Art() should generally be filled with the ListItem art that was navigated into, so in this case it would be the album containing the songs in the list. Albums have "artist.*" so they should be available here, not "albumartist.*".

Here is a quick hack to Estuary demoing the problem I see. When viewing a list of albums, the URLs for "artist.thumb" and "artist1.thumb" from the focused album ListItem are visible at the top (first screenshot), then when navigating into the album, the same URLs from the Container (which is the album) should be visible, but artist1 is missing (second screenshot).
Reply
#56
Ah, thanks for clear examples Ryan. My bad, I was looking at ListItem.Art().

To be honest Container confuses me, and I would love to be pointed at something that documents what it is designed to do. All I have is what was implemented before, I can't deduce it from that what it is meant to be doing. You say "Container.Art() should generally be filled with the ListItem art that was navigated into", but if that is the requirement then I am not sure how best to achieve it.

There are many UI navigation routes to a list of songs, even those on an album, all one can say for sure is that a list of songs will have selection parameters (defined by a mix of ids in the vfs path, and options at the end of it including playlist/filter rules in xml) that define what songs are in the list. The songs may have the same album artist(s), or they may not. From your perspective you clicked on an album and now see the songs so the "container" is obviously the album, but internally it would mean parsing the selection parameters and deciding what common properties the items in the list (hence the container) have.

Now I can do that for sure, but in doing so I feel we are adding new functionality. Hence I like to discuss it. Smile
Reply
#57
Right, "generally" isn't very descriptive. I don't want to change when it pulls up Container artwork, just that whenever it does, it splits up album artists to "artist.*" and "artist#.*" like the ListItem. Container artwork seems to be included only when the basic VFS path points to an album or artist, and it only uses the last ID in the VFS: no matter which artist ID I use/see in the VFS path, when navigating to an album through the Container, it always picks artist artwork from artists in the order defined on the album.

Well, I hadn't wanted to spend much more of your time on this, but maybe it could be changed so that Container.Art uses the artist ID in the VFS path rather than those attached to the album. This would give skins a way to keep artist artwork the same as the user navigated into the artist's albums, rather than changing if the navigated artist is listed second for an album. In this case there wouldn't be any "artist#.*" art, just the one artist identified from the VFS path.
Reply
#58
Ryan, it has taken me a while to see where the (partial) container art on the songs screen was being set. Now I can see that there is a small flaw in my implementation that is removing the second and subsequent artists. A fix will happen in due course. Thanks for encouraging me to find this. Smile
 
Quote:Container artwork seems to be included only when the basic VFS path points to an album or artist, and it only uses the last ID in the VFS: no matter which artist ID I use/see in the VFS path, when navigating to an album through the Container, it always picks artist artwork from artists in the order defined on the album.
Yes that is what happens.
If the path has an album id then that is used to get album and album artist(s) art, otherwise an artist ID is looked for and that used to get artist art.
 
Quote:...maybe it could be changed so that Container.Art uses the artist ID in the VFS path rather than those attached to the album. This would give skins a way to keep artist artwork the same as the user navigated into the artist's albums, rather than changing if the navigated artist is listed second for an album. In this case there wouldn't be any "artist#.*" art, just the one artist identified from the VFS path.
I see what you mean. So to use your example say you art looking at albums by artist "Pink Floyd", and click on the "2112" album that is a collaboration with "Rush", when the list of songs is shown the container only has artist art for "Pink Floyd" (along with album art of course), even though each song will have albumartist art for both "Rush" (the primary) and "Pink Floyd".

I was going to say that the skin knows where you came from because it can see the vfs path too, so could pick which album artist to use if it wanted, but of course it can not tell from artist ID which artist.* or artist#.* to use.

I think my only hesitation is you will have the container art varying even more depending on how you have navigated to songs. But it does make sense given the idea that the container provides access to the art of the parent.

Now I have found the right bit of code don't worry it won't take too much of my time to implement (if we decide this is the best way to go).
Reply
#59
Something is wrong, with test build all was working good but since was merged : 

$INFO[Player.Art(artist.clearlogo)] doesn't work
$INFO[Player.Art(artist.banner)] doesn't work
$INFO[Player.Art(artist.clearart)] doesn't work

For ListItem in library and on dialog music info : $INFO[ListItem.Art(artist.banner)] not working on albums and songs windows, working with $INFO[Container.Art(artist.banner)], same for clearlogos, fanarts, extrafanarts etc...

$INFO[Container.ListItem.Art(artist.clearlogo)] have stopped to work with albums in widgets list on home window, ok with artists, same for multi fanarts.
 Estuary MOD V2 
Reply
#60
Having warmed to the idea of container art depending on path, there is a test build available 20180121-31c849f5-NavContainerArt that does that.

Navigate direct to albums then songs and container art for "2112" would have both "Rush" and "Pink Floyd".
Get there via artist (so id in path) and container art includes only that artist not the other.

Try it out Ryan. Smile
Reply
  • 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 11

Logout Mark Read Team Forum Stats Members Help
Implemented feature request for Music library extended artwork support0