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/", "http://sandbox.zenodo.org/record/",
], ],
"api": "https://sandbox.zenodo.org/api/records/", "api": "https://sandbox.zenodo.org/api/records/",
"filepath": "files", "files": "links.files",
"filename": "filename", "filepath": "entries",
"download": "links.download", "filename": "key",
"download": "links.content",
"type": "metadata.upload_type", "type": "metadata.upload_type",
}, },
{ {
"hostname": ["https://zenodo.org/record/", "http://zenodo.org/record/"], "hostname": ["https://zenodo.org/record/", "http://zenodo.org/record/"],
"api": "https://zenodo.org/api/records/", "api": "https://zenodo.org/api/records/",
"filepath": "files", "files": "links.files",
"filename": "filename", "filepath": "entries",
"download": "links.download", "filename": "key",
"download": "links.content",
"type": "metadata.upload_type", "type": "metadata.upload_type",
}, },
{ {
@ -43,6 +45,7 @@ class Zenodo(DoiProvider):
"http://data.caltech.edu/records/", "http://data.caltech.edu/records/",
], ],
"api": "https://data.caltech.edu/api/record/", "api": "https://data.caltech.edu/api/record/",
"files": "",
"filepath": "metadata.electronic_location_and_access", "filepath": "metadata.electronic_location_and_access",
"filename": "electronic_name.0", "filename": "electronic_name.0",
"download": "uniform_resource_identifier", "download": "uniform_resource_identifier",
@ -69,7 +72,15 @@ class Zenodo(DoiProvider):
f'{host["api"]}{record_id}', f'{host["api"]}{record_id}',
headers={"accept": "application/json"}, 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() record = resp.json()
files = deep_get(record, host["filepath"]) files = deep_get(record, host["filepath"])