Attempt to fix Zenodo

Done by inspecting API responses
- https://zenodo.org/api/records/3242074
- https://zenodo.org/api/records/3242074/files
pull/1315/head
Simon Li 2023-10-15 13:43:15 +01:00
rodzic de496f893b
commit efb4cd3bbc
1 zmienionych plików z 18 dodań i 7 usunięć

Wyświetl plik

@ -24,17 +24,19 @@ class Zenodo(DoiProvider):
"http://sandbox.zenodo.org/record/",
],
"api": "https://sandbox.zenodo.org/api/records/",
"filepath": "files",
"filename": "filename",
"download": "links.download",
"files": "links.files",
"filepath": "entries",
"filename": "key",
"download": "links.content",
"type": "metadata.upload_type",
},
{
"hostname": ["https://zenodo.org/record/", "http://zenodo.org/record/"],
"api": "https://zenodo.org/api/records/",
"filepath": "files",
"filename": "filename",
"download": "links.download",
"files": "links.files",
"filepath": "entries",
"filename": "key",
"download": "links.content",
"type": "metadata.upload_type",
},
{
@ -43,6 +45,7 @@ class Zenodo(DoiProvider):
"http://data.caltech.edu/records/",
],
"api": "https://data.caltech.edu/api/record/",
"files": "",
"filepath": "metadata.electronic_location_and_access",
"filename": "electronic_name.0",
"download": "uniform_resource_identifier",
@ -69,9 +72,17 @@ class Zenodo(DoiProvider):
f'{host["api"]}{record_id}',
headers={"accept": "application/json"},
)
record = resp.json()
if host["files"]:
yield f"Fetching Zenodo record {record_id} files.\n"
files_url = deep_get(record, host["files"])
resp = self.urlopen(
files_url,
headers={"accept": "application/json"},
)
record = resp.json()
files = deep_get(record, host["filepath"])
only_one_file = len(files) == 1
for file_ref in files: