跳转到主要内容

oaipmh模块是“开放档案倡议元数据收割协议”(版本2)客户端和服务器的一个Python实现。

项目描述

https://github.com/infrae/pyoai/workflows/Run%20tests/badge.svg

The oaipmh module is a Python implementation of an “Open Archives Initiative Protocol for Metadata Harvesting” (version 2) client and server. The protocol is described here

http://www.openarchives.org/OAI/openarchivesprotocol.html

以下是一个简单的OAIPMH客户端实现

>>> from oaipmh.client import Client
>>> from oaipmh.metadata import MetadataRegistry, oai_dc_reader
>>> URL = 'http://uni.edu/ir/oaipmh'
>>> registry = MetadataRegistry()
>>> registry.registerReader('oai_dc', oai_dc_reader)
>>> client = Client(URL, registry)
>>> for record in client.listRecords(metadataPrefix='oai_dc'):
>>>    print record

pyoai包还包含OAIPMH协议的通用服务器实现,这是MOAI服务器平台的基础。

变更日志

2.5.2(未发布)

2.5.1

  • 添加了可定制的客户端重试策略(由adimascio贡献)

  • 添加了对Python 3.8的兼容性(由krenzlin贡献)

  • 如果没有返回结果,则不恢复ListRecord请求(由wetneb贡献)

2.5.0 (2017-07-03)

  • 添加了对Python 3的兼容性(由Tobias Kurze、Uli Köhler和Michał Pasternak贡献)

  • Travis支持及徽章(Michał Pasternak)

2.4.5 (2015-12-23)

  • 在客户端添加了强制使用HTTP Get方法进行收割的开关(由Stefan Oderbolz贡献)

  • 在服务器和客户端中添加了非官方的GetMetadata动词。GetMetadata与GetRecord相同,但只返回oai:metadata元素下的第一个元素,不返回oai enveloppe。

2.4.4 (2010-09-30)

  • 更改了联系信息,将代码从Subversion迁移到Mercurial

2.4.3 (2010-08-19)

  • 将lxml.etree._ElementUnicodeResult和ElementStringResult转换为正常字符串和unicode对象,以防止在将这些对象序列化时出错。(lp #617439)

2.4.2 (2010-05-03)

  • OAI_DC和DC命名空间声明不应在文档根上声明,而应在metadata元素的子元素上声明。根据OAI规范

2.4.1 (2009-11-16)

  • 当指定日期(不是日期时间)作为until参数时,默认为23:59:59而不是00:00:00

2.4 (2009-05-04)

  • 在OAI Identify报头中包含了对描述元素的兼容性支持,默认添加了‘toolkit’描述。

2.3.1 (2009-04-24)

  • 当from和until参数具有不同的粒度时,引发正确的错误

2.3 (2009-04-23)

  • 修复了处理无效dateTime格式的错误,并添加了测试,现在服务器将响应BadArgument(XML)错误而不是Python跟踪信息。

  • 使用buildout创建测试运行器和环境,而不是使用test.py脚本。

    通过以下方式安装buildout

    $ python bootstrap.py $ bin/buildout

    通过以下方式运行测试

    $ bin/test

    要获取一个可导入oaipmh库的python解释器

    $ bin/devpython

2.2.1 (2008-04-04)

  • 将xml声明添加到服务器输出中

  • 美化xml输出

  • 兼容性修复:现在应该与lxml 2.0兼容

  • 服务器恢复令牌现在与POST请求一起工作。

  • 修复了处理服务器503响应的客户端代码。

2.2 (2006-11-20)

  • 对BatchingServer的支持。BatchingServer实现了IBatchingOAI接口。这与IOAI非常相似,但方法接受一个“光标”和“批大小”参数。这可以用来在关系数据库上高效地实现批处理OAI服务器。

  • 使OAIPMH客户端能够显式地传递None作为from或until参数。

  • Server和BatchingServer的额外nsmap参数允许程序员指定用于服务器输出的命名空间前缀到命名空间URI映射。

  • 修复了输出未正确编码为UTF-8的bug。

2.1.5 (2006-09-18)

  • 兼容性修复:现在应该与lxml 1.1兼容。

2.1.4 (2006-06-16)

  • 作为egg分发。

2.1.3

  • 添加处理非XML兼容OAI-PMH源的基础设施;在这种情况下,引发XMLSyntaxError。

  • 添加了tolerant_datestamp_to_datetime,它在遇到不良日期戳时比正常的datestamp_to_datetime更加宽容。

  • 将日期戳处理分离到单独的日期戳模块。

2.0

  • 在客户端添加了对仅支持天粒度(YYYY-MM-DD)的支持。使用客户端的“updateGranularity”将检查服务器(使用identify())支持什么粒度。如果服务器只支持天级别粒度,客户端将确保只发送YYYY-MM-DD时间戳。

2.0b1

  • 添加了实现OAI-PMH兼容服务器的框架。

  • 更改了包结构:现在是一个oaipmh命名空间包。客户端功能现在在oaipmh.client中。

  • 重构oaipmh.py模块,以使客户端和服务器重用代码。

  • 扩展了测试基础设施。

  • 从使用libxml2 Python包装器切换到lxml绑定。

  • 使用生成器而不是修改过的 getitem。这意味着 listRecords、listIdentifiers 和 listSets 的返回值现在不再是正常列表,而是迭代器。然而,通过在它们上使用 list(),可以轻松地将它们转换为正常列表。

1.0.1

  • oaipmh.py 中的错误。

1.0

  • 在 serialize 调用中添加了一个编码参数,这修复了一个 Unicode 错误。

0.7.4

  • 收割可以返回带有 <header status“deleted”> 的记录,这些记录不包含元数据,仅表明该资源的元数据集不再在 OAI 服务上。这些记录应用于从目录中删除元数据(如果存在),但不应存储或编目。目前它们不这样做。(在 zope/OAICore/core.py 中修复。)

0.7

初始公共版本。

项目详情


下载文件

下载适用于您平台的自定义文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

此版本没有可用的源分发文件。请参阅有关 生成分发存档 的教程。

构建分发

pyoai-2.5.1-py3.9.egg (75.8 kB 查看哈希)

上传时间

支持