def factory(self):
        """Initalizes manifest factory and set properties"""

        factory = ManifestFactory()  # instance of ManifestFactory

        self.setFactoryProperties(
            factory
        )  # set properties of ManifestFactory using global variables

        return factory
Beispiel #2
0
	def buildFactory(self, version):
		if self.require_version:
			fac = ManifestFactory(version=self.require_version)
		else:
			fac = ManifestFactory(version=version)
		self.debug_stream = StringIO.StringIO()
		fac.set_debug("warn")
		fac.set_debug_stream(self.debug_stream)
		return fac
Beispiel #3
0
imageWidth = 1200
imageHeight = 1800

imageUris = [BASEURL + "resources/page1-full.png", BASEURL + "resources/page2-full.png"]
textUris = [BASEURL + "resources/page1.txt", BASEURL + "resources/page2.txt"]
htmlUris = [BASEURL + "resources/page1.html", BASEURL + "resources/page2.html"]
transcriptions = [ 
	["Top of First Page to Display", "Middle of First Page on Angle", "Bottom of First Page to Display"],
	["Top of Second Page to Display", "Middle of Second Page on Angle", "Bottom of Second Page on Angle"]
]

line1Dims = "225,70,750,150"


# Configure the factory
fac = ManifestFactory()
fac.set_base_metadata_uri(BASEURL)
fac.set_base_metadata_dir(HOMEDIR)
fac.set_base_image_uri(IMAGE_BASEURL)
fac.set_iiif_image_info(2.0, 1)
fac.set_debug('error')

