Kodi Community Forum

Full Version: Poster Artwork INFO LABELS with Flatten TV Shows Season(s) & UNWATCHED View Option
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Found a strange bug/feature/issue with poster artwork in views with "unwatched" (most likely watched also) option/filter enabled and Flatten TV Show Seasons set to Always or If only 1 season.

Opened a ticket but wondered if anyone had noticed this and used a clever work around at the skin level.

https://trac.kodi.tv/ticket/17849

The season artwork info labels from what I have observed get set to (always) season 1 in a multi season show still others set to NULL, with a couple being set to the default show poster.

Here is what you get with Unwatched views at the Episode level:

Image
Image
Image
In case you wanted to review the skin code the poster artwork shown in the example screenshots is set by the following skin xml files but as mentioned is not isolated to this skin:

Episode Poster artwork shown by MyVideoNav:

https://github.com/Guilouz/repository.gu...deoNav.XML

With Fanart view:

https://github.com/Guilouz/repository.gu...FanArt.XML

Supporting XML Includes / Variables:

https://github.com/Guilouz/repository.gu...iables.xml

https://github.com/Guilouz/repository.gu...cludes.xml

I feel bad for driving Cyril crazy along with me in trying to find the root cause of this issue.   *(Thanks for hanging in there with me Cyril!)
This is likely due to the skin pulling artwork from the container with "Container.Art(season.poster)" instead of the focused listitem with "ListItem.Art(season.poster)".

Skins should generally pull artwork from the ListItem first, even in cases like this when they intend to display artwork from a "parent" kind of media, like season or TV show or artist. There are a few other situations where "Container.Art" won't have the artwork you expect, or may be completely empty, but "ListItem.Art()" is populated with all parent artwork except movie "set" artwork (and there's a current PR to include that), including the music library in Kodi 18 Leia.
(2018-04-21, 09:38)rmrector Wrote: [ -> ]This is likely due to the skin pulling artwork from the container with "Container.Art(season.poster)" instead of the focused listitem with "ListItem.Art(season.poster)".

Skins should generally pull artwork from the ListItem first, even in cases like this when they intend to display artwork from a "parent" kind of media, like season or TV show or artist. There are a few other situations where "Container.Art" won't have the artwork you expect, or may be completely empty, but "ListItem.Art()" is populated with all parent artwork except movie "set" artwork (and there's a current PR to include that), including the music library in Kodi 18 Leia.
I am pretty sure it's a bug - at the Episode Level $INFO[ListItem.Art(poster)] is NULL

Before I traced the reproducible behavior to the Flatten TV Season I did a test of watched and unwatched with a familiar tool:

https://github.com/rmrector/webinterface.devhelper   😊🙃

Here are the result of the various INFO labels with above settings combined with Flatten if 1 Season setting:
(btw - for a tv show with say 3 or 5 seasons - the flatten if only 1 season setting is not really true to it's "wording")

List Item (highlighted) is Episode 02 of Season 03 of The Expanse

Code:
$INFO[ListItem.Art(poster)]

At the TV Show Level                \TVShows\The Expanse (2015)\poster.jpg

At the TV Season Level              \TVShows\The Expanse (2015)\season01-poster.jpg
                                    \TVShows\The Expanse (2015)\season02-poster.jpg
                                    \TVShows\The Expanse (2015)\season03-poster.jpg

At the TV Episode Level             Empty (Not Set)

Unwatched:

Container.Art(season.poster)                    \TVShows\The Expanse (2015)\season01-poster.jpg
Container.Art(thumb)                            \TVShows\The Expanse (2015)\season01-poster.jpg

Container.Art(tvshow.poster)                    \TVShows\The Expanse (2015)\poster.jpg
Container.ListItem.Art(season.poster)           \TVShows\The Expanse (2015)\season03-poster.jpg
Container.ListItem.Art(tvshow.poster)           \TVShows\The Expanse (2015)\poster.jpg
ListItem.Art(season.poster)                     \TVShows\The Expanse (2015)\season03-poster.jpg
ListItem.Art(tvshow.poster)                     \TVShows\The Expanse (2015)\poster.jpg

All:

Container.Art(season.poster)                    \TVShows\The Expanse (2015)\season03-poster.jpg
Container.Art(thumb)                            \TVShows\The Expanse (2015)\season03-poster.jpg

Container.Art(tvshow.poster)                    \TVShows\The Expanse (2015)\poster.jpg
Container.ListItem.Art(season.poster)           \TVShows\The Expanse (2015)\season03-poster.jpg
Container.ListItem.Art(tvshow.poster)           \TVShows\The Expanse (2015)\poster.jpg
ListItem.Art(season.poster)                     \TVShows\The Expanse (2015)\season03-poster.jpg
ListItem.Art(tvshow.poster)                     \TVShows\The Expanse (2015)\poster.jpg


take a peek at MyVideoNav where the poster artwork is being set that behaves oddly.  I should also mention that if you are in the ALL view, then while on an unwatched Episode, you change to UNWATCHED - pressing (BACK) will change the poster to Season 1 (and not actually go BACK) and require another (BACK) to leave the Episode Level.

I'd be curious what you think after you witness the behavior yourself.

Thanks for the reply!

Mario
btw I forgot to say I saw your reply to the following post

https://forum.kodi.tv/showthread.php?tid=327128

where you suggested ListItem.Art(poster) is the INFO label to use as it should also always be a safe fallback image to use but as I found out it can get set to NULL in various conditions.

skin.estuary.modv2\xml\MyVideoNav.xml currently is using this label for the poster artwork btw:

Code:
    Line 229:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 241:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 284:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 296:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 330:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 342:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 428:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>
    Line 440:          <texture background="true" fallback="DefaultVideoCover.png">$INFO[ListItem.Art(poster)]</texture>


FUN Fun fun!  hehe

M
Nope. I suggested "ListItem.Art(season.poster)", and "ListItem.Art(tvshow.poster)" is also available in your output; episodes rarely have posters themselves, so Art(poster) should be empty.

It's important for skins to specify the parent when they want images from it. Kodi does fallback a couple of artwork types (just fanart and thumb I think), but skinners can use variables for greater control of exactly what to show and when.
(2018-04-23, 22:29)rmrector Wrote: [ -> ]Nope. I suggested "ListItem.Art(season.poster)", and "ListItem.Art(tvshow.poster)" is also available in your output; episodes rarely have posters themselves, so Art(poster) should be empty.

It's important for skins to specify the parent when they want images from it. Kodi does fallback a couple of artwork types (just fanart and thumb I think), but skinners can use variables for greater control of exactly what to show and when.
Regardless of which INFO label I have used (tried many permutations) when you have flatten tv seasons set to only if 1 season and the view option set to unwatched the season info labels for MyVideoNav do not give the proper season artwork.

I would love someone to actually test this out themselves instead of hypothesise on the cause I am convinced this is a bug or at the very least not expected behaviour.
  • Set up a test muti season tv show
  • mark all but the last episode watched
  • set the view to one that shows the season poster at the episode level
  • set the view to unwatched
  • go to that episode (should only show one upon entering tv show)

what poster artwork for the season do you see at the episode level?
In Leia ListItem.Art(poster) is empty, ListItem.Art(season.poster) is fine here. That is with and without flatten hierarchy as well as what you suggested.
I *think* it use to be true includes only get checked on load, so maybe your image is pulled before it is loaded into the include if that makes sense. BUT this may be a red herring from me Big Grin

Image