Fanart Grabber - script for skinners

  Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #1
After hijacking the reFocus thread for far to long I created this to help with requests/bugs on a very simple Fanart Grabber addon I created. This started as something for personal use but after seeing discussions on the reFocus thread I felt it may be something others have been searching for.

What is Does:

In previous version of XBMC (pre-Frodo) fanart was stored in a central folder. This made it easy for skinners to point to this location to do fanart slideshows on the main xbmc pages, or wherever they wanted to load random fanart. With the new image caching system these images are no longer easily accessible for "slideshow" type displays. This addon is very simple in that it gets a list of all your available fanart (via JSON) and exposes it via Window Properties for skinners to access

How Does It Work:

By default the service will start up and start populating the Window properties automatically. For further customization there are a few parameters that can be tweaked via the Addon Settings or from skin by calling RunScript(script.grab.fanart,mode=recent|random, refresh=time in seconds)
  • Mode: Show recently added files or randomly grab from entire collection
  • Refresh: amount of time between refreshes of the window properties, default is 10 seconds

To integrate this with a skin you only need to reference the property you want to display. As the service updates the value it will change dynamically. right now the properties available are

script.grab.fanart.Global.Title - the title of a random music or video file, 30% chance music, 30% TV, 40% movie
script.grab.fanart.Global.FanArt - path to the fanart image for this media

script.grab.fanart.Video.Title - the title of a random video (movie or tv show). There is a 10% chance of this being a TV show.
script.grab.fanart.Video.FanArt - the path to the fanart image for this video
script.grab.fanart.Video.Poster - path to poster image for this video
script.grab.fanart.Video.Plot - plot outline of this video

script.grab.fanart.Movie.Title - title of the selected movie
script.grab.fanart.Movie.FanArt - path to movie fanart
script.grab.fanart.Movie.Poster - path to movie poster
script.grab.fanart.Movie.Plot - movie plot

script.grab.fanart.TV.Title - title of selected tv show
script.grab.fanart.TV.FanArt - path to tv show fanart
script.grab.fanart.TV.Poster - path to tv show poster
script.grab.fanart.TV.Plot - tv show plot description

These will only have values when the addon mode is "recent"
script.grab.fanart.TV.Season - selected tv show season
script.grab.fanart.TV.Episode - selected tv show episode number
script.grab.fanart.TV.Thumb - path to thumbnail image of this episode

script.grab.fanart.Music.Artist - music artist name
script.grab.fanart.Music.FanArt - path to artist fanart
script.grab.fanart.Music.Description - artist description

To use this use the syntax $INFO[Window(Home).Property(script.grab.fanart.PropName)] within your skin.

Doesn't This Addon Exist Already?

Yea, kind of. There is an addon called the Artwork Organizer in the official repo already. It does a lot of the same tasks but is also highly configurable. This addon is meant to be simpler and a tool for skinners rather than users. If you need or want the advanced functionality then I recommend using that tool instead.

OK - How Do I Try It?

Right now you have to download and install manually. In the future it may make it's way to a repository, depending on if people find it useful. Here is a link to my github page with the code:

https://github.com/robweber/script.grab.fanart/
(This post was last modified: 2013-11-13 16:57 by robweber.)
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #2
Answering questions from:

http://forum.xbmc.org/showthread.php?tid...pid1437280

and

http://forum.xbmc.org/showthread.php?tid...pid1437431


@Nessus

Could you try a few things. 1) erase the addon completely and pull the newest version. Should be necessary but just to make sure we're on the same page. 2) please post a debug log if this doesn't fix it.

I've deleted all my directories and tried running both automated and manual scans. I've not seen these issues happen to me. I tried the "run silent" option as well and am not getting any prompts when the directories are missing.

@fogcity

I see what you're saying with having movies display during movies, tv on tv, etc. I think that sort of decision is up to the skinner, but I can see how having the option would be nice. Let me think about this and get back to you. I'd like to implement it in such a way that someone could do either. I personally like just having random fanart display, I don't care if it's TV or Movie; but with a quick change in the settings you could separate them if needed.

