• 1
  • 47
  • 48
  • 49(current)
  • 50
  • 51
  • 197
[RELEASE] Texture Cache Maintenance utility
Same here!

Sorry for my late test.

Running
Code:
python TextureCache.py c all

with:
Code:
cache.extrafanart=yes
cache.extrathumbs=yes
dbjson = no
chunked = yes

Will post results tomorrow (1:30 am here Tongue)

EDIT: Ok, done!

Results:
Code:
Threads Used: 10
   Min/Avg/Max: 0.10 / 0.29 / 0.45

       Loading: 00:00:21.08
       Parsing: 00:00:20.94
     Comparing: 00:00:49.09
   Downloading: 03:36:07.48
TOTAL RUNTIME: 03:37:40.86

Do you need any info on my tc.log?
Image Image
Reply
Hello, I keep getting this error when running the script:

Code:
libEpisodes.ERROR: JSON response has no result!
{u'jsonrpc': u'2.0', u'id': u'libEpisodes', u'error': {u'message': u'Invalid params.', u'code': -32602, u'data': {u'method': u'VideoLibrary.GetEpisodes', u'stack': {u'message': u'Value between 0 (inclusive) and 2147483647 (inclusive) expected but -1 received', u'type': u'integer', u'name': u'season'}}}}

Is one of the TV Shows in my db reporting that it contains -1 episodes? Am I reading that right?

Any thoughts on steps to resolve would be appreciated!
Reply
Perhaps you could try to clean you media db and run script again?

maybe you have your db screwed up?!
Image Image
Reply
(2014-02-02, 15:36)jnapieralski Wrote: Is one of the TV Shows in my db reporting that it contains -1 episodes? Am I reading that right?

Any thoughts on steps to resolve would be appreciated!

Yes, it's an error in the database (the tv show actually thinks it has a season -1).

You'll need to remove the offending show and re-add it, though identifying which show is responsible is a problem (I'll add a warning in the next version). For now you'll probably need to dump each show in turn (./texturecache.py jd tvshows "tvshowname") and see which one crashes the script, then remove that show and re-add it.
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
Well, this ought to be fun. It's times like these that I wish I was halfway competent in bash.

Thanks very much for the quick response, MilhouseVH!
Reply
If you enable the logfile while dumping all your tvshows (... jd tvshows @logfile=filename), you might be able to work out the name of the tv show being processed when the error occurs by looking at the last few entries in the logfile.
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
(2014-02-02, 16:32)MilhouseVH Wrote: If you enable the logfile while dumping all your tvshows...

Excellent! Worked perfectly-- found the offending show, and sure enough, the db had several episodes in "Season -1." I cleaned up, and everything's chugging along nicely now.

Great work on the script, and thanks for all the help!
Reply
I wasn't successful. Tried "nc" option afterwards, but the log just ends without any statement.

Console output is the following:

Code:
Write failed: Broken pipe  3 of 16 [unmatched 26235: matched 0, skipped 3718] (1301 of 4324)
Reply
(2014-02-02, 18:19)theowiesengrund Wrote: I wasn't successful. Tried "nc" option afterwards, but the log just ends without any statement.

Console output is the following:

Code:
Write failed: Broken pipe  3 of 16 [unmatched 26235: matched 0, skipped 3718] (1301 of 4324)

Broken pipe? Where you piping the output from texturecache.py into another command? Can you PM me the log?

It would be worth running bcmstat.sh (options "xgcd10") concurrently to keep an eye on your free memory - if it goes below 100MB free then I'd be surprised.

I tested your db libraries, and didn't have a problem while using chunked=yes. Hmmm... Sad
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
Hi,

Thanks for sharing this utility. Very handy. I do have a question for you, however. If I run using s option with spaces in string "Let It Be" should script URL encode to match with url that contains "Let%20It%20Be"? Your "Dr. No" example seems to imply that it does, but my results seem to show otherwise.

Thanks.
Reply
(2014-02-04, 03:55)CrazyCanuck Wrote: I do have a question for you, however. If I run using s option with spaces in string "Let It Be" should script URL encode to match with url that contains "Let%20It%20Be"? Your "Dr. No" example seems to imply that it does, but my results seem to show otherwise.

The search string doesn't need to be encoded as the Textures13 url data is not encoded when stored in the Textures13 database.

