Kodi Community Forum

Full Version: [RELEASE] Texture Cache Maintenance utility
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Right, OK. My bad, the version request would of course have output any version results before deciding TexturesDB isn't supported. However, there's one exception which is when this initial JSON request throws an error (which is silently ignored - I really should write something to the log...) and it then assumes you have no JSON capability.

So, for some reason your Ubuntu box can't establish a JSON RPC connection with your Android client (default port 9090). This isn't the same as a web connection, which occurs on a different port (default 8080).

I don't know what's in your texturecache configuration, or how your Android client is configured, but check you have configured the correct "rpc.port" property in texturecache.cfg - if you don't need anything other than the default port 9090 then don't bother setting this property. If you've configured a non-standard port in your Android client (it requires an entry in advancedsettings.xml) then make sure "rpc.port" is set to match.

Alternatively, post your config.
@Milhouse, I have a python script which calls texturecache.py for scanning a new movie path.

This used to work but now i don't get the response I used to get:

Code:
def update_kodi(self, group):

        log.info("Sending JSON-RPC update command to Kodi")

        try:
            remote_moviepath = os.path.join(self.prefix_path, os.path.basename(os.path.normpath(group['destination_dir'])))

            log.debug("Sending JSON VideoLibrary.Scan to scan new movie: %s", remote_moviepath)
            command = []
            command = ['python', self.texturecache_path, 'vscan', self.prefix_path, self.config_file, self.log_file]
            p = Popen(command, stdout=PIPE, stderr=STDOUT)
            response = p.communicate()[0]
            response = response[:-1] if response.endswith("\n") else response
            log.debug('update_kodi response: %s', response)
            if response.find('Updating Library: New movieid') != -1:
                log.info("Successfully updated Kodi library with movie: %s", self.movie_name)
                # wait for Kodi to update database
                time.sleep(20)
                return True
            else:
                log.info("No response from Kodi! Disconnected?")
                return False
        except:
            log.error("There was a problem updating Kodi library with movie %s: %s", (self.movie_name, (traceback.format_exc())))
            return False

I only get the response:
Code:
update_kodi response: Rescanning directory: nfs://192.168.1.77/movies/...

Can you implement a valid response from json rpc response?

Thanks
(2017-03-07, 00:56)redglory Wrote: [ -> ]I only get the response:
Code:
update_kodi response: Rescanning directory: nfs://192.168.1.77/movies/...

The script hasn't changed, and if you only get the response above it means there were no new movies added. You haven't mentioned the response you had previously but no longer see.

(2017-03-07, 00:56)redglory Wrote: [ -> ]Can you implement a valid response from json rpc response?

Thanks

Not without making it unusable for everyone else, and I don't particularly want to output json when it should be possible to parse the current stderr/stdout.
Now that you've mentioned it I have a clue why I get no "new movieid" response. My previous script already syncs movie after scraping...

My bad, sorry and thanks for your quick answer 😎

Enviado do meu Nexus 4 através de Tapatalk
Will this update the moviesets form imdb if I use the imdb function?

I want to make sure my movies are tagged in the correct moviesets but don't really want to go through all the movies manually in the gui and make it download the sets they are part of. Would be really nice if that could be grabbed through this utility.
(2017-03-10, 11:38)laric Wrote: [ -> ]Will this update the moviesets form imdb if I use the imdb function?

I want to make sure my movies are tagged in the correct moviesets but don't really want to go through all the movies manually in the gui and make it download the sets they are part of. Would be really nice if that could be grabbed through this utility.

No, it won't do that.
(2017-03-10, 13:36)Milhouse Wrote: [ -> ]
(2017-03-10, 11:38)laric Wrote: [ -> ]Will this update the moviesets form imdb if I use the imdb function?

I want to make sure my movies are tagged in the correct moviesets but don't really want to go through all the movies manually in the gui and make it download the sets they are part of. Would be really nice if that could be grabbed through this utility.

No, it won't do that.