I have a few ideas, I'll get back to you.
find quote
nessus Offline
Skilled Skinner
Posts: 738
Joined: Apr 2009
Reputation: 19
Location: Rodos, Greece
Post: #3
Hi Robweber
Everything works fine with the new version. The folders are created properly without any prompt.
So... now that the basic function of the addon is covered lets se if we can add some additional useful stuff. A good addition, if is possible, would be something like what was requested here by Ilia. I think It can be very useful option for users with limited space. Actually (if of course is possible) IMO that should be the default behavior and if the user wants the cashed files to enable some kind of "Use local files" option in addon settings plus a option to limit the files to the latest 10-20-30 fanarts.

As for the separated Movies & TV Shows fanarts i agree with you and IMO it's not something that this addon supposed to do.

Thanks a lot for your work.

Cheers
Nessus
find quote
fogcity Offline
Member
Posts: 71
Joined: May 2013
Reputation: 0
Post: #4
Hey robweber... I stupidly posted the message below in reFocus thread, thinking it was a reFocus issue and not a Fanart Grabber issue, but now I'm not entirely sure.... ?

I love the slideshow that appears in the home menu, but would like to suspend it after some period of inactivity. My thought here is that doing so will allow all disks to spin down and take a rest for most of the day. Accessing these hundreds of tiny images would seemingly prevent that (unless I'm wrong?)

I tried to turn on the Dim screensaver with a setting of 100% brightness; I thought that when a screensaver is active that the slideshow would pause. No such luck.

Suggestions?
find quote
Ilia Offline
Senior Member
Posts: 298
Joined: Dec 2008
Reputation: 0
Post: #5
Thanks Nessus for mention this, aeon nox uses skin.widget addon to do this type of non-cache fanart display, which I think is pretty neat way of doing it when the xbmc device has limited storage.


Robweber - would you consider implementing this?

Current setup: Revo 3700 + flirc + OpenElec nightlies + Quartz + Pioneer vsx520 + Dali Lektor 6

Previous setup: atv + Crystalbuntu + XBMC nightly + xperience1080
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #6
(2013-06-07 20:56)fogcity Wrote:  Hey robweber... I stupidly posted the message below in reFocus thread, thinking it was a reFocus issue and not a Fanart Grabber issue, but now I'm not entirely sure.... ?

I love the slideshow that appears in the home menu, but would like to suspend it after some period of inactivity. My thought here is that doing so will allow all disks to spin down and take a rest for most of the day. Accessing these hundreds of tiny images would seemingly prevent that (unless I'm wrong?)

I tried to turn on the Dim screensaver with a setting of 100% brightness; I thought that when a screensaver is active that the slideshow would pause. No such luck.

Suggestions?

You would almost be better off having your system go into a hibernate or idle after X minutes (or manually doing it when done). The current version of reFocus uses an xbmc built in function to display the images. The arguments for this function are a folder full of images and an amount of time to display each one (maybe a few others?). I guess what I'm getting at is that xbmc plays the slideshow by going through the folder of images as long as you are on a screen that uses it. There isn't any way to stop it once it's started.

(2013-06-08 01:06)Ilia Wrote:  Thanks Nessus for mention this, aeon nox uses skin.widget addon to do this type of non-cache fanart display, which I think is pretty neat way of doing it when the xbmc device has limited storage.


Robweber - would you consider implementing this?

I'd like to look into the skin.widget addon a little bit further. I was unaware of it, and based on the forum page it may solve a lot of the problems the rotating fanart. I'd like to experiment with it a bit there. I'll post my findings back here, I'd hate to duplicate work already done in another addon if it will work for a given purpose.
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #7
Based on the documentation I can find the skin.widgets addon should do most of what people are looking for, especially if you are wanting a solution that doesn't create another cache. For an idea on implementation take a look at refocus Big. I found the xml dealing with the slideshow and the skin.widgets integration.

https://github.com/paulsalem/skin.refocu...s.xml#L257

The only part I'm unsure about is if this will dynamically update if you site on the homescreen, or if it requires a reload for the images to change. Someone could play with one of the skins that is currently using it and find out. I'm happy with the implementation i've posted here, the extra cache feature isn't of vital importance to me plus it is easier to integrate than the skin.widgets addon. I'm not a skinner so just keeping reFocus operating until Jeroen rolls out updates is good enough for me.
find quote
nessus Offline
Skilled Skinner
Posts: 738
Joined: Apr 2009
Reputation: 19
Location: Rodos, Greece
Post: #8
There are several ways to create a background fanart slideshow. The reFocus way is the most code consume since is not using only random fanart. In fact (as far i can understand from the code) the purpose is to show info for 7 random movies and 7 random episodes in a slideshow. The fanarts are coming along with those info. It is completely different that what we talking here and with more of 200 lines of code, instead of... 5-10.

IMHO the best way to do this is to "grab" the fanart database references and provide the property's to skinners to choose what they want to use.
PHP Code:
RunScript(script.fanart.grabbermediatype=videos or movies or tvshows or musicmode=random or recent

You can also provide some kind of "use cached local files" option in addon settings (disabled by default) if someone wants the cached files locally stored and that's it. Nothing more. With a simple multiimage control you can have the type of the background fanart slideshow that you want.

In any case whatever you choose, thank you very much for your work.

Cheers
Nessus
(This post was last modified: 2013-06-15 00:28 by nessus.)
find quote
Jeroen Offline
Skilled Skinner
Posts: 2,127
Joined: Feb 2008
Reputation: 10
Location: The Netherlands
Post: #9
(2013-06-15 00:27)nessus Wrote:  IMHO the best way to do this is to "grab" the fanart database references and provide the property's to skinners to choose what they want to use.
PHP Code:
RunScript(script.fanart.grabbermediatype=videos or movies or tvshows or musicmode=random or recent

Yes, this would be nice indeed. The way it's currently handled in the reFocus git build is quite...hackery and it was more of an experiment.
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #10
I've been thinking and thinking about this. Creating a script to randomly grab the information and expose it via GUI properties is pretty trivial. The problem I keep having is that the way current addons that do this kind of thing work is that they have to hardcode a certain set of properties, say 1-10 and that is what the skinner gets to work with.

The beauty of the old system was that it would go through all of your fanart, not just a random 10 until the window was refreshed. I'd really like to stick as close to that as possible. Does anyone know if a script updates a property does it take affect while the window is in focus or does it need to be refreshed? My gut tells me you need a screen refresh. I think it would be great if a set of GUI properties could be updated every X seconds via a service and that would dynamically change on the screen.

I definitely see where your suggestions are coming from in regards to exposing the data without having to do all the file copies and cache creation. I also don't want to limit the user experience either though. From personal experience just sitting on the home screen and watching the art go by is one of the great parts of xbmc, cycling through the same few images until I refresh the window is kind of boring.

Suggestions welcome!
find quote
Mudislander Offline
Skilled Skinner
Posts: 1,522
Joined: Jun 2009
Reputation: 33
Post: #11
Cool, I'll try it out.

Edit First run went off with no problems Smile If you're looking for ideas Confluence Customizable Mod needs cycling artwork for Album Thumbs, Music Videos & TVShow fanart all in separate directories

Noli illegitimi carborundum
(This post was last modified: 2013-07-01 17:23 by Mudislander.)
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #12
Well, looks like I was wrong.

I did a very crude test using refocus and setting the background image path to $INFO[Window(Home).Property(script.grab.fanart.FanArt)]. I then modified the service.py code to automatically update that same property with a different fanart image every 10 seconds.

The result was that it actually worked. Every 10 seconds when the property was updated the XBMC screen refreshed without any user input at all. I'm thinking that this can be coded to work with the suggestions I'm seeing. Specifically I'm thinking of a runscript() command to set options that the service will use (# of seconds to wait between grabs, which type of art, etc) and then the service will use those options to populate fields like FanArt path, Title, etc.

All a skinner would have to do is reference these properties in the skin and they will change dynamically as the service updates them. I'm going to get to work on this right away today, I'll post back here when the Git repo is updated.
find quote
robweber Offline
Posting Freak
Posts: 820
Joined: Sep 2009
Reputation: 26
Post: #13
First attempt at doing this is finished. I created a new branch: https://github.com/robweber/script.grab....skin_props

Anyone with some skinning skills should be able to test it. Skin integration should be super easy now. Please check the readme for details. I'll also update the first post in this thread.

Only question now is what other properties besides Title and FanArt would skinners like to see?
find quote
nessus Offline
Skilled Skinner
Posts: 738
Joined: Apr 2009
Reputation: 19
Location: Rodos, Greece
Post: #14
Please delete this. I click post before my post was finish.
(This post was last modified: 2013-07-02 01:41 by nessus.)
find quote
nessus Offline
Skilled Skinner
Posts: 738
Joined: Apr 2009
Reputation: 19
Location: Rodos, Greece
Post: #15
First of all i wanna thank you again for all your efforts on creating this Addon. Now about the testing results...

The testing was done with the script running at startup and with the "FanArt" property only.

PHP Code:
<onload>RunScript(script.grab.fanart,mode=random,mediatype=movies,refresh=10)</onload

PHP Code:
<control type="multiimage">
 ..................
  <
imagepath background="true">$INFO[Window(Home).Property(script.grab.fanart.FanArt)]</imagepath>
 ..................
</
control

Movies
- Random fanart is working fine.
- Recent fanart it doesn't work and it shows random Movies fanarts.
Looking at XBMC log file says that the script found the correct number of items which matches the total number of movies in the library. The number is the same with both of "mode" parameters (recent/random).

TV Shows
- Random fanart is working fine.
- Recent fanart it doesn't work and it shows random TV SHows fanarts.
Looking at XBMC log file says that the script found the correct number of items which matches the total number of TV Shows in the library if the "mode" parameter is set to "random". When the "mode" parameter is set to "recent" the log says that the script found 1000 of items, while the total number of TV Shows in the library is 38. Note that 1000 is the maximum number that i have set in my Advancedsettings.xml file for the Recently Added items in Video lIbrary.

Music
- Random fanart is working fine.
- Recent fanart it doesn't work and it doesn't shows anything.
Looking at XBMC log file says that the script found the correct number of items which matches the total number of Artist in the library if the "mode" parameter is set to "random". When the "mode" parameter is set to "recent" the log says that the script found 0 items while there are 178 Artists in my Music library.


General
- The script it doesn't update depending on the "mediatype" until you restart XBMC. This behavior is the same even if you change the "mediatype" from Addon's settings.
- When the script is starts it fills the XBMC log with the title names of all fanarts the it finds. That means that if have e.g 1000+ movies in your library, at some point you will have 1000+ entry's in the log file.


Let me know if you need a full debug log.


Suggestions
- IMHO the addon doesn't need to have any settings. They will confuse users if the skinners they set the properties.
- I know that this addon has gone more far away and offers more than we ask for, but it will be nice if we could use the script more than one time with a different "mediatype" property in the same window. What i mean is run the script in some way which will give us the ability to use the window property's in some way like this...

Movies Fanart
PHP Code:
<control type="multiimage">
...................
  <
imagepath background="true">$INFO[Window(Home).Property(script.grab.fanart.MoviesFanArt)]</imagepath>
 ..................
</
control


TVShows Fanart
PHP Code:
<control type="multiimage">
 ..................
  <
imagepath background="true">$INFO[Window(Home).Property(script.grab.fanart.TVShowsFanArt)]</imagepath>
 ..................
</
control


Τhanks again for all your work.


Cheers
Nessus
find quote
Post Reply