Fanart Grabber - script for skinners

  Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #31
Right, i'm talking out from my ass again. it was video.fanart and movie.fanart that are most of the time the same, but according to your Github read me that's to be expected.
find quote
robweber Offline
Posting Freak
Posts: 880
Joined: Sep 2009
Reputation: 26
Post: #32
Read through your configuration. Everything you are doing looks 100% correct to me (which is why you're actually seeing images!).

On the addon side of things you are correct. The "Video.FanArt" property will display the same artwork as the Movie.FanArt or TV.FanArt property, depending on which it is displaying at the time. This is simply because on each property change a TV show and Movie is grabbed from the array. One of them is also copied to the Video field. This was simply to save on CPU so that two different movies or tv shows didn't have to be pulled during the same update cycle. Honestly I didn't envision someone doing what you are trying, I thought either movie/tv or the video property would be used, not all together.

On the music side of things I think I found a bug in the code. I'm using a JSON query to get the path to the music fanart. For each artist pulled there is a verify step to make sure the fanart path is not blank. I do believe this is broken and have uploaded a fix to github. Hopefully you'll start seeing music fanart now. I tried on my system and did not get 0 for the total artists pulled anymore.

In regards to a property that would display music, tv, or movies that could probably be done. If you can confirm the Music fanart is now displaying I'll work on adding an additional property field.
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #33
My idea was that when "videos" is focused in Confluence main menu it would cycle through movie and tvshows fanarts. Focusing movies would cycle movie fanarts and focusing tv, well, tv fanart.

Same idea could be used in the actual library views. Cycle between movie fanarts when browsing movie library views and so on.

The completely random fanarts could be used when you're not focusing either of those home menu items, or are not browsing movies, tvshows or music. So basically use random fanart when in settings, pictures, weather and so on.

I will test the updated add-on tonight, thanks.
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #34
Couldn't wait, had to test on the work PC, and music fanart now works.
find quote
robweber Offline
Posting Freak
Posts: 880
Joined: Sep 2009
Reputation: 26
Post: #35
Glad it works. I just pushed the changes for the 'Global' property. Due to differences in music and video types only Title and FanArt exist for this media type.

Both the Global and Video properties will still be the same as their respective Music, TV, or Movie counterpart. I guess I don't really see this as a problem. Since the artwork is changing fairly often, even while you are navigating through a menu it shouldn't be a big deal to see the same imagery under 'Video' as 'TV Shows' for a few seconds until it changes. In my opinion it would be a waste of resources to maintain separate arrays to make sure these are always different from each other. Since this is a service it is running all the time so trying to keep the processing to a minimum is somewhat important to me.
find quote
Rantanplan-1 Offline
Senior Member
Posts: 158
Joined: Jan 2013
Reputation: 0
Post: #36
thank you for this script. It does exactly what i was looking for.

Happy to test it!
(This post was last modified: 2013-11-22 23:46 by Rantanplan-1.)
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #37
Do you mind that i have the add-on available in my repo? I use the add-on as a dependency so i need it be available in some repository. If you upload it to the XBMC repo i'll remove it.
find quote
Milhouse Offline
Team-Kodi Member
Posts: 3,810
Joined: Jan 2011
Reputation: 89
Post: #38
Looks like a skin I'd previously installed (but no longer using) has automatically installed this script, possibly Confluence Modified.

Since I'm no longer using the skin that needs this script, this script is now running for no reason (and on a Pi, that's never good!) Smile

Is there any way for skins that need this script to start the script when the skin is loaded (and the script stopped whenever the skin is unloaded), which would mean the script doesn't run at all whenever a skin that doesn't use it (eg. stock Confluence) is being used?

One other request: Would it be possible to tone down the logging, it's writing a new line (eg. "NOTICE: script.grab.fanart: Video - Apollo 13) to xbmc.log every 10 seconds, wouldn't this be better as DEBUG?

Texture Cache Maintenance Utility: Preload your texture cache for optimal UI performance. Remotely manage media libraries. Purge unused artwork to free up space. Find missing media. Configurable QA check to highlight metadata issues. Aid in diagnosis of library and cache related problems.
(This post was last modified: 2013-11-24 22:12 by Milhouse.)
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #39
Uninstall CM and Grab Fanart then.. Or simply disable Grab Fanart, i guess that should stop the service from starting.
find quote
Milhouse Offline
Team-Kodi Member
Posts: 3,810
Joined: Jan 2011
Reputation: 89
Post: #40
(2013-11-24 23:19)SpaceMonkey Wrote:  Uninstall CM and Grab Fanart then.. Or simply disable Grab Fanart, i guess that should stop the service from starting.