testInfo = {

# Done
1 : {"title": "Minimum Required Fields"},
2 : {"title": "Metadata Pairs", 'mfprops': [('metadata',{'date': 'some date'})]},
3 : {"title": "Metadata Pairs with Languages", 'mfprops': [('metadata', {'date': {'en':'some data','fr':'quelquetemps'}})]},
4 : {"title": "Metadata Pairs with Multiple Values in same Language", 'mfprops':[('metadata',{'date': ['some date', 'some other date']})]},
5 : {"title": "Description field", 'mfprops': [('description',"This is a description")]},
6 : {"title": "Multiple Descriptions", 'mfprops': [('description',["This is one description", {"en":"This is another"}])]},
Beispiel #4
0
    txt = casere.sub('\\1', txt)
    txt = abre.sub('\\1', txt)
    txt = jre.sub('\\1', txt)
    return txt


# -----------------------------------------------------------------------------

imageDirectory = "/Users/azaroth/Dropbox/SharedCanvasData/m804/images/"
jsDirectory = "/Users/azaroth/Dropbox/SharedCanvasData/m804/js/"
# resDirectory = "/Users/azaroth/Dropbox/SharedCanvas/impl/demo1d/res_random/"
resDirectory = "/Users/azaroth/Dropbox/IIIF/demos/mirador/data/"
minFolio = 1
maxFolio = 258

fac = ManifestFactory()
fac.set_base_metadata_uri(
    "http://www.shared-canvas.org/impl/demo1d/res_human/")
fac.set_base_image_uri("http://www.shared-canvas.org/iiif/")
fac.set_base_metdata_dir(
    "/Users/azaroth/Dropbox/SharedCanvas/impl/demo1d/res_human/")
fac.set_iiif_image_conformance(1.1, 2)
fac.set_debug("error")  # warn will warn for recommendations, by default

rubricCss = ".red {color: red}"
initialCss = ".bold {font-weight: bold}"

mf = fac.manifest(ident="manifest", label="Pierpont Morgan MS.804")
mf.set_metadata({
    "Dates":
    "Author's version circa 1380, scribed circa 1400, illuminations circa 1420"
Beispiel #5
0
    def create_manifest(self):
        """create manifest"""
        # to be set in sysargs or via imagemagick
        imageWidth = int(self.width)
        imageHeight = int(self.height)
        identifier = "test"

        fh = file(self.path)
        data = fh.read()
        fh.close()
        dom = etree.XML(data)
        metsNS = 'http://www.loc.gov/METS/'
        modsNS = 'http://www.loc.gov/mods/v3'
        xlinkNS = 'http://www.w3.org/1999/xlink'
        ALLNS = {'mets': metsNS, 'mods': modsNS, 'xlink': xlinkNS}

        # Extract basic info
        identifier = dom.xpath(
            '/mets:mets/mets:dmdSec/mets:mdWrap[@MDTYPE="MODS"]/mets:xmlData/mods:mods/mods:recordInfo/mods:recordIdentifier/text()',
            namespaces=ALLNS)[0]
        mflabel = dom.xpath(
            '/mets:mets/mets:structMap[@TYPE="LOGICAL"]/mets:div[@TYPE="manuscript"]/@LABEL',
            namespaces=ALLNS)[0]
        manifestType = 'sc:Manifest'

        # Extract image info
        images = dom.xpath(
            '/mets:mets/mets:fileSec/mets:fileGrp/mets:file[@MIMETYPE="image/jpeg"]',
            namespaces=ALLNS)
        struct = dom.xpath(
            '/mets:mets/mets:structMap[@TYPE="PHYSICAL"]/mets:div[@TYPE="physSequence"]/mets:div',
            namespaces=ALLNS)

        imageHash = {}
        for img in images:
            imageHash[img.xpath('./@ID', namespaces=ALLNS)[0]] = img.xpath(
                './mets:FLocat/@xlink:href', namespaces=ALLNS)[0]

        # Configure the factory
        fac = ManifestFactory()
        fac.set_base_metadata_uri(self.baseimguri)
        fac.set_base_image_uri(self.basemetadatauri + identifier + '/')
        fac.set_iiif_image_conformance(1.1, 1)

        # Build the Manifest
        mf = fac.manifest(ident="manifest", label=mflabel)
        mf.attribution = "Provided by the Bodleian Library, Oxford University"
        mf.viewingHint = "paged" if manifestType == "PAGEDOBJECT" else "individuals"
        mf.description = "Description of Manuscript Goes Here"

        # And walk through the pages
        seq = mf.sequence(ident="normal", label="Normal Order")
        for st in struct:
            # Find label, and image ID
            label = st.xpath('./@ORDERLABEL', namespaces=ALLNS)[0]
            image = imageHash[st.xpath('./mets:fptr[1]/@FILEID',
                                       namespaces=ALLNS)[0]]

            # Build the Canvas
            cvs = seq.canvas(ident="c%s" % image, label=label)
            cvs.set_hw(imageHeight, imageWidth)

            # Build the Image Annotation
            anno = cvs.annotation(ident="a%s" % image)

            img = anno.image(ident="%s" % image, iiif=True)
            img.set_hw(imageHeight, imageWidth)

        # Serialize
        mfjs = mf.toJSON()
        srlzd = json.dumps(mfjs, sort_keys=True, indent=2)

        # write to textfile
        text_file = open(mflabel.replace(" ", "") + ".json", "w")
        text_file.write(srlzd)
        text_file.close()

        return srlzd
manifestType = dom.xpath('/mets:mets/@TYPE', namespaces=ALLNS)[0]

# Extract image info
images = dom.xpath(
    '/mets:mets/mets:fileSec/mets:fileGrp/mets:file[@MIMETYPE="image/jp2"]',
    namespaces=ALLNS)
struct = dom.xpath(
    '/mets:mets/mets:structMap/mets:div[@TYPE="CITATION"]/mets:div',
    namespaces=ALLNS)
imageHash = {}
for img in images:
    imageHash[img.xpath('./@ID', namespaces=ALLNS)[0]] = img.xpath(
        './mets:FLocat/@xlink:href', namespaces=ALLNS)[0]

# Configure the factory
fac = ManifestFactory()
fac.set_base_metadata_uri("http://ids.lib.harvard.edu/iiif/metadata/")
fac.set_base_image_uri("http://ids.lib.harvard.edu/ids/view/" + identifier +
                       '/')
fac.set_iiif_image_conformance(1.1, 1)

# Build the Manifest
mf = fac.manifest(ident="manifest", label=mflabel)
mf.attribution = "Provided by the Houghton Library, Harvard University"
mf.viewingHint = "paged" if manifestType == "PAGEDOBJECT" else "individuals"
mf.description = "Description of Manuscript MS Richardson 44 Goes Here"

# And walk through the pages
seq = mf.sequence(ident="normal", label="Normal Order")
for st in struct:
    # Find label, and image ID
Beispiel #7
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

from factory import ManifestFactory
from lxml import etree
import os

fh = file('web-view.html')
html = fh.read()
fh.close()
dom = etree.HTML(html)
subs = dom.xpath('//div[@class="related-records"]/dl[@class="return-art"]')

fac = ManifestFactory()
fac.set_base_metadata_uri("http://vm-imgrepo-tdp.nga.gov/public/manifests/")
fac.set_base_image_uri("http://vm-imgrepo-tdp.nga.gov/public/objects/")
fac.set_base_metadata_dir("/mnt/images/public/manifests")
fac.set_iiif_image_info(2.0, 2)
fac.set_debug("error") # warn will warn for recommendations, by default

label = "Cézanne Sketchbook"
mdhash = {"Dates": "c. 1877/1900", "Creator": "Cézanne, Paul (1839-1906)"}
mdhash["Inscription"] = "Various notations overall"
mdhash["Provenance"] = """
<div>Paul Cézanne (the artist's son), Paris;
<br/>Paul Guillaume, Paris;
<br/>Adrien Chappuis, Tresserve, Switzerland, 1933;
<br/>Paul Mellon, Upperville, VA, 1967;
<br/>gift to NGA, 1991
</div>"""
def do_record(rec, rx, host, s, cxn, sequence, lastrec):
	deleted = rec.xpath('./o:header/@status', namespaces=ALLNS)
	if deleted:
		return
	format = rec.xpath('./o:metadata/odc:dc/dc:format/text()', namespaces=ALLNS)
	# Strip out non images
	skip = 0
	for f in format:
		if f.find('/') > -1 and (not f.startswith('image/') or f.endswith('/pdf')):
			skip = 1
			break
	if skip:
		return

	# request info to see if we're compound object (cpd)
	# if we are, then work backwards from current ID to find records for individual pages
	# Then reverse the order and call it a Manifest :)

	identifier = rec.xpath('./o:header/o:identifier/text()', namespaces=ALLNS)[0]
	idx = int(identifier[identifier.rfind('/')+1:])
	ajaxinfo = get_json('http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' % (host, s, idx))
	try:
		if not ajaxinfo['imageinfo'].has_key('type'):
			return
	except:
		print 'http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' % (host, s, idx)
		print ajaxinfo
		raise


	if ajaxinfo['imageinfo']['type'] == 'cpd':
		# Compound Object to process separately
		# Walk backwards through images until hit previous entry in OAI list
		# make a folder...
		print "--- Compound Object: %s" % idx
		sys.stdout.flush()
		if os.path.exists('%s/%s/manifest.json' % (s,idx)):
			return

		try:
			os.mkdir("%s/%s" % (s, idx))
		except:
			pass
		os.chdir("%s/%s" % (s, idx))
		if rx == 0:
			# Need to check last record of previous chunk
			if lastrec:
				previd = lastrec.xpath('./o:header/o:identifier/text()', namespaces=ALLNS)[0]
				start_image = int(previd[previd.rfind('/')+1:])+1
			else:
				start_image = 1
		else:
			prev = recs[rx-1]
			previd = prev.xpath('./o:header/o:identifier/text()', namespaces=ALLNS)[0]
			start_image = int(previd[previd.rfind('/')+1:])+1

		pages = []
		for imgid in range(start_image, idx):
			pinfo = {'id': imgid}
			# get H/W from ajax
			iajax = get_json('http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' % (host, s, imgid))
			if not iajax['imageinfo'].has_key('height'):
				continue
			pinfo['h'] = iajax['imageinfo']['height']
			pinfo['w'] = iajax['imageinfo']['width']
			if (int(pinfo['h']) == 0 or int(pinfo['w']) == 0):
				continue
			try:
				pinfo['title'] = iajax['imageinfo']['title']['0']
			except:
				pinfo['title'] = "Image %s" % imgid
			cxn.put("%s::%s::%s" % (host, s, imgid), "%s,%s" % (pinfo['w'], pinfo['h']))
			pages.append(pinfo)

		if not pages:
			# back to host directory
			os.chdir('../..')
			return
		title = rec.xpath('./o:metadata/odc:dc/dc:title/text()', namespaces=ALLNS)
		creator = rec.xpath('./o:metadata/odc:dc/dc:creator/text()', namespaces=ALLNS)
		date = rec.xpath('./o:metadata/odc:dc/dc:date/text()', namespaces=ALLNS)
		description = rec.xpath('./o:metadata/odc:dc/dc:description/text()', namespaces=ALLNS)
		language = rec.xpath('./o:metadata/odc:dc/dc:language/text()', namespaces=ALLNS)

		# reinstantiate factory for subdir. not great but ...

		cfac = ManifestFactory()
		cfac.set_base_metadata_uri(BASE_MD_URL + "/%s/%s/%s/" % (host, s, idx))
		cfac.set_base_image_uri(BASE_IMG_URL + "/%s/%s/" % (host, s))
		cfac.set_base_metadata_dir(os.getcwd())
		cfac.set_iiif_image_info("2.0", "1")
		fac.set_debug('error')


		cmanifest = cfac.manifest(label=title[0])

		try:
			cmanifest.set_metadata({"Creator": creator[0]})
		except:
			pass
		try:
			cmanifest.set_metadata({"Date": date[0]})
		except:
			pass
		try:
			cmanifest.set_metadata({"Language": language[0]})
		except:
			pass
		try:
			cmanifest.description = description[0]
		except:
			pass
		cmanifest.viewingHint = "paged"
		cseq = cmanifest.sequence()
		for p in pages:
			cvs = cseq.canvas(ident="p%s" % p['id'], label=p['title'])
			cvs.set_hw(int(p['h']), int(p['w']))
			anno = cvs.annotation()
			img = anno.image(str(p['id']), iiif=True)
			img.height = p['h']
			img.width = p['w']

		try:
			cmanifest.toFile(compact=False)
		except:
			print "FAILED TO WRITE %s/%s/manifest.json" % (s, idx)
		# back to host directory
		os.chdir('../..')
	else:
		# We're just a collection of images

		h = ajaxinfo['imageinfo']['height']
		w = ajaxinfo['imageinfo']['width']
		if int(h) == 0 or int(w) == 0:
			return
		ttl = ajaxinfo['imageinfo']['title']['0']
		cxn.put("%s::%s::%s" % (host, s, idx), "%s,%s" % (w, h))

		cvs = sequence.canvas(ident="p%s" % idx, label=ttl)
		cvs.set_hw(int(h), int(w))
		anno = cvs.annotation()
		img = anno.image(str(idx), iiif=True)
		img.height = h
		img.width = w
Beispiel #9
0
	"dc":"http://purl.org/dc/elements/1.1/", 
	"fedora-model":"info:fedora/fedora-system:def/model#",
	"fedora":"info:fedora/fedora-system:def/relations-external#",
	"nlw":"http://dev.llgc.org.uk/digitisation/identifiers/",
	"oai":"http://www.openarchives.org/OAI/2.0/",
	"rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#",
	"oai_dc":"http://www.openarchives.org/OAI/2.0/oai_dc/",
	"xsi":"http://www.w3.org/2001/XMLSchema-instance",
	"mix":"http://www.loc.gov/mix/v20",
	"xlink":"http://www.w3.org/1999/xlink", 
	"mods":"http://www.loc.gov/mods/v3",
	"rights":"http://cosimo.stanford.edu/sdr/metsrights/"}

from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_image_uri("http://dams.llgc.org.uk/iiif/image/")
fac.set_iiif_image_info(version="1.1", lvl="1")
fac.set_base_metadata_dir('/path/to/data')
fac.set_base_metadata_uri("http://showcase.iiif.io/shims/wales/potter/")
fac.set_debug('error')


def xpath(dom, path):
	return dom.xpath(path, namespaces=namespaces)

def fetch(url, type="XML", retry=0):

	# Don't cache here, only the results
	fh = urllib.urlopen(url)
	data = fh.read()
from factory import ManifestFactory
from SPARQLWrapper import SPARQLWrapper, JSON
import os
import urllib

fac = ManifestFactory()
fac.set_base_image_uri("http://iiif-dev.localhost/services/2.0")
fac.set_iiif_image_info(version="2.0")

basemd = "http://localhost/prezi/"
basedir = "/path/to/htdocs/prezi"

sparql = SPARQLWrapper("http://collection.britishmuseum.org/sparql")
sparql.setReturnFormat(JSON)

dest = "/path/to/images/britishmuseum"

prefixes = """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX bmo: <http://collection.britishmuseum.org/id/ontology/>
PREFIX crm: <http://erlangen-crm.org/current/>
PREFIX bbcpont: <http://purl.org/ontology/po/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX qudt: <http://qudt.org/schema/qudt#>
PREFIX ycbat: <http://collection.britishart.yale.edu/id/thesauri/event/type/>
PREFIX ycbao: <http://collection.britishart.yale.edu/id/object/>
"""
fh.close()

fields = []
for l in lines:
    row = {}
    cells = l.split('\t')
    for r in range(len(cells)):
        row[r] = cells[r]
    fields.append(row)

fields = fields[1:]


resDirectory = "/Users/azaroth/Dropbox/IIIF/demos/mirador/data/vhmml/"

fac = ManifestFactory()
fac.set_base_metadata_uri("http://localhost/demos/mirador/data/vhmml/")
fac.set_base_image_uri("http://localhost/services/image/iiif2/")
fac.set_debug("error") # warn will warn for recommendations, by default

mf = fac.manifest(label=fields[0][0])
mf.set_metadata({"Date": fields[0][6], "City": fields[0][19],
                    "Library": fields[0][20], "Country of Origin": fields[0][21],
                    "Genre": fields[0][22], "Total Folios": fields[0][28]})

mf.attribution = fields[0][14] + "\n" + fields[0][18]
mf.viewingHint = "paged"
mf.viewingDirection = "left-to-right"

seq = mf.sequence(ident="normal", label="Normal Order")
Beispiel #12
0
import json

from bottle import Bottle, route, run, request, response, abort, error

import os, sys
import factory
from lxml import etree

import uuid
import urllib, urllib2, urlparse

from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_image_uri("http://iiif-dev.localhost/services/chronam/")
fac.set_iiif_image_info(version="2.0", lvl="1")
fac.set_base_metadata_dir(
    '/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/chronam/')
fac.set_base_metadata_uri("http://localhost:8080/")
# http://localhost:8080/list/lccn/sn99021999/1915-03-27/ed-1/seq-1.json
fac.set_debug('error')

PFX = ""
INFO_CACHE = {}
CACHEDIR = '/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/chronam/'


class ChronAmManifestShim(object):
    def __init__(self):
        pass

import json

from bottle import Bottle, route, run, request, response, abort, error

import os, sys
import factory
from lxml import etree

import uuid
import urllib, urllib2, urlparse

from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_image_uri("http://showcase.iiif.io/shims/veridian/image")
fac.set_iiif_image_info(version="2.0", lvl="1")
fac.set_base_metadata_dir('/tmp/')
fac.set_base_metadata_uri("http://showcase.iiif.io/shims/veridian/prezi/")
fac.set_debug('error')

PFX = ""
INFO_CACHE = {}
CACHEDIR = '/tmp/'
VSERVER = "http://cdnc.ucr.edu/cgi-bin/cdnc"


class ManifestShim(object):

    def __init__(self):
Beispiel #14
0
def do_record(rec, rx, host, s, cxn, sequence, lastrec):
    deleted = rec.xpath('./o:header/@status', namespaces=ALLNS)
    if deleted:
        return
    format = rec.xpath('./o:metadata/odc:dc/dc:format/text()',
                       namespaces=ALLNS)
    # Strip out non images
    skip = 0
    for f in format:
        if f.find('/') > -1 and (not f.startswith('image/')
                                 or f.endswith('/pdf')):
            skip = 1
            break
    if skip:
        return

    # request info to see if we're compound object (cpd)
    # if we are, then work backwards from current ID to find records for individual pages
    # Then reverse the order and call it a Manifest :)

    identifier = rec.xpath('./o:header/o:identifier/text()',
                           namespaces=ALLNS)[0]
    idx = int(identifier[identifier.rfind('/') + 1:])
    ajaxinfo = get_json(
        'http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' %
        (host, s, idx))
    try:
        if not ajaxinfo['imageinfo'].has_key('type'):
            return
    except:
        print 'http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' % (
            host, s, idx)
        print ajaxinfo
        raise

    if ajaxinfo['imageinfo']['type'] == 'cpd':
        # Compound Object to process separately
        # Walk backwards through images until hit previous entry in OAI list
        # make a folder...
        print "--- Compound Object: %s" % idx
        sys.stdout.flush()
        if os.path.exists('%s/%s/manifest.json' % (s, idx)):
            return

        try:
            os.mkdir("%s/%s" % (s, idx))
        except:
            pass
        os.chdir("%s/%s" % (s, idx))
        if rx == 0:
            # Need to check last record of previous chunk
            if lastrec:
                previd = lastrec.xpath('./o:header/o:identifier/text()',
                                       namespaces=ALLNS)[0]
                start_image = int(previd[previd.rfind('/') + 1:]) + 1
            else:
                start_image = 1
        else:
            prev = recs[rx - 1]
            previd = prev.xpath('./o:header/o:identifier/text()',
                                namespaces=ALLNS)[0]
            start_image = int(previd[previd.rfind('/') + 1:]) + 1

        pages = []
        for imgid in range(start_image, idx):
            pinfo = {'id': imgid}
            # get H/W from ajax
            iajax = get_json(
                'http://%s/utils/ajaxhelper/?action=1&CISOROOT=%s&CISOPTR=%s' %
                (host, s, imgid))
            if not iajax['imageinfo'].has_key('height'):
                continue
            pinfo['h'] = iajax['imageinfo']['height']
            pinfo['w'] = iajax['imageinfo']['width']
            if (int(pinfo['h']) == 0 or int(pinfo['w']) == 0):
                continue
            try:
                pinfo['title'] = iajax['imageinfo']['title']['0']
            except:
                pinfo['title'] = "Image %s" % imgid
            cxn.put("%s::%s::%s" % (host, s, imgid),
                    "%s,%s" % (pinfo['w'], pinfo['h']))
            pages.append(pinfo)

        if not pages:
            # back to host directory
            os.chdir('../..')
            return
        title = rec.xpath('./o:metadata/odc:dc/dc:title/text()',
                          namespaces=ALLNS)
        creator = rec.xpath('./o:metadata/odc:dc/dc:creator/text()',
                            namespaces=ALLNS)
        date = rec.xpath('./o:metadata/odc:dc/dc:date/text()',
                         namespaces=ALLNS)
        description = rec.xpath('./o:metadata/odc:dc/dc:description/text()',
                                namespaces=ALLNS)
        language = rec.xpath('./o:metadata/odc:dc/dc:language/text()',
                             namespaces=ALLNS)

        # reinstantiate factory for subdir. not great but ...

        cfac = ManifestFactory()
        cfac.set_base_metadata_uri(BASE_MD_URL + "/%s/%s/%s/" % (host, s, idx))
        cfac.set_base_image_uri(BASE_IMG_URL + "/%s/%s/" % (host, s))
        cfac.set_base_metadata_dir(os.getcwd())
        cfac.set_iiif_image_info("2.0", "1")
        fac.set_debug('error')

        cmanifest = cfac.manifest(label=title[0])

        try:
            cmanifest.set_metadata({"Creator": creator[0]})
        except:
            pass
        try:
            cmanifest.set_metadata({"Date": date[0]})
        except:
            pass
        try:
            cmanifest.set_metadata({"Language": language[0]})
        except:
            pass
        try:
            cmanifest.description = description[0]
        except:
            pass
        cmanifest.viewingHint = "paged"
        cseq = cmanifest.sequence()
        for p in pages:
            cvs = cseq.canvas(ident="p%s" % p['id'], label=p['title'])
            cvs.set_hw(int(p['h']), int(p['w']))
            anno = cvs.annotation()
            img = anno.image(str(p['id']), iiif=True)
            img.height = p['h']
            img.width = p['w']

        try:
            cmanifest.toFile(compact=False)
        except:
            print "FAILED TO WRITE %s/%s/manifest.json" % (s, idx)
        # back to host directory
        os.chdir('../..')
    else:
        # We're just a collection of images

        h = ajaxinfo['imageinfo']['height']
        w = ajaxinfo['imageinfo']['width']
        if int(h) == 0 or int(w) == 0:
            return
        ttl = ajaxinfo['imageinfo']['title']['0']
        cxn.put("%s::%s::%s" % (host, s, idx), "%s,%s" % (w, h))

        cvs = sequence.canvas(ident="p%s" % idx, label=ttl)
        cvs.set_hw(int(h), int(w))
        anno = cvs.annotation()
        img = anno.image(str(idx), iiif=True)
        img.height = h
        img.width = w
Beispiel #15
0
        s = sinfo['id']

        if SETS_TO_DO and not s in SETS_TO_DO:
            print "skipping %s / %s" % (s, sinfo['name'])
            continue

        try:
            print "Processing Set: %s" % sinfo['name']
        except:
            print "Processing Set: %s" % s
        sys.stdout.flush()
        if os.path.exists(s):
            continue
        os.mkdir(s)

        fac = ManifestFactory()
        fac.set_base_metadata_uri(BASE_MD_URL + "/%s/%s/" % (host, s))
        fac.set_base_metadata_dir(os.path.join(os.getcwd(), s))
        fac.set_base_image_uri(BASE_IMG_URL + "/%s/%s/" % (host, s))
        fac.set_iiif_image_info("2.0", "1")
        fac.set_debug('error')

        manifest = fac.manifest(label=sinfo['name'])
        if sinfo['desc']:
            manifest.description = str(sinfo['desc'])
        manifest.attribution = "Converted from http://%s/" % host
        manifest.viewingHint = "individuals"

        sequence = manifest.sequence()
        dom = get_xml(
            'http://%s/oai/oai.php?verb=ListRecords&set=%s&metadataPrefix=oai_dc'
Beispiel #16
0
import os
import urllib
import json

url = "https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=atom&language=en"

fh = urllib.urlopen(url)
data = fh.read()
fh.close()

nss = {"atom": "http://www.w3.org/2005/Atom"}

dom = etree.XML(data)
subs = dom.xpath('//atom:summary[@type="html"]/text()', namespaces=nss)

fac = ManifestFactory()
fac.set_base_metadata_uri("http://iiif-dev.localhost/prezi/mw/")
fac.set_base_image_uri("http://dlss-dev-azaroth.stanford.edu/services/iiif/")
fac.set_base_metadata_dir("/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/mw")
fac.set_iiif_image_info(2.0, 2)
fac.set_debug("error")  # warn will warn for recommendations, by default

label = "Wikimedia Pictures of the Day"

mf = fac.manifest(ident="manifest", label=label)
mf.viewingHint = "individuals"
seq = mf.sequence(ident="normal", label="Normal Order")


c = 0
for s in subs:
Beispiel #17
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

from factory import ManifestFactory
from lxml import etree
import os

fh = file('web-view.html')
html = fh.read()
fh.close()
dom = etree.HTML(html)
subs = dom.xpath('//div[@class="related-records"]/dl[@class="return-art"]')

fac = ManifestFactory()
fac.set_base_metadata_uri("http://vm-imgrepo-tdp.nga.gov/public/manifests/")
fac.set_base_image_uri("http://vm-imgrepo-tdp.nga.gov/public/objects/")
fac.set_base_metadata_dir("/mnt/images/public/manifests")
fac.set_iiif_image_info(2.0, 2)
fac.set_debug("error")  # warn will warn for recommendations, by default

label = "Cézanne Sketchbook"
mdhash = {"Dates": "c. 1877/1900", "Creator": "Cézanne, Paul (1839-1906)"}
mdhash["Inscription"] = "Various notations overall"
mdhash["Provenance"] = """
<div>Paul Cézanne (the artist's son), Paris;
<br/>Paul Guillaume, Paris;
<br/>Adrien Chappuis, Tresserve, Switzerland, 1933;
<br/>Paul Mellon, Upperville, VA, 1967;
<br/>gift to NGA, 1991
</div>"""
Beispiel #18
0
from factory import ManifestFactory
from SPARQLWrapper import SPARQLWrapper, JSON 
import os
import urllib

fac = ManifestFactory()
fac.set_base_image_uri("http://iiif-dev.localhost/services/2.0")
fac.set_iiif_image_info(version="2.0")

dest = "/path/to/images/britishmuseum"

sparql = SPARQLWrapper("http://collection.britishart.yale.edu/openrdf-sesame/repositories/ycba")
sparql.setReturnFormat(JSON)

prefixes = """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX bmo: <http://collection.britishmuseum.org/id/ontology/>
PREFIX crm: <http://erlangen-crm.org/current/>
PREFIX bbcpont: <http://purl.org/ontology/po/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX qudt: <http://qudt.org/schema/qudt#>
PREFIX ycbat: <http://collection.britishart.yale.edu/id/thesauri/event/type/>
PREFIX ycbao: <http://collection.britishart.yale.edu/id/object/>
"""

q = """
SELECT DISTINCT ?exhibition ?name {
 ?obj crm:P12i_was_present_at ?exhibition .
    def create_manifest(self, imgfiles):
        """create manifest"""
        # to be set in sysargs or via imagemagick
        imageWidth = int(self.width)
        imageHeight = int(self.height)
        identifier = "test file import"

        # setup factory
        factory = ManifestFactory()
        factory.set_base_metadata_uri("http://www.example.org/metadata/")
        factory.set_base_image_uri("http://www.example.org/iiif/")
        factory.set_iiif_image_info(version="2.0", lvl="2")

        # setup manifest
        mf = factory.manifest(label="Manifest")
        mf.viewingHint = "paged"
        mf.set_metadata({
            "test label": "test value",
            "next label": "next value"
        })
        mf.attribution = "Provided by Bodleian Library, Oxford, using ManifestFactory code from the Houghton Library, Harvard University"
        mf.viewingHint = "paged"
        mf.description = "Description of Manuscript Goes Here"

        seq = mf.sequence()

        # loop through images in path
        for img in imgfiles:

            # get path, full image name and extension
            imgPath, imgFullName = os.path.split(img)
            imgName, imgExt = os.path.splitext(imgFullName)

            # Mostly identity will come from incrementing number (f1r, f1v,...)
            # or the image's identity

            cvs = seq.canvas(ident="c%s" % imgName,
                             label="Canvas %s" % imgName)
            cvs.set_hw(imageWidth, imageHeight)
            anno = cvs.annotation()
            al = cvs.annotationList("foo")

            # for demo purposes adds choices
            img = factory.image(imgFullName, iiif=True)
            img2 = factory.image(imgName + 'b' + imgExt, iiif=True)
            chc = anno.choice(img, [img2])

        json = mf.toString(compact=False)

        # write to text file
        text_file = open(identifier.replace(" ", "") + ".json", "w")
        text_file.write(json)
        text_file.close()

        return json
Beispiel #20
0
import json
import urllib, os
import copy

from factory import ManifestFactory

BASEURL = "http://iiif.io/api/presentation/2.0/example/errors/"
HOMEDIR = "../source/api/presentation/2.0/example/errors/"
IMAGE_BASEURL = "http://iiif.io/api/image/2.0/example/"

# Configure a factory for the fake Manifests
fac = ManifestFactory()
fac.set_base_metadata_uri(BASEURL)
fac.set_base_metadata_dir(HOMEDIR)
fac.set_base_image_uri(IMAGE_BASEURL)
fac.set_iiif_image_info(2.0, 1)
fac.set_debug('error')

coll = fac.collection(label="Collection of Errors")
TEST_ID = 0

mf = fac.manifest(label="manifest")
s = mf.sequence()
c = s.canvas(ident="c1", label="canvas")
c.set_hw(1, 1)
basejs = mf.toJSON(top=True)

anno = c.annotation()
anno.image(ident="http://example.net/image.jpg", iiif=False)
basejs_image = mf.toJSON(top=True)
Beispiel #21
0
import os
import urllib
import json

url = "https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=atom&language=en"

fh = urllib.urlopen(url)
data = fh.read()
fh.close()

nss = {'atom': 'http://www.w3.org/2005/Atom'}

dom = etree.XML(data)
subs = dom.xpath('//atom:summary[@type="html"]/text()', namespaces=nss)

fac = ManifestFactory()
fac.set_base_metadata_uri("http://iiif-dev.localhost/prezi/mw/")
fac.set_base_image_uri("http://dlss-dev-azaroth.stanford.edu/services/iiif/")
fac.set_base_metadata_dir("/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/mw")
fac.set_iiif_image_info(2.0, 2)
fac.set_debug("error")  # warn will warn for recommendations, by default

label = "Wikimedia Pictures of the Day"

mf = fac.manifest(ident="manifest", label=label)
mf.viewingHint = "individuals"
seq = mf.sequence(ident="normal", label="Normal Order")

c = 0
for s in subs:
    hdom = etree.HTML(s)
from factory import ManifestFactory
from SPARQLWrapper import SPARQLWrapper, JSON
import os
import urllib

fac = ManifestFactory()
fac.set_base_image_uri("http://iiif-dev.localhost/services/2.0")
fac.set_iiif_image_info(version="2.0")

basemd = "http://localhost/prezi/"
basedir = "/path/to/htdocs/prezi"

sparql = SPARQLWrapper("http://collection.britishmuseum.org/sparql")
sparql.setReturnFormat(JSON)

dest = "/path/to/images/britishmuseum"

prefixes = """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX bmo: <http://collection.britishmuseum.org/id/ontology/>
PREFIX crm: <http://erlangen-crm.org/current/>
PREFIX bbcpont: <http://purl.org/ontology/po/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX qudt: <http://qudt.org/schema/qudt#>
PREFIX ycbat: <http://collection.britishart.yale.edu/id/thesauri/event/type/>
PREFIX ycbao: <http://collection.britishart.yale.edu/id/object/>
"""
Beispiel #23
0
textUris = [BASEURL + "resources/page1.txt", BASEURL + "resources/page2.txt"]
htmlUris = [BASEURL + "resources/page1.html", BASEURL + "resources/page2.html"]
transcriptions = [[
    "Top of First Page to Display", "Middle of First Page on Angle",
    "Bottom of First Page to Display"
],
                  [
                      "Top of Second Page to Display",
                      "Middle of Second Page on Angle",
                      "Bottom of Second Page on Angle"
                  ]]

line1Dims = "225,70,750,150"

# Configure the factory
fac = ManifestFactory()
fac.set_base_metadata_uri(BASEURL)
fac.set_base_metadata_dir(HOMEDIR)
fac.set_base_image_uri(IMAGE_BASEURL)
fac.set_iiif_image_info(2.0, 1)
fac.set_debug('error')

testInfo = {

    # Done
    1: {
        "title": "Minimum Required Fields"
    },
    2: {
        "title": "Metadata Pairs",
        'mfprops': [('metadata', {
Beispiel #24
0
import json
import urllib, os
import copy

from factory import ManifestFactory

BASEURL = "http://iiif.io/api/presentation/2.0/example/errors/"
HOMEDIR = "../source/api/presentation/2.0/example/errors/"
IMAGE_BASEURL = "http://iiif.io/api/image/2.0/example/"

# Configure a factory for the fake Manifests
fac = ManifestFactory()
fac.set_base_metadata_uri(BASEURL)
fac.set_base_metadata_dir(HOMEDIR)
fac.set_base_image_uri(IMAGE_BASEURL)
fac.set_iiif_image_info(2.0, 1)
fac.set_debug('error')

coll = fac.collection(label="Collection of Errors")
TEST_ID = 0	

mf = fac.manifest(label="manifest")
s = mf.sequence()
c = s.canvas(ident="c1", label="canvas")
c.set_hw(1,1)
basejs = mf.toJSON(top=True)

anno = c.annotation()
anno.image(ident="http://example.net/image.jpg", iiif=False)
basejs_image = mf.toJSON(top=True)
Beispiel #25
0
import os, sys
import urllib
import json
from factory import ManifestFactory

baseq = "http://www.vam.ac.uk/api/json/museumobject/search?images=1&"
baseo = "http://www.vam.ac.uk/api/json/museumobject/"  # + O 123456
baseimg = "http://media.vam.ac.uk/media/thira/collection_images/"  # + pid[:6] + / + pid .jpg
destdir = "/path/to/images/vam"

fac = ManifestFactory()
fac.set_base_image_uri("http://localhost/iiif")
fac.set_iiif_image_info(version="2.0")
basemd = "http://localhost/prezi/vam/"
basedir = "/path/to/htdocs/prezi/vam/"
fac.set_base_metadata_uri(basemd)
fac.set_base_metadata_dir(basedir)

# before=date&after=date&q=term
# offset=n

q1 = baseq + "before=1200&after=1100&q=manuscript"
# 126 objects


def fetch(q, offset=0):
    if offset:
        q += "&offset=%s" % offset
    fh = urllib.urlopen(q)
    data = fh.read()
    fh.close()
# Extract basic info
identifier = dom.xpath('/mets:mets/mets:dmdSec/mets:mdWrap[@MDTYPE="MODS"]/mets:xmlData/mods:mods/mods:identifier/text()', namespaces=ALLNS)[0]
mflabel = dom.xpath('/mets:mets/@LABEL', namespaces=ALLNS)[0]
manifestType = dom.xpath('/mets:mets/@TYPE', namespaces=ALLNS)[0]

# Extract image info
images = dom.xpath('/mets:mets/mets:fileSec/mets:fileGrp/mets:file[@MIMETYPE="image/jp2"]', namespaces=ALLNS)
struct = dom.xpath('/mets:mets/mets:structMap/mets:div[@TYPE="CITATION"]/mets:div', namespaces=ALLNS)
imageHash = {}
for img in images:
	imageHash[img.xpath('./@ID', namespaces=ALLNS)[0]] = img.xpath('./mets:FLocat/@xlink:href', namespaces = ALLNS)[0]


# Configure the factory
fac = ManifestFactory()
fac.set_base_metadata_uri("http://ids.lib.harvard.edu/iiif/metadata/")
fac.set_base_image_uri("http://ids.lib.harvard.edu/ids/view/" + identifier + '/')
fac.set_iiif_image_conformance(1.1, 1)

# Build the Manifest
mf = fac.manifest(ident="manifest", label=mflabel)
mf.attribution = "Provided by the Houghton Library, Harvard University"
mf.viewingHint = "paged" if manifestType == "PAGEDOBJECT" else "individuals"
mf.description = "Description of Manuscript MS Richardson 44 Goes Here"

# And walk through the pages
seq = mf.sequence(ident="normal", label="Normal Order")
for st in struct:
	# Find label, and image ID
	label = st.xpath('./@LABEL')[0] 
Beispiel #27
0
import os, sys
import urllib
import json
from factory import ManifestFactory

baseq = "http://www.vam.ac.uk/api/json/museumobject/search?images=1&"
baseo = "http://www.vam.ac.uk/api/json/museumobject/" # + O 123456
baseimg = "http://media.vam.ac.uk/media/thira/collection_images/" # + pid[:6] + / + pid .jpg
destdir = "/path/to/images/vam"

fac = ManifestFactory()
fac.set_base_image_uri("http://localhost/iiif")
fac.set_iiif_image_info(version="2.0")
basemd = "http://localhost/prezi/vam/"
basedir = "/path/to/htdocs/prezi/vam/" 
fac.set_base_metadata_uri(basemd)
fac.set_base_metadata_dir(basedir)

# before=date&after=date&q=term
# offset=n

q1 = baseq + "before=1200&after=1100&q=manuscript"
# 126 objects


def fetch(q, offset=0):
	if offset:
		q += "&offset=%s" % offset
	fh = urllib.urlopen(q)
	data = fh.read()
from factory import ManifestFactory
import os

# Example script to build a manifest out of all the images in a directory

destdir = "/path/to/images"

fac = ManifestFactory()
fac.set_debug("error")
fac.set_base_image_uri("http://localhost/iiif")
fac.set_base_image_dir(destdir)
fac.set_iiif_image_info()
fac.set_base_metadata_uri("http://localhost/prezi/")
fac.set_base_metadata_dir("/path/to/prezi/")

mflbl = os.path.split(destdir)[1].replace("_", " ").title()

mfst = fac.manifest(label=mflbl)
seq = mfst.sequence()
for fn in os.listdir(destdir):
	ident = fn[:-4]
	title = ident.replace("_", " ").title()
	cvs = seq.canvas(ident=ident, label=title)
	cvs.add_image_annotation(ident, True)

mfst.toFile(compact=False)
Beispiel #29
0
#!/usr/bin/env python
# -*- coding: Windows-1252 -*-
import sys
from factory import ManifestFactory

msref = "add_ms_10289"

fac = ManifestFactory()
fac.set_base_metadata_uri("http://sanddragon.bl.uk/IIIFMetadataService/")
fac.set_base_image_uri("http://sanddragon.bl.uk/IIIFImageService/")

fac.set_iiif_image_conformance(1.1, 2)  # Version, ComplianceLevel
fac.set_debug("warn")  # 'error' will turn off warnings

manifest = fac.manifest(ident="add_ms_10289", label="Add MS 10289")

mddate = u'1275 - 1300'.encode('utf-8')
mdtitle = "Li Romanz du Mont Saint-Michel, a miscellany of romances, moralistic and religious texts and medical recipes"
mdlocation = "British Library"
mdcontents = u"Contents:   ff. 1r-64r: Guillaume de Saint Pair or Guillelme de Seint Paier, Li romanz du Mont Saint Michel or Roman de Mont Saint Michel, incipit, 'Molz pelerins qui vunt al munt', explicit, 'Longue de corne ou il est mis'.  ff. 64r-81v: Andreu de Costances, Une estoire de la resurrection de Jesu Crist, or Verse Gospel of Nicodemus in verse, incipit, 'Seignors mestre Andreu de costances..', explicit, 'Les boens mist hors lessa les maux';  f. 81v: Recipe for a lotion to whiten the skin, incipit, 'Ogneme[n]t espue por blanchir';  ff. 82r-121r: Roman de la destruction de Jerusalem or Le livre de Titus ou de Vespasian, a chanson de geste, incipit, 'Seignors or entende chevalier seriant', explicit, 'nel doit len pas mescroire';  ff. 122r-129r: Medical recipes or Secrets de medecine, incipit 'A la dolor deu chief polieul cuit..', explicit, 'tant q[ue] il sue cest ce qui plus vaut'.  f. 129v: De saint Nicaise, in Latin, incipit 'Sanctus Nichasius habuit mac[u]lam in oculo';  ff. 129v-132v: André or Andreu de Costances: Le romanz des Franceis or Arflet, incipit, 'Reis arflet de nohundrelande', explicit, 'Q[ue]r p[ar]tot dit veir cest la fin.';  f. 132v: List of twelve pairs of France, incipit, 'Dux burgondie';  ff. 133r-172r: Petrus Alphonsus: Fables, a French translation of the Disciplina Clericalis entitled Chatoiment d'un pere a son fils, incipit, 'Qui veut henor eu siecle aveir', explicit, 'Garni le tienge en son vivant';  ff. 172r-175r: Robert de Blois, Compendium Amoris, extracts from Chastoiement des Dames, incipit,'[M]einte gent parolent damors', explicit, 'lor veut dex li dont honte ame';  ff. 175v-178v: Colin Malet: Fabliau de Juglet or Jouglet, incipit, 'Jadis en coste mon ferrant', explicit, 'Q[ue] assez miez [con]chie lui'.  Decoration:   A historiated initial in colours with frame in red of two pilgrims with staffs (f. 1r). An ink drawing in brown of the church of Mont Saint Michel burning with flames in red (f. 45v). Two puzzle initials in red and blue with penwork decoration (ff. 82r,133r). Initials in blue with penwork decoration in red or in red with penwork decoration in blue at the beginning of chapters. Small initials in blue or red at the beginning of lines, some with pen-flourishing in blue; line fillers in red or blue (ff. 1r-64v). Paraphs in red or blue. Rubrics in red."
mdlanguages = "Old French, Anglo-Norman, Latin"
mdphysical = "Materials: Parchment. Dimensions: 190 x 135mm (written space: 145 x 75/110mm). Foliation: ff. 179 (f. 179 is a parchment flyleaf fragment + 4 unfoliated paper flyleaves at the beginning and at the end). Script: Gothic, written above the top line. Layout: Parts written in two columns. Binding: BM/BL in-house. Rebound in 1959."
mdownership = u"Origin: France, N.W. (Normandy). Provenance: The abbey of Mont Saint-Michel, dated ?1280: inscribed 'anno octog[esimo]', (f. 64r); a 15th-century ownership inscription, 'Iste liber est de thesauraria montis' is in the outer margin of f. 1r. Jaques Cujas, humanist scholar and legal expert (b. 1529, d. 1590), perhaps taken by him, as authorised by Nicolas le Fevre on behalf of Louis XIII, from the abbey library in c.1582 (see Genevieve Nortier, Les bibliotheques médiévales des abbayes bénédictines de Normandie (Caen: Caron et cie, 1966), p. 151); his books were dispersed at his death and this manuscript may have returned to the abbey then.In the 1739 catalogue of the abbey of Mont Saint Michel: see Bernard de Montfaucon, Bibliotheca bibliothecarum manuscriptorum nova, 2 vols (1739), II, p. 1360), no. 216: 'Histoire du Mont St Michel en vers, faite du temps de l'Abbé Robert de Torigny' (r. 1154-1186). In 1799 the manuscripts of the abbey library were moved to Avranches, but a number were lost. The present manuscript was removed from the collection between 1799 and 1835, when the first inventory was made in Avranches.Richard Heber, landowner and book collector (b.1773, d. 1833), probably bought by him in Europe in the early 18th century; his sale, 20 February 1836, lot 1702; purchased by the British Museum."
mdbibliography = u"Catalogue of Additions to the Manuscripts in the British Museum in the Years 1836-1846 (London: British Museum, 1843), p. 27. H. L. D. Ward and J. A. Herbert, Catalogue of Romances in the Department of Manuscripts in the British Museum, 3 vols (London: British Museum, 1883-1910), I (1883), pp. 179-80, 812-13; II (1893), pp. 259-65. John Howard Fox, Robert de Blois, son oeuvre didactique et narrative. Étude linguistique et littéraire suivie d'une édition critique avec commentaire et glossaire de 'l'Enseignement des princes' et du 'Chastoiement des dames' (Paris: Nizet, 1950), [an edition of the text, ff. 172-175r]. Anthony J. Holden, 'Le Roman des Franceis' in Etudes de langue et de littérature du moyen age: Offertes à Felix Lecoy (Paris: Honoré Champion, 1973), pp. 213-33 (p. 214). Félix Lecoy, 'À propos du Romanz des Franceis d'André de Coutances', Phonétique et linguistique romanes. Mélanges offerts à M. Georges Straka, Revue de linguistique romane, 34, (1970), pp. 123-25. R. Graham Birrell, 'Regional vocabulary in Le Roman du Mont Saint-Michel', Romania, 100 (1979), 260-70 (p. 261). Willem Noomen, 'Auteur, narrateur, récitant de fabliaux, le témoignage des prologues et des épilogues', Cahiers de civilisation médiévale, 35 (1992), 313-50 (pp. 321-22). Ruth Dean and Maureen Bolton, Anglo-Norman Literature, A Guide to Texts and Manuscripts (London: Anglo-Norman Text Society, 1999), nos. 220.1, 501r. Le Jongleur par lui-meme: Choix de dits et de fabliaux, ed. by Willem Noomen (Louvain: Peeters, 2003), pp. 276-311 [includes an edition of the text on ff. 175-178]. Lydie Lansard, 'De l'Évangile de Nicodème au Roman de la Résurrection d'André de Coutances', Apocrypha, 16, (2005), pp. 229-51. Le Roman du Mont Saint-Michel (xiie siècle), ed. by Catherine Bougy, Les manuscrits de Mont Saint Michel, Textes fondateurs, 2 vols (Avranches: Presses Universitaires de Caen, 2009), II, pp. 43-45, pl. I-IV, VI-IX, XI,XII [contains a description and edition of ff. 1-64], online at http://www.unicaen.fr/services/puc/sources/gsp/index.php?page=sommaire [accessed 05.11.2013]. Lydie Lansard and Laurent Brun, 'London, British Library Additional 10289', Arlima, Archives de littérature du Moyen Age (University of Ottawa, 2010) at http://www.arlima.net/mss/united_kingdom/london/british_library/additional/010289.html [accessed 15.11.2013]."

manifest.set_metadata({
    "Date": mddate,
    "Title": mdtitle,
    "Location": mdlocation,
    "Contents": mdcontents,
    "Languages": mdlanguages,
Beispiel #30
0
#!/usr/bin/env python
# -*- coding: Windows-1252 -*- 
import sys 
from factory import ManifestFactory

msref = "add_ms_10289"

fac = ManifestFactory()
fac.set_base_metadata_uri("http://sanddragon.bl.uk/IIIFMetadataService/")
fac.set_base_image_uri("http://sanddragon.bl.uk/IIIFImageService/")

fac.set_iiif_image_conformance(1.1, 2) # Version, ComplianceLevel
fac.set_debug("warn") # 'error' will turn off warnings

manifest = fac.manifest(ident="add_ms_10289", label="Add MS 10289")

mddate = u'1275 - 1300'.encode('utf-8')
mdtitle = "Li Romanz du Mont Saint-Michel, a miscellany of romances, moralistic and religious texts and medical recipes"
mdlocation = "British Library"
mdcontents = u"Contents:   ff. 1r-64r: Guillaume de Saint Pair or Guillelme de Seint Paier, Li romanz du Mont Saint Michel or Roman de Mont Saint Michel, incipit, 'Molz pelerins qui vunt al munt', explicit, 'Longue de corne ou il est mis'.  ff. 64r-81v: Andreu de Costances, Une estoire de la resurrection de Jesu Crist, or Verse Gospel of Nicodemus in verse, incipit, 'Seignors mestre Andreu de costances..', explicit, 'Les boens mist hors lessa les maux';  f. 81v: Recipe for a lotion to whiten the skin, incipit, 'Ogneme[n]t espue por blanchir';  ff. 82r-121r: Roman de la destruction de Jerusalem or Le livre de Titus ou de Vespasian, a chanson de geste, incipit, 'Seignors or entende chevalier seriant', explicit, 'nel doit len pas mescroire';  ff. 122r-129r: Medical recipes or Secrets de medecine, incipit 'A la dolor deu chief polieul cuit..', explicit, 'tant q[ue] il sue cest ce qui plus vaut'.  f. 129v: De saint Nicaise, in Latin, incipit 'Sanctus Nichasius habuit mac[u]lam in oculo';  ff. 129v-132v: André or Andreu de Costances: Le romanz des Franceis or Arflet, incipit, 'Reis arflet de nohundrelande', explicit, 'Q[ue]r p[ar]tot dit veir cest la fin.';  f. 132v: List of twelve pairs of France, incipit, 'Dux burgondie';  ff. 133r-172r: Petrus Alphonsus: Fables, a French translation of the Disciplina Clericalis entitled Chatoiment d'un pere a son fils, incipit, 'Qui veut henor eu siecle aveir', explicit, 'Garni le tienge en son vivant';  ff. 172r-175r: Robert de Blois, Compendium Amoris, extracts from Chastoiement des Dames, incipit,'[M]einte gent parolent damors', explicit, 'lor veut dex li dont honte ame';  ff. 175v-178v: Colin Malet: Fabliau de Juglet or Jouglet, incipit, 'Jadis en coste mon ferrant', explicit, 'Q[ue] assez miez [con]chie lui'.  Decoration:   A historiated initial in colours with frame in red of two pilgrims with staffs (f. 1r). An ink drawing in brown of the church of Mont Saint Michel burning with flames in red (f. 45v). Two puzzle initials in red and blue with penwork decoration (ff. 82r,133r). Initials in blue with penwork decoration in red or in red with penwork decoration in blue at the beginning of chapters. Small initials in blue or red at the beginning of lines, some with pen-flourishing in blue; line fillers in red or blue (ff. 1r-64v). Paraphs in red or blue. Rubrics in red."
mdlanguages = "Old French, Anglo-Norman, Latin"
mdphysical = "Materials: Parchment. Dimensions: 190 x 135mm (written space: 145 x 75/110mm). Foliation: ff. 179 (f. 179 is a parchment flyleaf fragment + 4 unfoliated paper flyleaves at the beginning and at the end). Script: Gothic, written above the top line. Layout: Parts written in two columns. Binding: BM/BL in-house. Rebound in 1959."
mdownership = u"Origin: France, N.W. (Normandy). Provenance: The abbey of Mont Saint-Michel, dated ?1280: inscribed 'anno octog[esimo]', (f. 64r); a 15th-century ownership inscription, 'Iste liber est de thesauraria montis' is in the outer margin of f. 1r. Jaques Cujas, humanist scholar and legal expert (b. 1529, d. 1590), perhaps taken by him, as authorised by Nicolas le Fevre on behalf of Louis XIII, from the abbey library in c.1582 (see Genevieve Nortier, Les bibliotheques médiévales des abbayes bénédictines de Normandie (Caen: Caron et cie, 1966), p. 151); his books were dispersed at his death and this manuscript may have returned to the abbey then.In the 1739 catalogue of the abbey of Mont Saint Michel: see Bernard de Montfaucon, Bibliotheca bibliothecarum manuscriptorum nova, 2 vols (1739), II, p. 1360), no. 216: 'Histoire du Mont St Michel en vers, faite du temps de l'Abbé Robert de Torigny' (r. 1154-1186). In 1799 the manuscripts of the abbey library were moved to Avranches, but a number were lost. The present manuscript was removed from the collection between 1799 and 1835, when the first inventory was made in Avranches.Richard Heber, landowner and book collector (b.1773, d. 1833), probably bought by him in Europe in the early 18th century; his sale, 20 February 1836, lot 1702; purchased by the British Museum."
mdbibliography = u"Catalogue of Additions to the Manuscripts in the British Museum in the Years 1836-1846 (London: British Museum, 1843), p. 27. H. L. D. Ward and J. A. Herbert, Catalogue of Romances in the Department of Manuscripts in the British Museum, 3 vols (London: British Museum, 1883-1910), I (1883), pp. 179-80, 812-13; II (1893), pp. 259-65. John Howard Fox, Robert de Blois, son oeuvre didactique et narrative. Étude linguistique et littéraire suivie d'une édition critique avec commentaire et glossaire de 'l'Enseignement des princes' et du 'Chastoiement des dames' (Paris: Nizet, 1950), [an edition of the text, ff. 172-175r]. Anthony J. Holden, 'Le Roman des Franceis' in Etudes de langue et de littérature du moyen age: Offertes à Felix Lecoy (Paris: Honoré Champion, 1973), pp. 213-33 (p. 214). Félix Lecoy, 'À propos du Romanz des Franceis d'André de Coutances', Phonétique et linguistique romanes. Mélanges offerts à M. Georges Straka, Revue de linguistique romane, 34, (1970), pp. 123-25. R. Graham Birrell, 'Regional vocabulary in Le Roman du Mont Saint-Michel', Romania, 100 (1979), 260-70 (p. 261). Willem Noomen, 'Auteur, narrateur, récitant de fabliaux, le témoignage des prologues et des épilogues', Cahiers de civilisation médiévale, 35 (1992), 313-50 (pp. 321-22). Ruth Dean and Maureen Bolton, Anglo-Norman Literature, A Guide to Texts and Manuscripts (London: Anglo-Norman Text Society, 1999), nos. 220.1, 501r. Le Jongleur par lui-meme: Choix de dits et de fabliaux, ed. by Willem Noomen (Louvain: Peeters, 2003), pp. 276-311 [includes an edition of the text on ff. 175-178]. Lydie Lansard, 'De l'Évangile de Nicodème au Roman de la Résurrection d'André de Coutances', Apocrypha, 16, (2005), pp. 229-51. Le Roman du Mont Saint-Michel (xiie siècle), ed. by Catherine Bougy, Les manuscrits de Mont Saint Michel, Textes fondateurs, 2 vols (Avranches: Presses Universitaires de Caen, 2009), II, pp. 43-45, pl. I-IV, VI-IX, XI,XII [contains a description and edition of ff. 1-64], online at http://www.unicaen.fr/services/puc/sources/gsp/index.php?page=sommaire [accessed 05.11.2013]. Lydie Lansard and Laurent Brun, 'London, British Library Additional 10289', Arlima, Archives de littérature du Moyen Age (University of Ottawa, 2010) at http://www.arlima.net/mss/united_kingdom/london/british_library/additional/010289.html [accessed 15.11.2013]."

manifest.set_metadata({"Date": mddate, "Title": mdtitle, "Location": mdlocation,"Contents": mdcontents, "Languages": mdlanguages, "Physical Description": mdphysical, "Ownership": mdownership, "Bibliography": mdbibliography})
manifest.description = "Li Romanz du Mont Saint-Michel, a miscellany of romances, moralistic and religious texts and medical recipes"
manifest.viewingDirection = "left-to-right"

seq = manifest.sequence(ident="normal", label="Normal Order")

import json

from bottle import Bottle, route, run, request, response, abort, error

import os, sys
import factory
from lxml import etree

import uuid
import urllib, urllib2, urlparse

from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_image_uri("http://iiif-dev.localhost/services/chronam/")
fac.set_iiif_image_info(version="2.0", lvl="1")
fac.set_base_metadata_dir('/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/chronam/')
fac.set_base_metadata_uri("http://localhost:8080/")
# http://localhost:8080/list/lccn/sn99021999/1915-03-27/ed-1/seq-1.json
fac.set_debug('error')

PFX = ""
INFO_CACHE = {}
CACHEDIR = '/Users/azaroth/Dropbox/Rob/Web/iiif-dev/prezi/chronam/'

class ChronAmManifestShim(object):

    def __init__(self):
        pass
# BL Flickr TSV + JSON to IIIF Metadata
# Data available here: https://github.com/BL-Labs/imagedirectory

import sys, os, re
import glob
import ljson
from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_metadata_uri("https://github.com/BL-Labs/imagedirectory/iiif")
fac.set_base_metadata_dir('/Users/azaroth/Development/bl/imagedirectory/iiif')

fh = file('book_metadata.json')
data = fh.read()
fh.close()
books = ljson.loads(data)

# volume / Publisher / Title / Author / ? / pub place / book id / book ARK / flickr_url / 
#          image_idx / page / flickr_id / f_small / f_s_height / f_s_width / medium / large / original


# Can be images from the same book in multiple TSV files, as based on image size so build in parallel and sort
manifests = {}

files = glob.glob("*.tsv")
files.sort()
for f in files:
	fh = file(f)
	data = fh.read()
	fh.close()
	lines = data.split('\r\n')
import json

from bottle import Bottle, route, run, request, response, abort, error

import os, sys
import factory
from lxml import etree

import uuid
import urllib, urllib2, urlparse

from factory import ManifestFactory

fac = ManifestFactory()
fac.set_base_image_uri("http://showcase.iiif.io/shims/veridian/image")
fac.set_iiif_image_info(version="2.0", lvl="1")
fac.set_base_metadata_dir('/tmp/')
fac.set_base_metadata_uri("http://showcase.iiif.io/shims/veridian/prezi/")
fac.set_debug('error')

PFX = ""
INFO_CACHE = {}
CACHEDIR = '/tmp/'
VSERVER = "http://cdnc.ucr.edu/cgi-bin/cdnc"


class ManifestShim(object):
    def __init__(self):
        pass

    def fetch(self, url, format="json"):
Beispiel #34
0
            [2, '', '1419,514,425,48'], [3, '0,7', '1835,514,108,48'],
            [3, '7,35', '1090,630,344,50'], [4, '', '1432,630,333,50'],
            [5, '0,14', '1765,630,177,50'], [5, '14,29', '989,757,157,50'],
            [6, '', '1140,757,271,50'], [7, '', '1412,757,339,50'],
            [8, '0,14', '1750,757,191,50'], [8, '14,23', '990,878,100,50'],
            [9, '', '1090,878,255,50'], [10, '', '1346,878,390,50'],
            [11, '0,20', '1733,878,209,50'], [11, '20,29', '994,1002,85,50'],
            [12, '', '1076,1002,415,50'], [13, '', '1488,1002,222,50'],
            [14, '0,19', '1713,1002,224,50'], [14, '19,32', '988,1122,152,50'],
            [15, '', '1139,1122,217,50'], [16, '', '1358,1122,253,50'],
            [17, '', '1614,1122,271,50'], [18, '0,4', '1884,1122,71,50'],
            [18, '4,18', '987,1252,148,50'], [19, '', '1136,1252,260,50'],
            [20, '', '1396,1252,243,50'], [21, '0,26', '1638,1252,308,50'],
            [21, '26,30', '989,1372,47,50'], [22, '', '1038,1372,401,50']]

factory = ManifestFactory()
fac.set_base_metadata_uri("http://www.shared-canvas.org/impl/demo2c/")

mf = factory.manifest(label="Worldes Blisce")
mf.description = "The only remaining leaf of a 300+ folio music manuscript that was split up and used as fly leaves for other manuscripts.  This leaf contains the only copy of this particular song, World's Bliss."
mf.attribution = "Provided by the Parker Library, University of Cambridge"

seq = mf.sequence(label="Single Leaf")
cvs = seq.canvas(ident="c1", label="Worldes Blisce")
cvs.set_hw(1480, 2288)

anno = cvs.annotation()
cvs.image("http://www.shared-canvas.org/mss/iiif/2/res/blisce-rc.jpg")
texts = cvs.annotationList("text-f1", label="Transcription")
audios = cvs.annotationList("audio-f1", label="Performance")
    txt = jre.sub('\\1', txt) 
    return txt
    


# -----------------------------------------------------------------------------

imageDirectory = "/Users/azaroth/Dropbox/SharedCanvasData/m804/images/"
jsDirectory = "/Users/azaroth/Dropbox/SharedCanvasData/m804/js/"
# resDirectory = "/Users/azaroth/Dropbox/SharedCanvas/impl/demo1d/res_random/"
resDirectory = "/Users/azaroth/Dropbox/IIIF/demos/mirador/data/"
minFolio= 1
maxFolio = 258


fac = ManifestFactory()
fac.set_base_metadata_uri("http://www.shared-canvas.org/impl/demo1d/res_human/")
fac.set_base_image_uri("http://www.shared-canvas.org/iiif/")
fac.set_base_metdata_dir("/Users/azaroth/Dropbox/SharedCanvas/impl/demo1d/res_human/")
fac.set_iiif_image_conformance(1.1, 2)
fac.set_debug("error") # warn will warn for recommendations, by default

rubricCss = ".red {color: red}"
initialCss = ".bold {font-weight: bold}"

mf = fac.manifest(ident="manifest", label="Pierpont Morgan MS.804")
mf.set_metadata({"Dates": "Author's version circa 1380, scribed circa 1400, illuminations circa 1420"})
mf.attribution = "Held at the Pierpont Morgan Library"
mf.viewingHint = "paged"
mf.viewingDirection = "left-to-right"
		s = sinfo['id']

		if SETS_TO_DO and not s in SETS_TO_DO:
			print "skipping %s / %s" % (s , sinfo['name'])
			continue

		try:
			print "Processing Set: %s" % sinfo['name']
		except:
			print "Processing Set: %s" % s
		sys.stdout.flush()
		if os.path.exists(s):
			continue
		os.mkdir(s)

		fac = ManifestFactory()
		fac.set_base_metadata_uri(BASE_MD_URL + "/%s/%s/" % (host, s))
		fac.set_base_metadata_dir(os.path.join(os.getcwd(), s))
		fac.set_base_image_uri(BASE_IMG_URL + "/%s/%s/" % (host, s))
		fac.set_iiif_image_info("2.0", "1")
		fac.set_debug('error')

		manifest = fac.manifest(label=sinfo['name'])
		if sinfo['desc']:
			manifest.description = str(sinfo['desc'])
		manifest.attribution = "Converted from http://%s/" % host
		manifest.viewingHint = "individuals"

		sequence = manifest.sequence()
		dom = get_xml('http://%s/oai/oai.php?verb=ListRecords&set=%s&metadataPrefix=oai_dc' % (host, s))
		recs = dom.xpath('/o:OAI-PMH/o:ListRecords/o:record', namespaces=ALLNS)