This repository was archived by the owner on Feb 13, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathiiif-manifest.js
More file actions
executable file
·70 lines (64 loc) · 1.68 KB
/
iiif-manifest.js
File metadata and controls
executable file
·70 lines (64 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env node
const axios = require('axios')
const argv = require('yargs')
.options({
manifest: {
alias: 'm',
demandOption: true
},
image: {
alias: 'i',
demandOption: true,
array: true
}
})
.help('help')
.argv
const manifestId = argv.manifest
const imageUrls = argv.image
const promises = imageUrls
.map((url) => axios.get(url).then((response) => response.data))
Promise.all(promises)
.then((images) => {
const manifest = createManifest(manifestId, images)
console.log(JSON.stringify(manifest, null, 2))
})
function createManifest (manifestId, images) {
return {
'@context': 'http://iiif.io/api/presentation/2/context.json',
'@type': 'sc:Manifest',
'@id': manifestId,
sequences: [
{
'@type': 'sc:Sequence',
canvases: images.map(({'@id': imageId, width, height, profile}, index) => ({
'@id': `${manifestId}#canvas/${index}`,
'@type': 'sc:Canvas',
width,
height,
images: [
{
'@id': `${manifestId}#annotation/${index}`,
'@type': 'oa:Annotation',
motivation: 'sc:painting',
width,
height,
on: `${manifestId}#canvas/${index}`,
resource: {
'@id': `${imageId}/full/full/0/default.jpg`,
'@type': 'dctypes:Image',
width,
height,
service: {
'@context': 'http://iiif.io/api/image/2/context.json',
'@id': imageId,
profile
}
}
}
]
}))
}
]
}
}