Skip to content

Multi-volume Work with Individually-bound Volumes

Cookbook URLs
Recipe: https://iiif.io/api/cookbook/recipe/0030-multi-volume/
JSON-LD Example 1: https://iiif.io/api/cookbook/recipe/0030-multi-volume/collection.json
JSON-LD Example 2: https://iiif.io/api/cookbook/recipe/0030-multi-volume/manifest_v1.json
JSON-LD Example 3: https://iiif.io/api/cookbook/recipe/0030-multi-volume/manifest_v2.json

Method 1

Example Collection for the multi-volume work

from iiif_prezi3 import Collection, ManifestRef, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "jp"
base_url = "https://iiif.io/api/cookbook/recipe/0030-multi-volume"

collection = Collection(
    id=f"{base_url}/collection.json",
    label="青楼絵本年中行事 [Seirō ehon nenjū gyōji]",
    behavior=["multi-part"],
)

collection.add_item(
    ManifestRef(
        id=f"{base_url}/manifest_v1.json",
        type="Manifest",
        label="巻 1 [Vol. 1]",
    )
)

collection.add_item(
    ManifestRef(
        id=f"{base_url}/manifest_v2.json",
        type="Manifest",
        label="巻 2 [Vol. 2]",
    )
)

print(collection.json(indent=2))

Example Manifest for vol. 1

from iiif_prezi3 import Manifest, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0030-multi-volume"

image_base = "https://iiif.io/api/image/3.0/example/reference/5b0b39c2bf5591d21d807f9aadb437fa-uclaeal_wahon_A06_bib1974505_vol01"

manifest = Manifest(
    id=f"{base_url}/manifest_v1.json",
    label="Seirō ehon nenjū gyōji : kan 1 | 青楼絵本年中行事 : 巻 1",
    behavior="individuals",
    viewingDirection="right-to-left",
)

canvas_data = [
    ("p1", "Front cover", "001", "p0001"),
    ("p2", "Page spread 1", "002", "p0002"),
    ("p3", "Page spread 2", "003", "p0003"),
    ("p4", "Page spread 3", "007", "p0004"),
    ("p5", "Page spread 4", "008", "p0005"),
]

for canvas_id, label, image_num, anno_num in canvas_data:
    manifest.make_canvas_from_iiif(
        url=f"{image_base}_{image_num}",
        id=f"{base_url}/canvas/{canvas_id}",
        label=label,
        anno_id=f"{base_url}/annotation/{anno_num}-image",
        anno_page_id=f"{base_url}/page/{canvas_id}/1",
    )

print(manifest.json(indent=2))

Example Manifest for vol. 2

from iiif_prezi3 import Manifest, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0030-multi-volume"

image_base = "https://iiif.io/api/image/3.0/example/reference/ecbc73b7cd459faf609e54eb4305da1f-uclaeal_wahon_A06_bib1974505_vol02"

manifest = Manifest(
    id=f"{base_url}/manifest_v2.json",
    label="Seirō ehon nenjū gyōji : kan 2 | 青楼絵本年中行事 : 巻 2",
    behavior="individuals",
    viewingDirection="right-to-left",
)

canvas_data = [
    ("p1", "Front cover", "001", "p0001"),
    ("p2", "Page spread 1", "002", "p0002"),
    ("p3", "Page spread 2", "003", "p0003"),
    ("p4", "Page spread 3", "004", "p0004"),
    ("p5", "Page spread 4", "005", "p0005"),
]

for canvas_id, label, image_num, anno_num in canvas_data:
    manifest.make_canvas_from_iiif(
        url=f"{image_base}_{image_num}",
        id=f"{base_url}/canvas/{canvas_id}",
        label=label,
        anno_id=f"{base_url}/annotation/{anno_num}-image",
        anno_page_id=f"{base_url}/page/{canvas_id}/1",
    )

print(manifest.json(indent=2))