Created
October 27, 2021 16:22
-
-
Save kmcelwee/4de37dd3ebad4fcad3d06a1d1670086a to your computer and use it in GitHub Desktop.
Generate IIIF proxy mapfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# goal is to map from | |
# /library/levi-strauss-anthropologie-structurale-1958/gallery/images/front-cover/iiif/ | |
# ..to.. | |
# https://iiif-cloud.princeton.edu/iiif/2/ee%2F09ce512bce02%2Fintermediate_file | |
import json | |
from django.urls import reverse | |
from derrida.books.models import Instance | |
from derrida.common.utils import absolutize_url | |
def localize_iiif_image(canvas, work_instance): | |
# given a djiffy canvas and associated work, | |
# # use the piffle image api client for the canvas image and | |
# replace original iiif api endpoint and image id with local proxy iiif url | |
img = canvas.image | |
img.api_endpoint = absolutize_url( | |
reverse('books:canvas-detail', | |
kwargs={'slug': work_instance.slug, | |
'short_id': 'images'})).rstrip('/') | |
img.image_id = '%s/iiif' % canvas.short_id | |
return img | |
def parse_pul_image_url(url_string): | |
return url_string.split('/info.json')[0] | |
def parse_local_image_url(url_string): | |
return url_string.split('https://derridas-margins.princeton.edu')[1].split('full/full/0/default.jpg')[0] | |
all_instances = Instance.objects.filter(digital_edition__isnull=False) | |
mapping = {} | |
for instance in all_instances: | |
instance_canvases = [] | |
instance_canvases.extend(instance.overview_images()) | |
instance_canvases.extend(instance.annotated_pages()) | |
instance_canvases.extend(instance.insertion_images()) | |
for canvas in instance_canvases: | |
local_image_url = str(localize_iiif_image(canvas, instance)) | |
local_image_url = parse_local_image_url(local_image_url) | |
pul_image_url = canvas.image.info() | |
pul_image_url = parse_pul_image_url(pul_image_url) | |
mapping[local_image_url] = pul_image_url | |
with open('iiif-proxy.map', 'w') as f: | |
for local_image_url, pul_image_url in mapping.items(): | |
f.write(f"{local_image_url} {pul_image_url};\n") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment