tube82 73 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
im85288 1493 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 (edited) 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 April 29, 2014 by xnappo Link to comment Share on other sites More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 (edited) 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 April 29, 2014 by tube82 Link to comment Share on other sites More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 I'll check how they are called in skins. Link to comment Share on other sites More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 (edited) 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 April 29, 2014 by tube82 Link to comment Share on other sites More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
im85288 1493 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 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> 1 Link to comment Share on other sites More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 (edited) 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 April 29, 2014 by xnappo Link to comment Share on other sites More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 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 1 Link to comment Share on other sites More sharing options...
tube82 73 Posted April 29, 2014 Author Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 A very good question - hopefully @@im85288 can enlighten us Link to comment Share on other sites More sharing options...
im85288 1493 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 (edited) 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 April 29, 2014 by xnappo Link to comment Share on other sites More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
xnappo 1593 Posted April 29, 2014 Share Posted April 29, 2014 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 More sharing options...
tube82 73 Posted April 30, 2014 Author Share Posted April 30, 2014 (edited) 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 April 30, 2014 by tube82 Link to comment Share on other sites More sharing options...
xnappo 1593 Posted April 30, 2014 Share Posted April 30, 2014 (edited) 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 April 30, 2014 by xnappo Link to comment Share on other sites More sharing options...
xnappo 1593 Posted April 30, 2014 Share Posted April 30, 2014 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 More sharing options...
im85288 1493 Posted April 30, 2014 Share Posted April 30, 2014 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 More sharing options...
xnappo 1593 Posted April 30, 2014 Share Posted April 30, 2014 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 More sharing options...
xnappo 1593 Posted May 2, 2014 Share Posted May 2, 2014 (edited) 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 May 2, 2014 by xnappo 1 Link to comment Share on other sites More sharing options...
Recommended Posts