File manifest from api - milnegeneseo/digital-scholarly-editing GitHub Wiki

Here's a script for pulling all the full-sized image urls via the IIIF API, together with the identifying label for each image, and putting them into a single csv manifest that can be opened in a spreadsheet for additional documentation.

# First, import some libraries we'll need

import json
import requests

# Next, define a function to
# get the image urls for a given volume

def volImages(url):
    response = requests.get(url)
    manifest = json.loads(response.text)
    imageSeq = manifest['sequences']
    canvases = imageSeq[0]['canvases']
    images = [item['images'] for item in canvases]
    imageList = [image[0] for image in images]
    resources = [item['resource'] for item in imageList]
    imageUrls = [item['@id'] for item in resources]
    return(imageUrls)

# Mutatis mutandis for image labels

def volLabels(url):
    response = requests.get(url)
    manifest = json.loads(response.text)
    imageSeq = manifest['sequences']
    canvases = imageSeq[0]['canvases']
    labels = [item['label'] for item in canvases]
    return(labels)

# Now, let's get all our image urls

volOneImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/252/manifest.json')
volTwoImages = volImages('https://cdm16003.contentdm.oclc.org/iiif/info/p16003coll16/429/manifest.json')
volThreeImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/500/manifest.json')
volFourImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/663/manifest.json')
volFiveImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/898/manifest.json')
volSixImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1262/manifest.json')
volSevenImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1003/manifest.json')
volEightImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1321/manifest.json')
correctedProofImages = volImages('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1321/manifest.json')

# Let's get our labels

volOneLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/252/manifest.json')
volTwoLabels = volLabels('https://cdm16003.contentdm.oclc.org/iiif/info/p16003coll16/429/manifest.json')
volThreeLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/500/manifest.json')
volFourLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/663/manifest.json')
volFiveLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/898/manifest.json')
volSixLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1262/manifest.json')
volSevenLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1003/manifest.json')
volEightLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1321/manifest.json')
correctedProofLabels = volLabels('https://cdm16003.contentdm.oclc.org//iiif/info/p16003coll16/1321/manifest.json')

# Concatenate images and labels respectively 
# to create two megalists we can zip together

allImages = volOneImages + volTwoImages + volThreeImages + volFourImages + volFiveImages + volSixImages + volSevenImages + volEightImages + correctedProofImages
allLabels = volOneLabels + volTwoLabels + volThreeLabels + volFourLabels + volSixLabels + volSevenLabels + volEightLabels + correctedProofLabels

# Finish by zipping the two megalists and printing them 

for label, image in zip(allLabels, allImages):
    print(f'{label},{image}')

# Run from command line:
# python waldenImagesLabels.py > manifest.csv