• 1
  • 2
  • 3(current)
  • 4
  • 5
  • 12
Naming convention
#31
Local artwork means you only download the artwork once - this is important for people with limited internet bandwidth.

Remote artwork comes and goes. When using multiple clients and centralised meta data, you might find the remote artwork is no longer available by the time you come to display/cache it on one of your clients - those clients will not display any artwork until you replace the now absent remote artwork.

If you decide to rebuild your library, your new library will in many cases be using different artwork to the old library. The new artwork may be better than the old artwork, or it may be worse - you have little to no control over what artwork is selected by the scraper.

It really depends on your circumstances - if you have a single client, or you are not using a centralised database, and you don't mind repeated downloads, then remote-only artwork should be fine.
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.
Reply
#32
Thanks Milhouse for your help. Very helpful as always. Happy new year to you.

If it wasn't about Radarr, I would very much prefer to keep my local artwork. With Radarr, this really turns difficult though... So, I am exploring alternatives and maybe frequent caching may give me a similar result.

Your answer raises a few more questions on how Kodi handles caching artwork.
(2017-12-15, 16:53)Milhouse Wrote: Local artwork means you only download the artwork once - this is important for people with limited internet bandwidth.
I don't mind the bandwidth, but want artwork to be consistent across all my devices. In general, consistency is across devices is critical for me and I would indeed mind if the artwork shows on device 1, but does not show on device 2 (e.g., downloads sometimes fail).  Is the dual download also needed when using mysql. I would have thought and hoped that the download only happens once when using mysql?
(2017-12-15, 16:53)Milhouse Wrote: Remote artwork comes and goes. When using multiple clients and centralised meta data, you might find the remote artwork is no longer available by the time you come to display/cache it on one of your clients - those clients will not display any artwork until you replace the now absent remote artwork.
That's interesting. Is nothing downloaded during the scraping process and only a link to the remote artwork placed during scraping. So if the artwork gets removed from remote server after scraping, it will just show a black image when selecting the movie? This would be a major downside. Is this how Kodi handles scraping? Just out of curiosity, why is this the case?
(2017-12-15, 16:53)Milhouse Wrote: If you decide to rebuild your library, your new library will in many cases be using different artwork to the old library. The new artwork may be better than the old artwork, or it may be worse - you have little to no control over what artwork is selected by the scraper.
I am aware of this short-coming and this annoys me. I am aware that there won't be a work-around, but I would probably be willing to sacrifice this feature for the use of Radarr.

And one separate question: I am also using Kodi Remote (for IOS). Would this be impacted from the use of local artwork? Does the Kodi remote caches and (if so) how can I trigger it to do so?
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#33
(2017-12-31, 11:09)steve1977 Wrote: I don't mind the bandwidth, but want artwork to be consistent across all my devices. In general, consistency is across devices is critical for me and I would indeed mind if the artwork shows on device 1, but does not show on device 2 (e.g., downloads sometimes fail).  Is the dual download also needed when using mysql. I would have thought and hoped that the download only happens once when using mysql?

No, it makes no difference if you are using MySQL or not. If your movie is linked to remote artwork then each client will try and download the remote artwork in order to populate the texture cache. The only way to avoid multiple downloads is to create the artwork locally (alongside your movies) and when adding those movies to the library Kodi will include the references to the local artwork. All your clients will then use the local artwork when populating their texture cache.

(2017-12-31, 11:09)steve1977 Wrote: That's interesting. Is nothing downloaded during the scraping process and only a link to the remote artwork placed during scraping. So if the artwork gets removed from remote server after scraping, it will just show a black image when selecting the movie? This would be a major downside.

When scraping, Kodi doesn't download anything - it creates a movie entry in the library, and links this movie entry to various artwork urls which will be of the remote variety unless you have created the local artwork prior to scraping.

