2019-02-27, 20:54
Easy Way to implement Movie Set Collection Extrafanart the ArtworkBeef way
(Not so easy is that it's a lot of paste copy work in Movie Set folder structure)
IncludesTopMenu:
IncludesVariables.xml
MyVideoNav.xml
Of course you can also use the same fadelabel as for Movies/TvShows, but I wanted to do 2 things differently:
1) Since I only copied the main fanarts to the Movie Set fanarts, I have extended the time because most movie sets do not contain very many movies. (<pauseatend>10000</pauseatend>) instead 6000
2) Since I only copied the main fanarts to the Movie Set fanarts, I have set <randomize>false</randomize> instead of true, now the movie set fanarts are showing in chronological order, first is the main Set Fanart, second the first movie of the set, third the sequel and so on...
Advantages: No delay, everything is read in Kodi and therefore no disk access, you can assemble the set fanarts freely at will
Cons: ArtworkBeef help needed, lots of copy paste work
Result:
(Not so easy is that it's a lot of paste copy work in Movie Set folder structure)
IncludesTopMenu:
Code:
<control type="radiobutton" id="94101">
<!-- Extra Fanart Movies Sets AB-->
<include>TopMenuRadioButton</include>
<label>EXTRA FANART (AB)</label>
<onclick>Skin.SetString(setsfanart,artworkbeef)</onclick>
<selected>String.Contains(skin.string(setsfanart),artworkbeef)</selected>
<visible>Container.Content(sets) + !Skin.HasSetting(trailers)</visible>
</control>
IncludesVariables.xml
Code:
<variable name="value_videofanart">
<value condition="Container.Content(movies) + String.Contains(Skin.String(moviesfanart),fallback)">$INFO[Skin.String(CustomFallbackMoviesBG)]</value>
<value condition="Container.Content(movies) + String.Contains(Skin.String(moviesfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(movies) + String.Contains(Skin.String(moviesfanart),extra)">$INFO[ListItem.Path]extrafanart/</value>
<value condition="Container.Content(movies) + String.Contains(Skin.String(moviesfanart),artworkbeef)">$INFO[Control.Getlabel(4420)]</value>
<value condition="Container.Content(musicvideos) + String.Contains(Skin.String(musicvideosfanart),fallback)">$INFO[Skin.String(CustomFallbackMusicVideosBG)]</value>
<value condition="Container.Content(musicvideos) + String.Contains(Skin.String(musicvideosfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(musicvideos) + String.Contains(Skin.String(musicvideosfanart),extra)">$INFO[ListItem.Path]extrafanart/</value>
<value condition="Container.Content(tvshows) + String.Contains(Skin.String(tvshowsfanart),fallback)">$INFO[Skin.String(CustomFallbackTVShowsBG)]</value>
<value condition="Container.Content(tvshows) + String.Contains(Skin.String(tvshowsfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(tvshows) + String.Contains(Skin.String(tvshowsfanart),extra)">$INFO[ListItem.Path]extrafanart/</value>
<value condition="Container.Content(tvshows) + String.Contains(Skin.String(tvshowsfanart),artworkbeef)">$INFO[Control.Getlabel(4420)]</value>
<value condition="Container.Content(seasons) + String.Contains(Skin.String(seasonsfanart),fallback)">$INFO[Skin.String(CustomFallbackSeasonsBG)]</value>
<value condition="Container.Content(seasons) + String.Contains(Skin.String(seasonsfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(seasons) + String.Contains(Skin.String(seasonsfanart),extra)">$INFO[ListItem.Path,,extrafanart/]</value>
<value condition="Container.Content(seasons) + String.Contains(Skin.String(seasonsfanart),seasons)">$INFO[ListItem.Path]$INFO[ListItem.Label,,/fanart.jpg]</value>
<value condition="Container.Content(episodes) + String.Contains(Skin.String(episodesfanart),fallback)">$INFO[Skin.String(CustomFallbackEpisodesBG)]</value>
<value condition="Container.Content(episodes) + String.Contains(Skin.String(episodesfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(episodes) + String.Contains(Skin.String(episodesfanart),extra)">$INFO[ListItem.Path,,../extrafanart/]</value>
<value condition="Container.Content(episodes) + String.Contains(Skin.String(episodesfanart),seasons)">$INFO[ListItem.Path,,fanart.jpg]</value>
<value condition="Container.Content(sets) + String.Contains(Skin.String(setsfanart),fallback)">$INFO[Skin.String(CustomFallbackSetsBG)]</value>
<value condition="Container.Content(sets) + String.Contains(Skin.String(setsfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<value condition="Container.Content(sets) + String.Contains(Skin.String(setsfanart),extra)">$INFO[Window(Home).Property(SkinHelper.ListItem.Art.ExtraFanArt)]</value>
<value condition="Container.Content(sets) + String.Contains(Skin.String(setsfanart),artworkbeef)">$INFO[Control.Getlabel(4430)]</value>
<value condition="Container.Content(addons) + String.Contains(Skin.String(programsfanart),fanart)">$INFO[ListItem.Art(fanart)]</value>
<value condition="Container.Content(addons) + String.Contains(Skin.String(programsfanart),fallback)">$INFO[Skin.String(CustomFallbackProgramsBG)]</value>
<value condition="Container.Content(addons) + String.Contains(Skin.String(programsfanart),curtains)">special://skin/backgrounds/extras/curtains.jpg</value>
<!-- MULTI MOD -->
<value>$INFO[ListItem.Art(fanart)]</value>
<!-- MULTI MOD -->
</variable>
MyVideoNav.xml
Code:
<control type="fadelabel" id="4430">
<top>-2000</top>
<width>2560</width>
<height>0</height>
<scrollspeed>0</scrollspeed>
<scrollout>false</scrollout>
<font>Font-LineLabel</font>
<textcolor>white</textcolor>
<randomize>false</randomize>
<pauseatend>10000</pauseatend>
<resetonlabelchange>true</resetonlabelchange>
<label>$INFO[Container.ListItem.Art(fanart)]</label>
<label>$INFO[Container.ListItem.Art(fanart1)]</label>
<label>$INFO[Container.ListItem.Art(fanart2)]</label>
<label>$INFO[Container.ListItem.Art(fanart3)]</label>
<label>$INFO[Container.ListItem.Art(fanart4)]</label>
<label>$INFO[Container.ListItem.Art(fanart5)]</label>
<label>$INFO[Container.ListItem.Art(fanart6)]</label>
<label>$INFO[Container.ListItem.Art(fanart7)]</label>
<label>$INFO[Container.ListItem.Art(fanart8)]</label>
<label>$INFO[Container.ListItem.Art(fanart9)]</label>
<label>$INFO[Container.ListItem.Art(fanart10)]</label>
<label>$INFO[Container.ListItem.Art(fanart11)]</label>
<label>$INFO[Container.ListItem.Art(fanart12)]</label>
<label>$INFO[Container.ListItem.Art(fanart13)]</label>
<label>$INFO[Container.ListItem.Art(fanart14)]</label>
<label>$INFO[Container.ListItem.Art(fanart15)]</label>
<label>$INFO[Container.ListItem.Art(fanart16)]</label>
<label>$INFO[Container.ListItem.Art(fanart17)]</label>
<label>$INFO[Container.ListItem.Art(fanart18)]</label>
<label>$INFO[Container.ListItem.Art(fanart19)]</label>
<label>$INFO[Container.ListItem.Art(fanart20)]</label>
</control>
Of course you can also use the same fadelabel as for Movies/TvShows, but I wanted to do 2 things differently:
1) Since I only copied the main fanarts to the Movie Set fanarts, I have extended the time because most movie sets do not contain very many movies. (<pauseatend>10000</pauseatend>) instead 6000
2) Since I only copied the main fanarts to the Movie Set fanarts, I have set <randomize>false</randomize> instead of true, now the movie set fanarts are showing in chronological order, first is the main Set Fanart, second the first movie of the set, third the sequel and so on...
Advantages: No delay, everything is read in Kodi and therefore no disk access, you can assemble the set fanarts freely at will
Cons: ArtworkBeef help needed, lots of copy paste work
Result: