Zenodo: 使用 Commend Line 从 Zenode 下载文件

创建于 2019-10-16  ·  8评论  ·  资料来源: zenodo/zenodo

很抱歉打扰您,但我遇到了一个问题很长时间了。 但是,使用浏览器从Zenode下载大型数据集对我来说并不稳定。 所以我想到了使用“wget”,但是当我按照问题中提供的方法时,我失败了。

从前一期,我使用:

curl  https://zenodo.org/api/records/3407840

我得到了 REST API:

https://zenodo.org/api/files/f0d7eb3a-9575-4297-8a9f-39564e383750/Center%28Left_Down%29.zip.001

但是我得到了404 ,就像不使用 REST API 一样。

wget -r https://zenodo.org/api/files/f0d7eb3a-9575-4297-8a9f-39564e383750/Center%28Left_Down%29.zip.001

你能帮我吗? 谢谢!

最有用的评论

我试过这个,它对我有用:
https://gist.github.com/slint/d47fe5628916d14b8d0b987ac45aeb66#file -zenodo-restricted-curl-sh-L26

所有8条评论

由于此记录的文件被设置为受限访问,因此它们不公开可用,要访问它们,您需要一个访问令牌来验证您的身份,您可以在此处创建该令牌,或者您应该按照显示的过程进行操作。

关闭它,因为它不是错误。

如何使用私有令牌? 任何的想法? 非常感谢

我也需要,有人知道吗?

我也很好奇

@thesby @keunwoochoi

以下是下载文件的步骤
从命令行本身

1- 获取个人令牌(您可能已经拥有)
2-运行以下命令

curl --cookie zenodo-cookies.txt "https://zenodo.org/record/1117372?token=<your token here>"
将记录号 1117372 替换为合适的记录号

生成 cookie 文件后,
现在只需打开您的浏览器,右键单击下载按钮并复制其网址

它应该看起来像https://zenodo.org/record/1117372/files/musdb18.zip?download=1

现在 ,

只需在您的终端上运行此命令,

curl --cookie zenodo-cookies.txt "https://zenodo.org/record/1117372/files/musdb18.zip?download=1" --output musdb18.zip

用您的特定下载网址替换下载链接
它应该开始下载,

并替换 --output musdb18.zip 上的文件名

使用您想要的适当文件名

这是对我有用的方法,

如果您遇到任何问题,请告诉我
祝你有美好的一天 !

我在使用 cookie 方法时遇到了麻烦,所以我使用了 zenodo API 方法(在 Python 中)。

首先,我创建了一个个人访问令牌(不是开发人员应用程序),并将其分配给我的变量ACCESS_TOKEN 。 然后我查询了我记录中所有可以下载的文件:

import requests

ACCESS_TOKEN = "replace this with your access token"
record_id = "replace this with your record"

r = requests.get(f"https://zenodo.org/api/records/{record_id}", params={'access_token': ACCESS_TOKEN})
download_urls = [f['links']['self'] for f in r.json()['files']]
filenames = [f['key'] for f in r.json()['files']]

print(r.status_code)
print(download_urls)

现在我有了要下载的文件的 URL 以及它们的名称(即密钥),我可以使用requests.get下载它们并将它们保存到文件中:

for filename, url in zip(filenames, download_urls):
    print("Downloading:", filename)
    r = requests.get(url, params={'access_token': ACCESS_TOKEN})
    with open(filename, 'wb') as f:
        f.write(r.content)

我试过这个,它对我有用:
https://gist.github.com/slint/d47fe5628916d14b8d0b987ac45aeb66#file -zenodo-restricted-curl-sh-L26

此页面是否有帮助?
0 / 5 - 0 等级