创建符合 IIIF 表示 API 3.0 的 JSON 清单的工具
项目描述
pyIIIFpres
这是一个 Python 模块,用于简化在生产环境中构建符合 IIIF API 3.0的 JSON 清单,类似于早期版本的协议的iiif-prezi。
注意:这不是参考实现。欢迎请求请求和问题!
安装
该库仅使用标准库,可以使用以下方式安装pip:
pip install git+https://github.com/giacomomarchioro/pyIIIFpres
基本用法
该模块将 API 结构映射到 Python 类。set_只能具有一个值的用户对象(例如id)和add_可以具有多个实体的对象(例如labels)。例如,我们将执行 IIIF 食谱中的Simple Manifest - Book recipe。此存储库的示例文件夹中的食谱中的更多示例。
from IIIFpres import iiifpapi3
iiifpapi3.BASE_URL = "https://iiif.io/api/cookbook/recipe/0009-book-1"
manifest = iiifpapi3.Manifest()
manifest.set_id(extendbase_url="manifest.json")
manifest.add_label("en","Simple Manifest - Book")
manifest.add_behavior("paged")
# label width height id service
data = (("Blank page",3204,4613,"https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18","/full/max/0/default.jpg"),
("Frontispiece",3186,4612,"https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19","/full/max/0/default.jpg"),
("Title page",3204,4613,"https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20","/full/max/0/default.jpg"),
("Blank page",3174,4578,"https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21","/full/max/0/default.jpg"),
("Bookplate",3198,4632,"https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22","/full/max/0/default.jpg"),)
for idx,d in enumerate(data):
idx+=1
canvas = manifest.add_canvas_to_items()
canvas.set_id(extendbase_url="canvas/p%s"%idx) # in this case we use the base url
canvas.set_height(d[2])
canvas.set_width(d[1])
canvas.add_label("en",d[0])
annopage = canvas.add_annotationpage_to_items()
annopage.set_id(extendbase_url="page/p%s/1" %idx)
annotation = annopage.add_annotation_to_items(target=canvas.id)
annotation.set_id(extendbase_url="annotation/p%s-image"%str(idx).zfill(4))
annotation.set_motivation("painting")
annotation.body.set_id("".join(d[3:]))
annotation.body.set_type("Image")
annotation.body.set_format("image/jpeg")
annotation.body.set_width(d[1])
annotation.body.set_height(d[2])
s = annotation.body.add_service()
s.set_id(d[3])
s.set_type("ImageService3")
s.set_profile("level1")
manifest.json_save("manifest.json")
调试清单
当您从头开始填充新的 IIIF 类型时,可以使用一些有用的功能来发现错误。
.inspect()方法返回显示推荐和必填字段的对象的 JSON 表示:
from IIIFpres import iiifpapi3
manifest = iiifpapi3.Manifest()
manifest.inspect()
.show_errors_in_browser()方法打开一个新的浏览器选项卡,突出显示必填和推荐的字段。
manifest.show_errors_in_browser()
阅读清单(实验性)
一个符合 Presentation API3 的 json 文件可以读取如下:
from IIIFpres.utilities import read_API3_json
mymanifest = read_API3_json('manifest.json')
这会将 Canvas、Annotation 和主要的 IIIF 类型映射到 iiifpapi3 类,将其余部分作为 dicts 加载。
有关自动获取图像大小、提高写作性能等的信息,请参阅项目 wiki。
致谢
我要感谢Martim Passos报告问题,以及 IIIF 社区和协调员。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pyIIIFpres-0.1.1.tar.gz
(141.4 kB
查看哈希)
内置分布
pyIIIFpres-0.1.1-py3-none-any.whl
(143.1 kB
查看哈希)
关
pyIIIFpres -0.1.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 2cc3e46f1df8410d72ea95db712fcbe8ff42e58e1ef0f4a9d0766fece14bd13d |
|
| MD5 | 5e4f2238e094a249423ad1809f426375 |
|
| 布莱克2-256 | 29635ad15fd40a82f8789e85a0bb2f59b08218c6986eeb67304d22b317845148 |
关
pyIIIFpres -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 4bc157abe205019af4b88296b6a9504b317a7d8216b2eed09d7b266d36bcfaa9 |
|
| MD5 | 17c6d418a2b2256a2cfd07dc62f7e4b8 |
|
| 布莱克2-256 | 434270502122a2febf043dd3693360c683dd432afff5d577e6b32ee2fe26f3d4 |