mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Update tags in JSON cache based on collections in XML cache
This commit is contained in:
parent
c0f70a7820
commit
ec18604949
@ -144,7 +144,7 @@ class XMLCache(object):
|
|||||||
self.ensure_unique_playlist_titles()
|
self.ensure_unique_playlist_titles()
|
||||||
self.prune_empty_playlists()
|
self.prune_empty_playlists()
|
||||||
for i, root in self.record_roots.items():
|
for i, root in self.record_roots.items():
|
||||||
ans[i] = {}
|
ans[i] = []
|
||||||
for playlist in root.xpath('//*[local-name()="playlist"]'):
|
for playlist in root.xpath('//*[local-name()="playlist"]'):
|
||||||
items = []
|
items = []
|
||||||
for item in playlist:
|
for item in playlist:
|
||||||
@ -153,7 +153,7 @@ class XMLCache(object):
|
|||||||
'//*[local-name()="text" and @id="%s"]'%id_)
|
'//*[local-name()="text" and @id="%s"]'%id_)
|
||||||
if records:
|
if records:
|
||||||
items.append(records[0])
|
items.append(records[0])
|
||||||
ans[i] = {playlist.get('title'):items}
|
ans[i].append((playlist.get('title'), items))
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def get_or_create_playlist(self, bl_idx, title):
|
def get_or_create_playlist(self, bl_idx, title):
|
||||||
@ -256,6 +256,16 @@ class XMLCache(object):
|
|||||||
if bl_index not in self.record_roots:
|
if bl_index not in self.record_roots:
|
||||||
return
|
return
|
||||||
root = self.record_roots[bl_index]
|
root = self.record_roots[bl_index]
|
||||||
|
pmap = self.get_playlist_map()[bl_index]
|
||||||
|
playlist_map = {}
|
||||||
|
for title, records in pmap:
|
||||||
|
for record in records:
|
||||||
|
path = record.get('path', None)
|
||||||
|
if path:
|
||||||
|
if path not in playlist_map:
|
||||||
|
playlist_map[path] = []
|
||||||
|
playlist_map[path].append(title)
|
||||||
|
|
||||||
for book in bl:
|
for book in bl:
|
||||||
record = self.book_by_lpath(book.lpath, root)
|
record = self.book_by_lpath(book.lpath, root)
|
||||||
if record is not None:
|
if record is not None:
|
||||||
@ -282,6 +292,15 @@ class XMLCache(object):
|
|||||||
book.thumbnail = raw
|
book.thumbnail = raw
|
||||||
break
|
break
|
||||||
break
|
break
|
||||||
|
if book.lpath in playlist_map:
|
||||||
|
tags = playlist_map[book.lpath]
|
||||||
|
if tags:
|
||||||
|
if DEBUG:
|
||||||
|
prints('Adding tags:', tags, 'to', book.title)
|
||||||
|
if not book.tags:
|
||||||
|
book.tags = []
|
||||||
|
book.tags = list(book.tags)
|
||||||
|
book.tags += tags
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Update XML from JSON {{{
|
# Update XML from JSON {{{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user