Проблемы с получением всех записей из институционального репозитория OAI-PMH с помощью Sickle - PullRequest
0 голосов
/ 04 августа 2020

Я работал над получением всех записей из репозитория OAI-PHM из различных исследовательских институтов, используя функцию api в программе Sickle в Python. Я написал код, который выполняет последовательный сбор данных, который выполняет итерацию по записям репозитория и сохраняет записи как XML -файл, а также SQL -данные.

Однако по какой-то причине Я не могу получить все записи в репозитории - отсутствуют записи, особенно между 2017-2020 годами. Если я выполняю выборочный сбор по дате с помощью параметра «from» в программе Sickle, я могу получить некоторые дополнительные записи, но не все.

Я подозреваю, что проблема связана с тем, что некоторые записей в репозитории OAI пусты, и Sickle прекращает сбор записей при обнаружении записи, не содержащей информации.

Я установил в коде необязательный параметр ignore_deleted на True, чтобы пропустить удаленные записи . Однако я не уверен, можно ли добавить дополнительный параметр, который пропускает пустую запись?

Ниже приведен отрывок из кода, который определяет последовательную сборку репозитория OAI.

import datetime
from sickle import Sickle

api_list = [ \
"https://pure.itu.dk/ws/oai", \
]

date="2020-08.01"
last_retrieval="1950.01.01"


for api in api_list:
    institution = ""
    institution = inst_institution(api)
    record_total=0

    sickle = Sickle(api)

    harvest_id = uuid.uuid4() # generating a random ID for the record. 

    recs = sickle.ListRecords(**{'metadataPrefix': 'ddf-mxd', 'from': last_retrieval, 'until': date},ignore_deleted=True)
    headers = sickle.ListIdentifiers(**{'metadataPrefix': 'ddf-mxd', 'from': last_retrieval, 'until': date},ignore_deleted=True)
    for header in headers:
        record_total = record_total + 1
        try:    
            r=recs.next()
...