Any chance of you adding that? I have no idea if it is even possible but would be real nice Smile
(2017-03-10, 21:58)laric Wrote: [ -> ]Any chance of you adding that? I have no idea if it is even possible but would be real nice Smile

It might be possible, but only by scraping movie set information from a site that hosts this kind of metadata and I don't have any plans to add that - it's what scrapers are for.

The Universal Movie Scraper already has support for Movie Set (Collection) metadata retrieved from themoviedb.org, although I've no idea if it actually works or not.

Alternatively, use something like Ember Media Manager to put your movies into the appropriate sets, then use Ember to generate NFO files for your movies with embedded "<set>" tags.
(2017-03-11, 00:29)Milhouse Wrote: [ -> ]
(2017-03-10, 21:58)laric Wrote: [ -> ]Any chance of you adding that? I have no idea if it is even possible but would be real nice Smile

It might be possible, but only by scraping movie set information from a site that hosts this kind of metadata and I don't have any plans to add that - it's what scrapers are for.

The Universal Movie Scraper already has support for Movie Set (Collection) metadata retrieved from themoviedb.org, although I've no idea if it actually works or not.

Alternatively, use something like Ember Media Manager to put your movies into the appropriate sets, then use Ember to generate NFO files for your movies with embedded "<set>" tags.

Oh thanks. I thought it might be available from omdb api that you already use. I understand you wouldn't want to get into scraping.
Either use a media manager like EMM or you can register an app and use themoviedb.org API to get movie sets information

Enviado do meu Nexus 4 através de Tapatalk
@Milhouse

I was forced to change the ip adress of the server where my sql DB is placed. I followed these instructions to get it running again:
http://kodi.wiki/view/HOW-TO:Update_SQL_...files_move

everything works now, except for the thumbnails/textures. I tried running C:\Python27>texturecache.py c tvshows arrow but the output points to the old location

example:
Code:
[thumb     ] [Arrow, Season 5 Episode 5x11            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E11 - Second Chances-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x12            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E12 - Bratva-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x14            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E14 - The Sin-Eater-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x15            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E15 - Fighting Fire with Fire-thumb.jpg

this IP needs to be changed to 192.168.1.10. Can you please tell me if this tool can help me with this? and if not how to fix this problem?

thanks in advance.

grtz mrmo
Why not just execute direct SQL update? It would be much faster

Enviado do meu Nexus 4 através de Tapatalk
I tried that. I used HeidiSQL en did the changes mentioned in that wiki page. But I can't find the links texturecache.py provides.
(2017-03-22, 11:23)mrmo Wrote: [ -> ]example:
Code:
[thumb     ] [Arrow, Season 5 Episode 5x11            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E11 - Second Chances-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x12            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E12 - Bratva-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x14            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E14 - The Sin-Eater-thumb.jpg
[thumb     ] [Arrow, Season 5 Episode 5x15            ] nfs://192.168.1.100/volume1/video/series/Arrow/Season 05/Arrow - S05E15 - Fighting Fire with Fire-thumb.jpg

this IP needs to be changed to 192.168.1.10. Can you please tell me if this tool can help me with this? and if not how to fix this problem?

The 192.168.1.100 urls are in your MyVideo database, so you need to change the urls in there too. Presumably you've already changed the urls in your Textures13.db, which is why the script wants to re-cache the urls from 192.168.1.100.

The script could possibly help change your MyVideo urls if you were to use mklocal.py but that's a fairly involved process, so best for you to follow your guide and replace the paths in your MyVideo database.

Or drop the whole database and re-scan - if your artwork is local and you have NFO files, you lose pretty much nothing (you can use this script to backup watched status) and it doesn't take very long.
Hi Milhouse,

I have an open source project on github that updates metadata for MMA events. It is setup by default to refresh a plex media server when .nfo files are edited. I would like to use your script so KODI users can use my project, as well.

I couldn't find an email for you on github, and KODI forums tell me that I don't have the privileges to send you a private message. I have a few questions for you about attribution and script settings/arguments. Please email me at 'metaMMAproject' on gmail!