diff --git a/repo2docker/contentproviders/zenodo.py b/repo2docker/contentproviders/zenodo.py index 6982c3a7c..f456d0f11 100644 --- a/repo2docker/contentproviders/zenodo.py +++ b/repo2docker/contentproviders/zenodo.py @@ -22,7 +22,10 @@ def __init__(self): "hostname": [ "https://sandbox.zenodo.org/record/", "http://sandbox.zenodo.org/record/", + "https://sandbox.zenodo.org/records/", "http://sandbox.zenodo.org/records/", + "https://sandbox.zenodo.org/doi/", + "http://sandbox.zenodo.org/doi/", ], "api": "https://sandbox.zenodo.org/api/records/", "files": "links.files", @@ -36,6 +39,9 @@ def __init__(self): "https://zenodo.org/record/", "http://zenodo.org/record/", "https://zenodo.org/records/", + "http://zenodo.org/records/", + "https://zenodo.org/doi/", + "http://zenodo.org/doi/", ], "api": "https://zenodo.org/api/records/", "files": "links.files", @@ -69,7 +75,11 @@ def detect(self, doi, ref=None, extra_args=None): def fetch(self, spec, output_dir, yield_output=False): """Fetch and unpack a Zenodo record""" - record_id = spec["record"] + # Simple heuristic until repoproviders is ready. + if "." in spec["record"]: + record_id = spec["record"].split(".")[1] + else: + record_id = spec["record"] host = spec["host"] yield f"Fetching Zenodo record {record_id}.\n" diff --git a/tests/unit/contentproviders/test_zenodo.py b/tests/unit/contentproviders/test_zenodo.py index a1e1226fb..05513fa08 100644 --- a/tests/unit/contentproviders/test_zenodo.py +++ b/tests/unit/contentproviders/test_zenodo.py @@ -14,6 +14,7 @@ doi_responses = { "https://doi.org/10.5281/zenodo.3232985": ("https://zenodo.org/record/3232985"), + "https://doi.org/10.5281/zenodo.18553140": ("https://zenodo.org/records/18553140"), "https://doi.org/10.22002/d1.1235": ("https://data.caltech.edu/records/1235"), "https://doi.org/10.21105/joss.01277": ( "https://joss.theoj.org/papers/10.21105/joss.01277" @@ -37,6 +38,14 @@ def test_content_id(): ], {"host": test_zen.hosts[1], "record": "3232985"}, ), + ( + [ + "https://zenodo.org/records/18553140", + "10.5281/zenodo.18553140", + "https://doi.org/10.5281/zenodo.18553140", + ], + {"host": test_zen.hosts[1], "record": "zenodo.18553140"}, + ), ( [ "https://data.caltech.edu/records/1235",