Zenodo: Commend Lineを使用して、Zenodeからファイルをダウンロードします

作成日 2019年10月16日  ·  8コメント  ·  ソース: zenodo/zenodo

ご迷惑をおかけして申し訳ありませんが、私は長い間問題に直面してきました。 ただし、ブラウザを使用してZenodeから大きなデータセットをダウンロードするのは安定していません。 そのため、「wget」を使用することが頭に浮かびますが、 Issuesで提供されているアプローチに従うと、失敗しました。

前号から、私は以下を使用します:

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

私はRESTAPIを入手しました:

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

しかし、RESTAPIを使用しないのと同じように404を取得しました。

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件

このレコードのファイルは制限付きアクセスに設定されているため、公開されていません。これらのファイルにアクセスするには、IDを確認するためのアクセストークンが必要です。これはここで作成でき

エラーではないので、これを閉じます。

プライベートトークンの使い方は? 何か案が? 非常にサックス

私もそれが必要です、誰か知っていますか?

私も興味があります

@thesby @keunwoochoi

ファイルをダウンロードする手順は次のとおりです
コマンドライン自体から

1-個人トークンを取得します(おそらくすでに持っています)
2-次のコマンドを実行します

curl --cookie zenodo-cookies.txt "https://zenodo.org/record/1117372?token=<your token here>"
そのレコード番号1117372を適切なものに置き換えます

Cookieファイルを生成したら、
今すぐブラウザにアクセスし、ダウンロードボタンを右クリックしてそのURLをコピーします

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

ダウンロードリンクを特定のダウンロードURLに置き換えます
ダウンロードを開始する必要があります、

--outputmusdb18.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 評価