def upgrade_rating(root, data): rating = None for meta in XPath('./opf:metadata/opf:meta[@name="calibre:rating"]')(root): remove_element(meta, data.refines) rating = meta.get('content') if rating is not None: create_rating(root, data.prefixes, rating)
def upgrade_rating(root, data): rating = None for meta in XPath('./opf:metadata/opf:meta[@name="calibre:rating"]')(root): remove_element(meta, data.refines) rating = meta.get('content') if rating is not None: create_rating(root, data.prefixes, rating)
def upgrade_cover(root, data): for item in XPath('./opf:metadata/opf:meta[@name="cover"]')(root): remove_element(item, data.refines) item_id = item.get('content') for item in XPath('./opf:manifest/opf:item[@id and @href and @media-type]')(root): if item.get('id') == item_id: mt = (item.get('media-type') or '').lower() if mt and 'xml' not in mt and 'html' not in mt: item.set('properties', normalize_whitespace((item.get('properties') or '') + ' cover-image'))
def upgrade_cover(root, data): for item in XPath('./opf:metadata/opf:meta[@name="cover"]')(root): remove_element(item, data.refines) item_id = item.get('content') for item in XPath('./opf:manifest/opf:item[@id and @href and @media-type]')(root): if item.get('id') == item_id: mt = (item.get('media-type') or '').lower() if mt and 'xml' not in mt and 'html' not in mt: item.set('properties', normalize_whitespace((item.get('properties') or '') + ' cover-image'))
def upgrade_date(root, data): found = False for date in XPath('./opf:metadata/dc:date')(root): val = date.text if val: found = True continue if not val or found: # only one dc:date allowed remove_element(date, data.refines)
def upgrade_series(root, data): series, series_index = None, '1.0' for meta in XPath('./opf:metadata/opf:meta[@name="calibre:series"]')(root): remove_element(meta, data.refines) series = meta.get('content') for meta in XPath('./opf:metadata/opf:meta[@name="calibre:series_index"]')(root): remove_element(meta, data.refines) series_index = meta.get('content') if series: create_series(root, data.refines, series, series_index)
def upgrade_series(root, data): series, series_index = None, '1.0' for meta in XPath('./opf:metadata/opf:meta[@name="calibre:series"]')(root): remove_element(meta, data.refines) series = meta.get('content') for meta in XPath('./opf:metadata/opf:meta[@name="calibre:series_index"]')(root): remove_element(meta, data.refines) series_index = meta.get('content') if series: create_series(root, data.refines, series, series_index)
def upgrade_timestamp(root, data): for meta in XPath('./opf:metadata/opf:meta[@name="calibre:timestamp"]')(root): m = meta.getparent() remove_element(meta, data.refines) val = meta.get('content') if val: try: val = parse_date(val, is_w3cdtf=True) except Exception: pass else: create_timestamp(root, data.prefixes, m, val)
def upgrade_timestamp(root, data): for meta in XPath('./opf:metadata/opf:meta[@name="calibre:timestamp"]')(root): m = meta.getparent() remove_element(meta, data.refines) val = meta.get('content') if val: try: val = parse_date(val, is_w3cdtf=True) except Exception: pass else: create_timestamp(root, data.prefixes, m, val)
def upgrade_date(root, data): found = False for date in XPath('./opf:metadata/dc:date')(root): val = date.text if not val: remove_element(date, data.refines) continue if found: # only one dc:date allowed remove_element(date, data.refines) else: found = True
def upgrade_title(root, data): first_title = None for title in XPath('./opf:metadata/dc:title')(root): if not title.text or not title.text.strip(): remove_element(title, data.refines) continue if first_title is None: first_title = title title_sort = None for m in XPath('./opf:metadata/opf:meta[@name="calibre:title_sort"]')(root): ans = m.get('content') if ans: title_sort = ans remove_element(m, data.refines) if first_title is not None: ts = [refdef('file-as', title_sort)] if title_sort else () set_refines(first_title, data.refines, refdef('title-type', 'main'), *ts)
def upgrade_title(root, data): first_title = None for title in XPath('./opf:metadata/dc:title')(root): if not title.text or not title.text.strip(): remove_element(title, data.refines) continue if first_title is None: first_title = title title_sort = None for m in XPath('./opf:metadata/opf:meta[@name="calibre:title_sort"]')(root): ans = m.get('content') if ans: title_sort = ans remove_element(m, data.refines) if first_title is not None: ts = [refdef('file-as', title_sort)] if title_sort else () set_refines(first_title, data.refines, refdef('title-type', 'main'), *ts)