Of course that is one solution (and not really a very good one), as assuming this script is used by several skins it really only makes sense to start it when it's actually being used.

Texture Cache Maintenance Utility: Preload your texture cache for optimal UI performance. Remotely manage media libraries. Purge unused artwork to free up space. Find missing media. Configurable QA check to highlight metadata issues. Aid in diagnosis of library and cache related problems.
find quote
MassIV Offline
Donor
Posts: 1,010
Joined: Mar 2012
Reputation: 34
Post: #41
First off, thnx for your work. I wanted to ask if this is supposed to work in MusicVisualisation.xml?
Works great in the library, but with the same code nothing is showing up in that window.
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #42
It works in musicvis, i use it there as well.
find quote
SpaceMonkey Offline
Posting Freak
Posts: 1,162
Joined: Aug 2008
Reputation: 24
Location: Finland
Post: #43
(2013-11-24 23:25)MilhouseVH Wrote:  
(2013-11-24 23:19)SpaceMonkey Wrote:  Uninstall CM and Grab Fanart then.. Or simply disable Grab Fanart, i guess that should stop the service from starting.

Of course that is one solution (and not really a very good one), as assuming this script is used by several skins it really only makes sense to start it when it's actually being used.

Well other service type add-ons work the same way, skin widgets for example, if you have it installed it will always run.

But you sort of have a point, most if not all skinners most likely want to override the add-on settings (mostly the refresh time for the background) so they are going to use runscript method of running it anyway. So to me it would be more logical to have it run only when requested.

But I'm happy either way.
find quote
Milhouse Offline
Team-Kodi Member
Posts: 3,810
Joined: Jan 2011
Reputation: 89
Post: #44
I probably wouldn't have noticed were it not logging away every 10 seconds. At the very least it should log less, but it would also be very nice if stuff like this didn't start at all unless required by a particular skin.

Texture Cache Maintenance Utility: Preload your texture cache for optimal UI performance. Remotely manage media libraries. Purge unused artwork to free up space. Find missing media. Configurable QA check to highlight metadata issues. Aid in diagnosis of library and cache related problems.
(This post was last modified: 2013-11-25 10:50 by Milhouse.)
find quote
robweber Offline
Posting Freak
Posts: 880
Joined: Sep 2009
Reputation: 26
Post: #45
(2013-11-23 10:14)SpaceMonkey Wrote:  Do you mind that i have the add-on available in my repo? I use the add-on as a dependency so i need it be available in some repository. If you upload it to the XBMC repo i'll remove it.

Not a problem at all, glad you are finding it useful. I'm planning on releasing this into the repo soon. Seems like most of the bugs have been worked out now.

(2013-11-24 22:03)MilhouseVH Wrote:  Looks like a skin I'd previously installed (but no longer using) has automatically installed this script, possibly Confluence Modified.

Since I'm no longer using the skin that needs this script, this script is now running for no reason (and on a Pi, that's never good!) Smile

Is there any way for skins that need this script to start the script when the skin is loaded (and the script stopped whenever the skin is unloaded), which would mean the script doesn't run at all whenever a skin that doesn't use it (eg. stock Confluence) is being used?

One other request: Would it be possible to tone down the logging, it's writing a new line (eg. "NOTICE: script.grab.fanart: Video - Apollo 13) to xbmc.log every 10 seconds, wouldn't this be better as DEBUG?

I had thought all the logging was restricted to DEBUG mode but a scan through the code this morning did reveal that one log entry is being written every time the images change. I'll adjust this right away.

As to your second question, the short answer is "no". This is a service addon which, by it's definition, runs when XBMC is started. The RunScript() method with parameters was provided as a convenience to skinners who wish to change the settings from the default. Even if I was to strip out the code that actually updates any of the images to a separate function that waits for a skinner activated variable; the service itself would still have to run and check for that variable. The processing required to "constantly" check for a skinner activated variable is probably the same amount of time as it is taking to pluck an image out of the array and set it. This doesn't even address other issues that may occur. What If you only use the addon in your music visualization - should the addon only run then, should it run all the time? If only "on demand" when that area of the skin is in use, how does the service know when to stop - constantly check which windows is active?

I'll agree with you that having a service running when you no longer need it is not ideal. There are numerous other services tied to skins and plugins, like the common plugin cache, the skin widgets service, the simple downloader, etc, etc that all have this same behavior. If a skin installs them as a dependency they run even if you change skins. I've seen posts about this in other places on the forum. Mostly it comes down to the fact that once installed XBMC does not know when the addon is no longer needed. What if you have 2 addons that need 1 service and you uninstall one of them? Right now the logic simply does not exist to clean up un-needed addons.
find quote
Post Reply