|
|
|
@ -111,93 +111,6 @@ class TaskBackupMetadata(CalibreTask):
|
|
|
|
|
except Exception as ex:
|
|
|
|
|
raise Exception('Writing Metadata failed with error: {} '.format(ex))
|
|
|
|
|
|
|
|
|
|
'''def create_new_metadata_backup(self, book, custom_columns):
|
|
|
|
|
# generate root package element
|
|
|
|
|
package = etree.Element(OPF + "package", nsmap=OPF_NS)
|
|
|
|
|
package.set("unique-identifier", "uuid_id")
|
|
|
|
|
package.set("version", "2.0")
|
|
|
|
|
|
|
|
|
|
# generate metadata element and all sub elements of it
|
|
|
|
|
metadata = etree.SubElement(package, "metadata", nsmap=NSMAP)
|
|
|
|
|
identifier = etree.SubElement(metadata, PURL + "identifier", id="calibre_id", nsmap=NSMAP)
|
|
|
|
|
identifier.set(OPF + "scheme", "calibre")
|
|
|
|
|
identifier.text = str(book.id)
|
|
|
|
|
identifier2 = etree.SubElement(metadata, PURL + "identifier", id="uuid_id", nsmap=NSMAP)
|
|
|
|
|
identifier2.set(OPF + "scheme", "uuid")
|
|
|
|
|
identifier2.text = book.uuid
|
|
|
|
|
title = etree.SubElement(metadata, PURL + "title", nsmap=NSMAP)
|
|
|
|
|
title.text = book.title
|
|
|
|
|
for author in book.authors:
|
|
|
|
|
creator = etree.SubElement(metadata, PURL + "creator", nsmap=NSMAP)
|
|
|
|
|
creator.text = str(author.name)
|
|
|
|
|
creator.set(OPF + "file-as", book.author_sort) # ToDo Check
|
|
|
|
|
creator.set(OPF + "role", "aut")
|
|
|
|
|
contributor = etree.SubElement(metadata, PURL + "contributor", nsmap=NSMAP)
|
|
|
|
|
contributor.text = "calibre (5.7.2) [https://calibre-ebook.com]"
|
|
|
|
|
contributor.set(OPF + "file-as", "calibre") # ToDo Check
|
|
|
|
|
contributor.set(OPF + "role", "bkp")
|
|
|
|
|
|
|
|
|
|
date = etree.SubElement(metadata, PURL + "date", nsmap=NSMAP)
|
|
|
|
|
date.text = '{d.year:04}-{d.month:02}-{d.day:02}T{d.hour:02}:{d.minute:02}:{d.second:02}'.format(d=book.pubdate)
|
|
|
|
|
if book.comments and book.comments[0].text:
|
|
|
|
|
for b in book.comments:
|
|
|
|
|
description = etree.SubElement(metadata, PURL + "description", nsmap=NSMAP)
|
|
|
|
|
description.text = b.text
|
|
|
|
|
for b in book.publishers:
|
|
|
|
|
publisher = etree.SubElement(metadata, PURL + "publisher", nsmap=NSMAP)
|
|
|
|
|
publisher.text = str(b.name)
|
|
|
|
|
if not book.languages:
|
|
|
|
|
language = etree.SubElement(metadata, PURL + "language", nsmap=NSMAP)
|
|
|
|
|
language.text = self.export_language
|
|
|
|
|
else:
|
|
|
|
|
for b in book.languages:
|
|
|
|
|
language = etree.SubElement(metadata, PURL + "language", nsmap=NSMAP)
|
|
|
|
|
language.text = str(b.lang_code)
|
|
|
|
|
for b in book.tags:
|
|
|
|
|
subject = etree.SubElement(metadata, PURL + "subject", nsmap=NSMAP)
|
|
|
|
|
subject.text = str(b.name)
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:author_link_map",
|
|
|
|
|
content="{" + ", ".join(['"' + str(a.name) + '": ""' for a in book.authors]) + "}",
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
for b in book.series:
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:series",
|
|
|
|
|
content=str(str(b.name)),
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
if book.series:
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:series_index",
|
|
|
|
|
content=str(book.series_index),
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
if len(book.ratings) and book.ratings[0].rating > 0:
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:rating",
|
|
|
|
|
content=str(book.ratings[0].rating),
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:timestamp",
|
|
|
|
|
content='{d.year:04}-{d.month:02}-{d.day:02}T{d.hour:02}:{d.minute:02}:{d.second:02}'.format(
|
|
|
|
|
d=book.timestamp),
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:title_sort",
|
|
|
|
|
content=book.sort,
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
sequence = 0
|
|
|
|
|
for cc in custom_columns:
|
|
|
|
|
value = None
|
|
|
|
|
extra = None
|
|
|
|
|
cc_entry = getattr(book, "custom_column_" + str(cc.id))
|
|
|
|
|
if cc_entry.__len__():
|
|
|
|
|
value = [c.value for c in cc_entry] if cc.is_multiple else cc_entry[0].value
|
|
|
|
|
extra = cc_entry[0].extra if hasattr(cc_entry[0], "extra") else None
|
|
|
|
|
etree.SubElement(metadata, "meta", name="calibre:user_metadata:#{}".format(cc.label),
|
|
|
|
|
content=cc.to_json(value, extra, sequence),
|
|
|
|
|
nsmap=NSMAP)
|
|
|
|
|
sequence += 1
|
|
|
|
|
|
|
|
|
|
# generate guide element and all sub elements of it
|
|
|
|
|
# Title is translated from default export language
|
|
|
|
|
guide = etree.SubElement(package, "guide")
|
|
|
|
|
etree.SubElement(guide, "reference", type="cover", title=self.translated_title, href="cover.jpg")
|
|
|
|
|
|
|
|
|
|
return package'''
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def name(self):
|
|
|
|
|
return "Metadata backup"
|
|
|
|
|