Only when displaying the new artwork will Kodi first populate the local texture cache, and if this means downloading the artwork from the internet then that is what Kodi will do (assuming the artwork is still available). Obviously if you have used local artwork then the texture cache will be populated using the local artwork instead. All clients will populate their own texture cache first before displaying any artwork. If the artwork is no longer available then the texture cache is never populated and no artwork is displayed. Once remote artwork disappears you will need to rescrape the library item in order to replace the missing artwork (or use a tool like mklocal.py to replace remote artwork with local artwork).

(2017-12-31, 11:09)steve1977 Wrote: Is this how Kodi handles scraping? Just out of curiosity, why is this the case?

Kodi was originally designed around a single client library, with each client scraping their own library. Sharing libraries amongst multiple clients with MySQL was added after the fact.

With the original use case (ie. SQLite) each client would re-scrape the library and clients would use whatever artwork is available at the time of scraping. This might mean that client #2 uses different artwork to client #1 if the artwork used by client #1 is no longer available.

So this was never an issue until the addition of MySQL, when clients stopped scraping their own artwork and instead started using references to remote artwork that may have been scraped months or even years previously.

(2017-12-31, 11:09)steve1977 Wrote: And one separate question: I am also using Kodi Remote (for IOS). Would this be impacted from the use of local artwork? Does the Kodi remote caches and (if so) how can I trigger it to do so?
I would expect any remote (iOS or Android) to maintain it's own cache. If you are using remote artwork then the remotes will download the artwork from the internet (assuming it's still available) before caching on your handheld device. If however you were using local artwork then the handheld device would cache the local artwork, which would be much quicker.
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.
Reply
#34
Thanks, very helpful.

I am sure I must be missing something obvious or this was already answered. But I am wondering what is the difference between mklocal and export library?

Also, any specific reason why there is no feature "cache all artwork" in Kodi or advancedsettings? "Cache all artwork" would not require mklocal as it caches from the link. It feels like an obvious feature to make things snappier. If not, let me add as feature request.
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#35
(2018-01-01, 12:37)steve1977 Wrote: I am sure I must be missing something obvious or this was already answered. But I am wondering what is the difference between mklocal and export library?

mklocal will download the original artwork (assuming it still exists etc.) as your local artwork, whereas export library creates the local artwork from the artwork you have in your texture cache. The difference is that the texture cache artwork is almost always of a lower quality than the original artwork (it's optimised for display), so is not ideal for creating local artwork as you then have generational losses. If you were to export from a low powered device (with low resolution texture cache) and then import your low quality local artwork into a more powerful device (with higher resolution texture cache) the drop in quality will become much more noticeable.

(2018-01-01, 12:37)steve1977 Wrote: Also, any specific reason why there is no feature "cache all artwork" in Kodi or advancedsettings?

I guess nobody with the skills to add such a feature has felt it necessary. I don't have the skills, which is why I implemented it in Python (which works fine for me).

(2018-01-01, 12:37)steve1977 Wrote: "Cache all artwork" would not require mklocal as it caches from the link. It feels like an obvious feature to make things snappier. If not, let me add as feature request.
The texturecache.py script (see my signature) will do the job of caching all your uncached artwork, but it's a command line tool and not built-in to kodi.
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.
Reply
#36
very clear. does mklocal also work for music? if so, does it plan to support extra music art, which will be added in kodi 18?
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#37
No, mklocal.py doesn't currently support music artwork as the Music JSON API has (until very recently, ie. last night) lacked the required methods for converting artwork from remote to local. If I have the time I'll update mklocal.py with music support, but it's not going to be soon.
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.
Reply
#38
Great, thanks!

Does mklocal also pull nfo files or just artwork?

Fingers crossed that you get the chance working to include music.
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#39
Just artwork. It's not a metadata scraper, so it only downloads remote artwork already associated with your movies/tv shows, while also associating local artwork with your movies/tv shows.
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.
Reply
#40
I am now finalizing what I have started some time ago. Thanks again for your help. I believe that all I actually need for now is texturecache scrip in combination with cron.

Would below run update (and clean) my library every Thursday night and cache the artwork accordingly?  The main open question may be whether cron can run the script three times at the same time or it requires to finish one command before it can start the next? Same question whether video and audio scan can run in parallel and whether it needs to be completed before cleaning starts? Any thoughts on below appreciated. Thanks!

crontab -e
# m h dom mon dow command
00 05 * * 5 /storage/texturecache.py lc @kodi.host=localhost > /dev/null
00 05 * * 5 /storage/texturecache.py lc @kodi.host=local-IP-1 > /dev/null
00 05 * * 5 /storage/texturecache.py lc @kodi.host=local-IP-1 > /dev/null
00 01 * * 5 /storage/texturecache.py ascan /dev/null
00 01 * * 5 /storage/texturecache.py vscan /dev/null
00 05 * * 5 /storage/texturecache.py aclean /dev/null
00 05 * * 5 /storage/texturecache.py vclean /dev/null
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#41
Why not create one script to run all the commands consecutively, then run that script via cron.
If I have helped you or increased your knowledge, click the 'thumbs up' button to give thanks :) (People with less than 20 posts won't see the "thumbs up" button.)
Reply
#42
Because I have no clue how to do such a script ;-) Guidance appreciated!
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
#43
In an editor create a file containing the following:

