Using a Playlist as background for a Menu Item - Skip Empty Fanart
#1
Hello All,

In Amber I provide the user the ability to select a playlist as the background for a menu item.  This works well, except that if a movie in the playlist does not have fanart, then a black background will be shown.  Does anybody know of a way to do this, skipping empty fanarts in the playlist? In other words, I do not want to see the black background for the movie(s) that do not have fanart, I want to skip them.  Any help would be greatly appreciated.

I thought that the below would work, but it does not.  (ideas taken from @rmrector 's documentation for Artwork Beef).

This are the list and fadelabel I am using for the playlist background:

xml:

<control type="list" id="9988">
            <description>hidden container for playlist background</description>
            <posx>-20</posx>
            <posy>-20</posy>
            <width>1</width>
            <height>1</height>
            <include>AutoscrollTime</include>
            <itemlayout />
            <focusedlayout />
            <content sortby="random" limit="50">$INFO[Container(300).ListItem.Property(backgroundPlaylist)]</content>
        </control>
        
        <control type="fadelabel" id="398045">
            <description>Randomizer for playlist fanart</description>
            <top>-1000</top>
            <width>1</width>
            <height>1</height>
            <info>Container(9988).ListItem.Art(fanart)</info>
            <info>Container(9988).ListItem.Art(fanart1)</info>
            <info>Container(9988).ListItem.Art(fanart2)</info>
            <randomize>true</randomize>
            <pauseatend>15000</pauseatend> <!-- Time to show each image, in milliseconds -->
            <scroll>false</scroll>
            <scrollout>false</scrollout>
            <resetonlabelchange>true</resetonlabelchange>
        </control>

And I have a VAR, HomeBackground, that has this value when the background for the menu item is a playlist:

xml:

<variable name="HomeBackground">
        <value condition="!Skin.HasSetting(Home_DefaultBG) + [ControlGroup(700).HasFocus + [!String.IsEmpty(Container(300).ListItem.Property(WidgetType)) + String.IsEmpty(ListItem.Property(recommendedtvshowtitle)) + String.IsEmpty(ListItem.Property(nextairedtvshowtitle))] + !String.IsEmpty(Container.ListItem.Art(fanart)) + $EXP[WidgetFanartVisible]]">$INFO[Container.ListItem.Art(fanart)]</value>
        <value condition="!Skin.HasSetting(Home_DefaultBG) + [ControlGroup(700).HasFocus + !String.IsEmpty(ListItem.Property(nextairedtvshowtitle)) + !String.IsEmpty(ListItem.Property(nextairedfanart)) + $EXP[WidgetFanartVisible]]">$INFO[ListItem.Property(nextairedfanart)]</value>
        <value condition="!Skin.HasSetting(Home_DefaultBG) + [ControlGroup(700).HasFocus + !String.IsEmpty(ListItem.Property(recommendedtvshowtitle)) + !String.IsEmpty(ListItem.Property(recommendedfanart)) + $EXP[WidgetFanartVisible]]">$INFO[ListItem.Property(recommendedfanart)]</value>
        <value condition="Skin.HasSetting(Home_DefaultBG) + !String.IsEmpty(Skin.String(Default.Background))">$INFO[Skin.String(Default.Background)]</value>
        <value condition="Skin.HasSetting(Home_DefaultBG)">special://skin/backgrounds/Default.jpg</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),Movie.Fanart)">$INFO[Container(12341).ListItem.Art(fanart)]</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),TV.Fanart)">$INFO[Container(12342).ListItem.Art(fanart)]</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),Video.Fanart)">$INFO[Container(12343).ListItem.Art(fanart)]</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),Music.Fanart)">$INFO[Container(12345).ListItem.Art(fanart)]</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),Global.Fanart)">$INFO[Container(12344).ListItem.Art(fanart)]</value>
        <value condition="String.IsEqual(Container(300).ListItem.Property(background),Weather.Fanart)">$INFO[Skin.String(weatherfanartResource.path)]$INFO[Window(Weather).Property(Current.FanartCode)]$VAR[WeatherBackgroundExt]</value>
        <value condition="!String.IsEmpty(Container(300).ListItem.Property(background)) + String.IsEmpty(Container(300).ListItem.Property(backgroundPlaylist))">$INFO[Container(300).ListItem.Property(background)]</value>
<!--        <value condition="!String.IsEmpty(Container(300).ListItem.Property(background)) + !String.IsEmpty(Container(300).ListItem.Property(backgroundPlaylist))">$INFO[Container(9988).ListItem.Art(fanart)]</value> -->
        <value condition="!String.IsEmpty(Container(300).ListItem.Property(background)) + !String.IsEmpty(Container(300).ListItem.Property(backgroundPlaylist))">$INFO[Control.GetLabel(398045)]</value>
    </variable>

As you can see from the code snippet, I also tried without the fadelabel, but that also shows black backgrounds for movies with no fanart.

Another related point that I cannot figure out, the first time I focus any menu item that has a playlist as background, I see a black background, and then after a short time, the fanarts start appearing.  This does not happen when I choose random movie fanart as background, which I am doing using this list:

xml:

<!-- Hidden list for movies fanart background -->
        <control type="list" id="12341">
            <content sortby="random" limit="50">videodb://movies/titles/</content>
            <include>AutoscrollTime</include>
            <itemlayout />
            <focusedlayout />
            <posx>-20</posx>
            <posy>-20</posy>
            <width>1</width>
            <height>1</height>
        </control>

Any ideas why that is?

Again, thank you for any help.

Regards,

Bart
Reply
#2
Anyone?
Reply
#3
seen info that my help
https://forum.kodi.tv/showthread.php?tid=353326

could you do a fallback image
xml:
<control type="image">
                        <left>30</left>
                        <width>242</width>
                        <height>202</height>
                        <aspectratio align="center" aligny="center">keep</aspectratio>
                        <texture fallback="DefaultTVGuide.png">$INFO[ListItem.Icon]</texture>                
                        <visible>!Player.HasVideo</visible>
                        <visible>String.IsEmpty(Control.GetLabel(25000))</visible>
                    </control>
                    <control type="image" id="25000">
                        <left>30</left>
                        <width>242</width>
                        <height>202</height>
                        <aspectratio align="center" aligny="center">keep</aspectratio>
                        <texture>$VAR[PVRArtworksVar]</texture>                
                        <visible>!Player.HasVideo</visible>
                    </control>
Reply

Logout Mark Read Team Forum Stats Members Help
Using a Playlist as background for a Menu Item - Skip Empty Fanart0