For the most part, skins will still access images in the same Kodi standard way.
Episode and season fanart may just work, depending on how your skin accesses them when listing
episodes or seasons. $INFO[ListItem.Art(fanart)]
pulls the episode or season backdrop if it exists,
otherwise, Kodi falls back to the series backdrop.
Extrafanart has been integrated into the library and no longer has to be in the file system,
but does require skins to access them differently. Extrathumbs can be similarly integrated.
Skins can gather multiple fanart for random display with a fadelabel
; see Fun without add-ons for an example.
Artwork Helper is a small add-on that skins can depend on to more easily gather fanart/thumbs for a
multiimage
control. It can still have a noticeable delay compared to directly accessing
other artwork with ListItem.Art(clearlogo)
(especially on Windows), so skins that have a greater
focus on fanart will probably prefer the plugin-free route.
Skins should not list Artwork Beef as a dependency, nor depend on its installation for displaying
artwork, as Artwork Beef isn’t the only one that can set these. Check for the existence of
fanart1
to tell if the ListItem has these multiple fanart.
The music library just got a “Kodi standard way” in Kodi 18. Skins can access all artwork from the
library just like they do from the video library. Prefixes for artwork like ‘artist.’ and ‘album.’
and ‘albumartist.’ pull up parent artwork from songs in the same way ‘tvshow.’ is used in the video
library. ‘artist.’ is also available for albums. discart
for multiple disc albums are a bit hairier,
as discs aren’t a separate media item in the Kodi library with their own place for artwork.
Artwork Beef will add separate discart as discart1
, discart2
, and so on to the album; use a variable like
below to pick the right one for a song ListItem.
<variable name="ListItemSongDiscart">
<value condition="Integer.IsEqual(ListItem.DiscNumber,1) + !String.IsEmpty(ListItem.Art(album.discart1))">$INFO[ListItem.Art(album.discart1)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,2) + !String.IsEmpty(ListItem.Art(album.discart2))">$INFO[ListItem.Art(album.discart2)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,3) + !String.IsEmpty(ListItem.Art(album.discart3))">$INFO[ListItem.Art(album.discart3)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,4) + !String.IsEmpty(ListItem.Art(album.discart4))">$INFO[ListItem.Art(album.discart4)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,6) + !String.IsEmpty(ListItem.Art(album.discart6))">$INFO[ListItem.Art(album.discart6)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,7) + !String.IsEmpty(ListItem.Art(album.discart7))">$INFO[ListItem.Art(album.discart7)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,8) + !String.IsEmpty(ListItem.Art(album.discart8))">$INFO[ListItem.Art(album.discart8)]</value>
<value condition="Integer.IsEqual(ListItem.DiscNumber,9) + !String.IsEmpty(ListItem.Art(album.discart9))">$INFO[ListItem.Art(album.discart9)]</value>
<value>$INFO[ListItem.Art(album.discart)]</value>
</variable>