Jump to content

[Feature request] Additional fanarts/backdrops


tube82
 Share

Recommended Posts

Some XBMC skins support additional backdrops, although I think they use a XBMC addon because XBMC doesn't support them natively. Since MB3 also supports multiple backdrops I thought it would be nice to have acces to them as well.

 

Any comments? Possible? Worth it? :)

Link to comment
Share on other sites

Yes this is already supported, if you try the Aeon Nox MB3 skin you can set the movies section for example to show random fanart from your movies. 

Link to comment
Share on other sites

Definitely would like to see this.  How does it work in the skins?

 

The meta-data we get back does indeed contain multiple images, so it is a matter of interfacing to the skins.

 

@ - further comments on this subject?

@@im85288 - I think he is referring to rotating art for individual shows/movies.  And did you mean try AeonMQ5?

 

xnappo

Edited by xnappo
Link to comment
Share on other sites

I think I mean something else. What I am thinking of are multiple backdrops of the same movie/show.

 

E.g. in Arctic when you are in a TV show view you can enable 'Use extrafanart' in the view options. In XBMC mode (with additionally downloaded backdrops) this leads to a roation of backdrops for the specific show.

 

[edit]

xnappo was faster ;)

Edited by tube82
Link to comment
Share on other sites

This is what I found in Arctic:

    <variable name="extrafanart.path">
    	<value condition="Skin.HasSetting(tvshows.use.extrafanart) + [Container.Content(tvshows) | Container.Content(seasons)]">$INFO[ListItem.Path,,extrafanart/]</value>
    	<value condition="Skin.HasSetting(tvshows.use.extrafanart) + Container.Content(episodes)">$INFO[ListItem.Path,,../extrafanart/]</value>
    	<value condition="Skin.HasSetting(music.use.extrafanart) + [Container.Content(albums) | Container.Content(artists) | Container.Content(songs)]">$INFO[Skin.String(cdartlocation)]$INFO[ListItem.Artist,,extrafanart/]</value>
    	<value condition="Skin.HasSetting(movies.use.extrafanart) + [Container.Content(movies)]">$INFO[ListItem.Path,,extrafanart/]</value>
    	<value>-</value>
    </variable>
Edited by tube82
Link to comment
Share on other sites

This looks like where they are grabbing the physical path to the extrafanart(yikes).  Need to look where the variable 'extrafanart.path' actually gets used.

 

xnappo

Link to comment
Share on other sites

Sorry yes I did mean Aeon MQ5 and did not grasp what you meant initially. That's not supported and would be an interesting feature to have if possible.

Link to comment
Share on other sites

This looks like where they are grabbing the physical path to the extrafanart(yikes).  Need to look where the variable 'extrafanart.path' actually gets used.

 

xnappo

 

it only is used once:

<control type="multiimage">
            <aspectratio>scale</aspectratio>
            <include>FullscreenDimensions</include>
            <timeperimage>9000</timeperimage>
            <randomize>true</randomize>
            <fadetime>600</fadetime>
            <loop>yes</loop>
            <animation type="Visible">
            	<effect type="slide" start="0" end="0" time="1400"/>
            	<effect type="fade" start="0" end="100" delay="800" time="600"/>
            </animation>
            <include>Animation_FanartFade</include>
            <imagepath background="true">$VAR[extrafanart.path]</imagepath>
            <animation effect="zoom" start="110" end="130" center="auto" time="10000" tween="sine" easing="inout" pulse="true" condition="Skin.HasSetting(Fanart.Animate)">Conditional</animation>
            <animation effect="slide" start="-30,-30" end="30,30" time="6000" tween="sine" easing="inout" pulse="true" condition="Skin.HasSetting(Fanart.Animate)">Conditional</animation>
            <visible>!SubString(Container.FolderPath,plugin://,left) + !Skin.HasSetting(HideFanart) + ![Skin.HasSetting(BackgroundVideo) + Player.HasVideo] + !Window.IsActive(favourites)</visible>
            <visible>[Skin.HasSetting(tvshows.use.extrafanart) + [Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes)]] | [Skin.HasSetting(movies.use.extrafanart) + Container.Content(movies)] | [Skin.HasSetting(music.use.extrafanart) + [Container.Content(albums) | Container.Content(artists) | Container.Content(songs)]]</visible>
        </control>
  • Like 1
Link to comment
Share on other sites

So the good news is that it looks like this thing just looks for a path with a bunch of images in it - which is do-able.

 

The bad news is I don't like the way I can think of to do it - downloading to a local directory with the item id.

 

Any other ideas guys?

 

xnappo

Edited by xnappo
Link to comment
Share on other sites

Well, how would you do it if you didn't have to keep it the way it is done in the skin?

