def deserialize_user_metadata(val): val = json.loads(val, object_hook=from_json) ans = {} for name, fm in iteritems(val): decode_is_multiple(fm) ans[name] = fm return ans
def deserialize_user_metadata(val): val = json.loads(val, object_hook=from_json) ans = {} for name, fm in val.iteritems(): decode_is_multiple(fm) ans[name] = fm return ans
def read_user_metadata2(root): ans = {} for meta in XPath('./opf:metadata/opf:meta[starts-with(@name, "calibre:user_metadata:")]')(root): name = meta.get('name') name = ':'.join(name.split(':')[2:]) if not name or not name.startswith('#'): continue fm = meta.get('content') try: fm = json.loads(fm, object_hook=from_json) decode_is_multiple(fm) ans[name] = fm except Exception: prints('Failed to read user metadata:', name) import traceback traceback.print_exc() continue return ans
def read_user_metadata2(root): ans = {} for meta in XPath('./opf:metadata/opf:meta[starts-with(@name, "calibre:user_metadata:")]')(root): name = meta.get('name') name = ':'.join(name.split(':')[2:]) if not name or not name.startswith('#'): continue fm = meta.get('content') try: fm = json.loads(fm, object_hook=from_json) decode_is_multiple(fm) ans[name] = fm except Exception: prints('Failed to read user metadata:', name) import traceback traceback.print_exc() continue return ans
def read_user_metadata(mi, root): from calibre.utils.config import from_json from calibre.ebooks.metadata.book.json_codec import decode_is_multiple fields = set() for item in XPath('//calibre:custom_metadata')(root): for li in XPath('./rdf:Bag/rdf:li')(item): name = XPath('descendant::calibreCC:name')(li) if name: name = name[0].text if name.startswith('#') and name not in fields: val = XPath('descendant::rdf:value')(li) if val: fm = val[0].text try: fm = json.loads(fm, object_hook=from_json) decode_is_multiple(fm) mi.set_user_metadata(name, fm) fields.add(name) except: prints('Failed to read user metadata:', name) import traceback traceback.print_exc()
def read_user_metadata(mi, root): from calibre.utils.config import from_json from calibre.ebooks.metadata.book.json_codec import decode_is_multiple fields = set() for item in XPath('//calibre:custom_metadata')(root): for li in XPath('./rdf:Bag/rdf:li')(item): name = XPath('descendant::calibreCC:name')(li) if name: name = name[0].text if name.startswith('#') and name not in fields: val = XPath('descendant::rdf:value')(li) if val: fm = val[0].text try: fm = json.loads(fm, object_hook=from_json) decode_is_multiple(fm) mi.set_user_metadata(name, fm) fields.add(name) except: prints('Failed to read user metadata:', name) import traceback traceback.print_exc()