I'm not sure what you mean about the "Dr. No" example implying the query should be encoded - in the first post of this thread I'm not showing the query results in encoded form, if I have done elsewhere let me know and I'll correct that!
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
Odd, I'm not home right now to verify but I'm pretty sure s option query returned url data as encoded. I'm using RPi Openelec 3.2.4. Also, not sure if it makes a difference but my URLs are smb and not nfs. The reason I came across this is that a query on Let It Be would not return any results, yet Let%20It%20Be did.

Also, is there a way to delete and re-cache album art (C option) using url as filter. From what I understand my option is to use albums class with filter, but this seems to only filter on albums with filter value in name as opposed to somewhere in path. So in my particular example I would like to re-cache all album art for the artist Beatles and not just artist art or just albums with Beatles in name (e.g. With The Beatles). Hopefully this makes sense.

Thanks again.
Reply
Looking at this a bit more closely, could I achieve it by saving output of s "Beatles" to shell variable. Then run d option on this set or row ids. And then finally run c to re-cache what I just deleted? Like this:

Code:
IDS=$(./texturecache.py s "Beatles" 2>&1 1>/dev/null | cut -b71-)
[ -n "$IDS" ] && ./texturecache.py d $IDS
./texturecache.py c albums

Also, in a similar example you give in the first post

Code:
IDS=$(./texturecache.py s "size=thumb" 2>&1 1>/dev/null | cut -b19-)
[ -n "$IDS" ] && ./texturecache.py d $IDS

You're cutting first 18 bytes; however, output seems to have more characters before first row ID is outputted. Perhaps your output has changed since the first post? I used -b71- to get first row ID of results.

Thanks.
Reply
(2014-02-04, 18:28)CrazyCanuck Wrote: Odd, I'm not home right now to verify but I'm pretty sure s option query returned url data as encoded. I'm using RPi Openelec 3.2.4. Also, not sure if it makes a difference but my URLs are smb and not nfs. The reason I came across this is that a query on Let It Be would not return any results, yet Let%20It%20Be did.

I've very occasionally seen url encoded data in Textures13.db (3 such rows out of 30,000) but I've no idea how they got there and presumed it was an error.

If you can reliably reproduce url encoded data in Textures13.db that would be interesting, but as a rule I'm not seeing this with Frodo 3.2.4 or Gotham, and any such urls are wrong.

(2014-02-04, 18:28)CrazyCanuck Wrote: Also, is there a way to delete and re-cache album art (C option) using url as filter.

Not directly, no.

(2014-02-04, 18:28)CrazyCanuck Wrote: From what I understand my option is to use albums class with filter, but this seems to only filter on albums with filter value in name as opposed to somewhere in path. So in my particular example I would like to re-cache all album art for the artist Beatles and not just artist art or just albums with Beatles in name (e.g. With The Beatles). Hopefully this makes sense.

You could try something like "purge all /beatles/" to remove just your Beatles artwork from the cache (the pattern used assumes all your Beatles music is stored within a "Beatles" folder), followed by "c albums" / "c artists" to re-cache any album/artist artwork that is now missing from the cache (ie. the Beatles artwork you just deleted with the purge option).

However I've added a change to the next version I'll be releasing which will allow you to filter on a field other than the default "title", eg. "jd movies 'james cameron' @filter=director" would allow you to view details of all your movies directed by James Cameron, and "C albums 'the\ beatles' @filter=artist" would re-cache just your Beatles albums.

If you are having a problem with a filter matching both "Beatles" and "With The Beatles" - you want the former but not the latter - then (in this future release) setting "@filter.operator=is" will ensure the filter matches on "Beatles" exactly (though still case-insensitive). Any of the standard filter operators can be specified, eg. "jd movies cameron @filter=director @filter.operator=startswith" would return movies directed by Cameron Crow, but not James Cameron (the default @filter.operator is "contains").
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
(2014-02-04, 18:42)CrazyCanuck Wrote: Also, in a similar example you give in the first post

Code:
IDS=$(./texturecache.py s "size=thumb" 2>&1 1>/dev/null | cut -b19-)
[ -n "$IDS" ] && ./texturecache.py d $IDS

You're cutting first 18 bytes; however, output seems to have more characters before first row ID is outputted. Perhaps your output has changed since the first post? I used -b71- to get first row ID of results.

On reflection, sed is probably safest...
Code:
./texturecache.py s "size=thumb" 2>&1 1>/dev/null | sed "s/.*: //"

I've updated the first post, thanks.
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
  • 1
  • 47
  • 48
  • 49(current)
  • 50
  • 51
  • 197

Logout Mark Read Team Forum Stats Members Help
[RELEASE] Texture Cache Maintenance utility17