Code:
#! /bin/bash
/storage/texturecache.py lc @[url=https://forum.kodi.tv/member.php?action=profile&uid=70468]kodi[/url].host=localhost > /dev/null
/storage/texturecache.py lc @[url=https://forum.kodi.tv/member.php?action=profile&uid=70468]kodi[/url].host=local-IP-1 > /dev/null
/storage/texturecache.py lc @[url=https://forum.kodi.tv/member.php?action=profile&uid=70468]kodi[/url].host=local-IP-1 > /dev/null
/storage/texturecache.py ascan /dev/null
/storage/texturecache.py vscan /dev/null
/storage/texturecache.py aclean /dev/null
/storage/texturecache.py vclean /dev/null

save it as any filename you like. eg texturescript

make it executable
Code:
chmod +x texturescript

then use your script in crontab.
If I have helped you or increased your knowledge, click the 'thumbs up' button to give thanks :) (People with less than 20 posts won't see the "thumbs up" button.)
Reply
#44
Just to say that when using the lc option you need to specify the full path to the lastrun file which is created with the datestamp of the last run, eg.
Code:
/storage/texturecache.py lc movies @kodi.host=localhost @lastrunfile=/storage/lc.localhost
/storage/texturecache.py lc movies @kodi.host=local-IP-1 @lastrunfile=/storage/lc.local-IP-1
You should use a different lastrunfile for each client, as the file represents the date/time that client was last cached.

If you have multiple hosts that you want to manage, look at creating sections for each client in texturecache.cfg, eg.
Code:
[lounge]
kodi.host=<something>
lastrunfile=/storage/lc.lounge

[bedroom]
kodi.host=<something>
lastrunfile=/storage/lc.bedroom

[library]
kodi.host=<something>
lastrunfile=/storage/lc.library
then just use:
Code:
/storage/texturecache.py lc movies @section=lounge
/storage/texturecache.py lc movies @section=bedroom
etc.
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.
Reply
#45
Thanks, script sounds easy and I'll give it a try.

Is there any advantage of running lc instead of just c for my use case?

I noticed you specific movies in your commends. Assuming I want to cache movies, tvshows and music, I would not need to specify this and just leave it out?

I just ran it again and getting quite a few errors. Any idea what they could be and could this has come from running two devices without specifying the timestamp file?

*** 2475 items remaining of 2526 (qs: 9787, qm: 12685), 51 errors, 3 threads active (07.54 downloads per second, ETA: 00:38:08)

Also, any thoughts why it shows 3 threads although my LE device only has 2?
Server: Asus Sabertooth Z77 | Intel Core i5 3.4 GHz | 16 GB DDR3 | 128 GB SSD, 82 TB (9 x 6 TB, 7 x 4 TB)
HTPC 1: Raspberry Pi 2 | HTPC 2: Raspberry Pi 2 | HTPC 3: Raspberry Pi
Reply
  • 1
  • 2
  • 3(current)
  • 4
  • 5
  • 12

Logout Mark Read Team Forum Stats Members Help
Naming convention2