From b012b7cf6f52164fc93100e6ea3bf885d34f5ab3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 17 Feb 2014 18:56:22 +0530 Subject: [PATCH] Finish up the rest of the calibre specific metadata for PDF --- src/calibre/ebooks/metadata/xmp.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/calibre/ebooks/metadata/xmp.py b/src/calibre/ebooks/metadata/xmp.py index 70cd127538..4c9e01f4d9 100644 --- a/src/calibre/ebooks/metadata/xmp.py +++ b/src/calibre/ebooks/metadata/xmp.py @@ -16,6 +16,7 @@ from lxml.builder import ElementMaker from calibre import prints from calibre.ebooks.metadata import check_isbn, check_doi from calibre.ebooks.metadata.book.base import Metadata +from calibre.ebooks.metadata.opf2 import dump_dict from calibre.utils.date import parse_date, isoformat, now from calibre.utils.localization import canonicalize_lang, lang_as_iso639_1 @@ -242,6 +243,13 @@ def metadata_from_xmp_packet(raw_bytes): if val: setattr(mi, x, val) break + for x in ('author_link_map', 'user_categories'): + val = first_simple('//calibre:'+x, root) + if val: + try: + setattr(mi, x, json.loads(val)) + except: + pass languages = multiple_sequences('//dc:language', root) if languages: @@ -440,6 +448,13 @@ def metadata_to_xmp_packet(mi): create_simple_property(calibre, 'calibre:rating', '%g' % r) if not mi.is_null('series'): create_series(calibre, mi.series, mi.series_index) + if not mi.is_null('timestamp'): + create_simple_property(calibre, 'calibre:timestamp', isoformat(mi.timestamp, as_utc=False)) + for x in ('author_link_map', 'user_categories'): + val = getattr(mi, x, None) + if val: + create_simple_property(calibre, 'calibre:'+x, dump_dict(val)) + for x in ('title_sort', 'author_sort'): if not mi.is_null(x): create_simple_property(calibre, 'calibre:'+x, getattr(mi, x))