diff --git a/_data/facilities.yml b/_data/facilities.yml index 17a4e3a4df98f48f41e75439ca9c144f9bb82cd9..9196bc25b6a786e6f71e7e9ce83bec6a6d37f1fa 100644 --- a/_data/facilities.yml +++ b/_data/facilities.yml @@ -29,6 +29,8 @@ link: https://data.cells.es/iws/icat_plus/oaipmh/request last-check: 2024-12-22 status: Active + adminAddress: + - mis@cells.es datasets: count: 20 sets: @@ -148,6 +150,8 @@ link: https://icatplus.esrf.fr/oaipmh/request last-check: 2024-12-22 status: Active + adminAddress: + - datapolicy@esrf.fr datasets: count: 7202 pan-search-api: @@ -177,6 +181,8 @@ status: Active datasets: count: 0 + adminAddress: + - max.novelli@ess.eu pan-search-api: link: https://search.panosc.ess.eu/api status: Error @@ -207,6 +213,9 @@ link: https://in.xfel.eu/metadata/oai-pmh/oai2 last-check: 2024-12-22 status: Active + adminAddress: + - luis.maia@xfel.eu + - krzysztof.wrona@xfel.eu datasets: count: 5 sets: @@ -246,6 +255,8 @@ link: https://data.helmholtz-berlin.de/oaipmh/request last-check: 2024-12-22 status: Active + adminAddress: + - icatmaster@helmholtz-berlin.de datasets: count: 28952 sets: @@ -286,6 +297,8 @@ link: https://rodare.hzdr.de/oai2d status: Active last-check: 2024-12-22 + adminAddress: + - rodare-admin@hzdr.de datasets: count: 1020 sets: @@ -438,6 +451,8 @@ link: https://fairdata.ill.fr/openaire/oai status: Active last-check: 2024-12-22 + adminAddress: + - data@ill.fr datasets: count: 0 pan-search-api: @@ -465,6 +480,8 @@ link: https://icatisis-prod.esc.rl.ac.uk/oaipmh/request status: Error last-check: 2024-12-22 + adminAddress: + - isisdata@stfc.ac.uk pan-search-api: link: https://data.isis.stfc.ac.uk/datagateway-api/search-api/ status: Active @@ -522,6 +539,8 @@ link: https://doi.psi.ch/oaipmh/oai status: Active last-check: 2024-12-22 + adminAddress: + - carlo.minotti@psi.ch datasets: count: 0 pan-search-api: diff --git a/scripts/update_oai-pmh.rb b/scripts/update_oai-pmh.rb index 735914b3e9202bbf0109f1606e51f4ec2b69b89a..ebfcc9527fbffd3fdf441111f02bcddfa1c6ae73 100644 --- a/scripts/update_oai-pmh.rb +++ b/scripts/update_oai-pmh.rb @@ -17,26 +17,33 @@ def check_oai_pmh_endpoint(endpoint_url) if !response.success? print_with_time("Error: Identify response has HTTP status code #{response.code}.") - return "Error" + return "Error", [] end response = HTTParty.get(queryIdentify_url) if response.body.nil? || response.body.empty? print_with_time("Error: Identify response is empty.") - return "Error" + return "Error", [] end xml_response = Nokogiri::XML(response.body) oai_pmh_tag = xml_response.at_xpath('//*[name()="OAI-PMH"]') if !oai_pmh_tag print_with_time("Error: Identify response has no OAI-PMH tag.") - return "Error" + return "Error", [] end - return "Active" + addresses = [] + adminEmails = xml_response.xpath('/xmlns:OAI-PMH/xmlns:Identify/xmlns:adminEmail') + adminEmails.each do |adminEmail| + address = adminEmail.content + addresses.append(address) + end + + return "Active", addresses rescue StandardError => e print_with_time("Error: Identify request failed: #{e.message}") - return "Error" + return "Error", [] end end @@ -229,9 +236,9 @@ end def query_oai_pmh_endpoint(endpoint) - status = check_oai_pmh_endpoint(endpoint) + status, adminAddress = check_oai_pmh_endpoint(endpoint) if status == "Error" - return status, {}, 0, {} + return status, [], {}, 0, {} end dc_prefix = metadata_prefix_of(endpoint, 'http://www.openarchives.org/OAI/2.0/oai_dc/') @@ -246,7 +253,7 @@ def query_oai_pmh_endpoint(endpoint) set_counts = {} end - return status, set_names, total_count, set_counts + return status, adminAddress, set_names, total_count, set_counts end @@ -268,10 +275,14 @@ facilities.each do |facility| name = facility['short-name'] puts "Checking OAI-PMH endpoint for #{name}: #{oai_pmh_endpoint}" - status, set_names, total_count, set_count = query_oai_pmh_endpoint(oai_pmh_endpoint) + status, adminAddress, set_names, total_count, set_count = query_oai_pmh_endpoint(oai_pmh_endpoint) oai_pmh['status'] = status + if !adminAddress.empty? + oai_pmh['adminAddress'] = adminAddress + end + oai_pmh.delete('datasets') if status == "Active"