Since it is not even a XBMC native feature I don't see any harm in implementing something different instead of the code I posted. It is all done directly in the skin anyway.

 

Skins would have to be changed, but nothing breaks for skins without the feature.

Link to comment
Share on other sites

But the thing is they are using a native XBMC control called 'multiimage'.  The argument for multiimage is a path, whereas what we would want to send would be a list of image URLs.

 

http://wiki.xbmc.org/?title=MultiImage_Control

 

Again - this is actually pretty easy if we don't mind copying the images to the local drive. 

 

xnappo

  • Like 1
Link to comment
Share on other sites

Ah I see. How do they do it for rotating backdrops in the home screen, though? Those images are not from a path, are they?

Link to comment
Share on other sites

We do use MultiImageControls on the home screen and pass in a path such as: 

$INFO[Window(Home).Property(MB3.Background.Movie.FanArt)]

As this value updates in the background, the image changes. So we do already have a cache of all the Movies, Tv Shows, Music and a Global set but not on an individual movie basis.

Link to comment
Share on other sites

Okay - what I was missing is that we can change the input to the multiimagecontrol and use single image paths to the server.

 

So I think this is definitely do-able.  A lot of handshaking from script<->service<->skin.  Need to think about it.

 

xnappo

Link to comment
Share on other sites

So the way I am thinking this MIGHT work:

 

1. default.py sets the MB3 'id' as one of the pieces of list info

2. when the skin has an item selected, it sets a window property currID with list.id

3. a service monitors for currID, and sets another window property currIDImagePath which rotates images

4. skin set multi-image control to currIDImagePath - if we are in particular container types

 

Thoughts?  @ this is not all that dissimilar from what you are doing with Actors right?

 

xnappo

Edited by xnappo
Link to comment
Share on other sites

Yeah, I dropped that idea.  Now I am saying to it just like the 'All Movies'/'All TV' backdrop, except we need to know the currently selected listitem from the skin.

 

xnappo

Link to comment
Share on other sites

How does the current multi background work? does it cycle through the background as you have the item/movie selected or does it show a different background each time you selected it?

 

 

It cycles through them as the service changes the window property containing the path.

 

I can't think of any other way to do this - the skins can't really execute code of course.  It is in line with what we are already doing, just extending it to the item level.

 

xnappo

Link to comment
Share on other sites

The XBMC (or rather skin specific) implementation of extra fanart cycles through the additional images on a timer. It looks nice, because the static screen is less static this way.

Edited by tube82
Link to comment
Share on other sites

From what I can tell, the skins use a built-in function multiimage-control:

http://wiki.xbmc.org/?title=MultiImage_Control

 

There are two options for using it.  I believe right now the MQ5 rotating skin is passing a static URL to an image path, and having the service change the path periodically.

 

The other option is to have a path to a directory of images - that was the idea of copying the fanart to a temporary location and having the multi-image control reference that.  Note that this is NOT a permanent cache, it would be populated and deleted every time the list item selection changes.  Fanart load delay is more acceptable than other art.

 

Now - the XBMC documentation just says it needs to be a path.  Whether it will accept a list of HTTP paths I have no idea - haven't tried.  From the documentation, I am surprised the MQ5 solution is working - so who knows.

 

Unfortunately while I have time to ponder it and babble about it, I don't have time to code right now :)

 

xnappo

Edited by xnappo
Link to comment
Share on other sites

LOL hands off! I want to do it - just gathering inputs until I have some time. My understanding is @@im85288 is using it with URLs in his skins, but I may have misunderstood.

xnappo

Link to comment
Share on other sites

I was thinking maybe something more simple for skin integration.

 

Currently for just a plain "fanart" view we call the ListItem such as: 

$INFO[ListItem.Art(fanart)]

Maybe if we could set a property on the ListItem that when passed to a skin would behave similar to the ones we already provide for the home sections

$INFO[Window(Home).Property(MB3.Background.Movie.FanArt)]

eg.

$INFO[ListItem.Property(MB3.Fanart)]

We could possibly rotate/refresh this on the same schedule as already done for background images..or maybe have a new value in the settings.

Link to comment
Share on other sites

hmm - that would entail continously updating thousands of listitems in the background right? I think what I am suggesting is similar, but we provide the service the currently selected listitems.

xnappo

Link to comment
Share on other sites

I have a reasonable attempt of this working in the Git.

 

@, @@im85288, @@elcabong, @@tube82 : Simply use $INFO[Window(Home).Property(MB3.Background.Item.FanArt)].

 

Could use some refinement in terms of configurability and fallback image - but give it a whirl.

 

Implementation follows the other backdrops except it monitors xbmc.getInfoLabel('ListItem.FileNameAndPath').

 

xnappo

Edited by xnappo
  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...