Skip to content

Multiple Volumes in a Single Bound Volume

Cookbook URLs
Recipe: https://iiif.io/api/cookbook/recipe/0031-bound-multivolume/
JSON-LD: https://iiif.io/api/cookbook/recipe/0031-bound-multivolume/manifest.json

Method 1 -

import unicodedata

from iiif_prezi3 import Manifest, CanvasRef, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "de"
base_url = "https://iiif.io/api/cookbook/recipe/0031-bound-multivolume"
image_base = "https://iiif.io/api/image/3.0/example/reference/15f769d62ca9a3a2deca390efed75d73"

def normalize_nfd_unicode(s):
    return unicodedata.normalize('NFD', s)

manifest = Manifest(
    id=f"{base_url}/manifest.json",
    label=normalize_nfd_unicode("Gottesdienstliche Ceremonien, Oder H. Kirchen-Gebräuche Und Religions-Pflichten Der Christen"),
)

canvases = [
    ("p1", "Front cover",               "1_frontcover",          "p0001"),
    ("p2", "Inside front cover",        "2_insidefrontcover",    "p0002"),
    ("p3", "Vol. 1 title page",         "3_titlepage1",          "p0003"),
    ("p4", "Vol. 1 title page (verso)", "4_titlepage1_verso",    "p0004"),
    ("p5", "Vol. 2 title page",         "5_titlepage2",          "p0005"),
    ("p6", "Vol. 2 title page (verso)", "6_titlepage2_verso",    "p0006"),
]

for canvas_id, label, image_id, anno_num in canvases:
    manifest.make_canvas_from_iiif(
        url=f"{image_base}-{image_id}",
        id=f"{base_url}/canvas/{canvas_id}",
        label={"en": [label]},
        anno_id=f"{base_url}/annotation/{anno_num}-image",
        anno_page_id=f"{base_url}/page/{canvas_id}/1",
    )

toc = manifest.make_range(
    id=f"{base_url}/range/r0",
    label=normalize_nfd_unicode("Gottesdienstliche Ceremonien, Oder H. Kirchen-Gebräuche Und Religions-Pflichten Der Christen"),
)

r1 = toc.make_range(id=f"{base_url}/range/r1")
r1.add_label("Front Matter", "en")
r1.add_item(CanvasRef(id=f"{base_url}/canvas/p1", type="Canvas"))
r1.add_item(CanvasRef(id=f"{base_url}/canvas/p2", type="Canvas"))

r2 = toc.make_range(
    id=f"{base_url}/range/r2",
    label="Erste Ausgabe. Begreift die Ceremonien der Lutheraner von der Augspurgischen Confession, der Reformirten, der Holländischen u. a. Kirchen",
)
r2.add_item(CanvasRef(id=f"{base_url}/canvas/p3", type="Canvas"))
r2.add_item(CanvasRef(id=f"{base_url}/canvas/p4", type="Canvas"))

r3 = toc.make_range(
    id=f"{base_url}/range/r3",
    label="Zweyte Ausgabe. Begreift die Ceremonien der Engl. hohen Kirche : Der Quacker, der Anabaptisten, der Adamiten, der Flagellanten, der Frey-Maurer, der Rhinsbürger...",
)
r3.add_item(CanvasRef(id=f"{base_url}/canvas/p5", type="Canvas"))
r3.add_item(CanvasRef(id=f"{base_url}/canvas/p6", type="Canvas"))

print(manifest.json(indent=2))