Zenodo: Используйте Commend Line, чтобы загрузить файл из Zenode

Созданный на 16 окт. 2019  ·  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-limited-curl-sh-L26

Все 8 Комментарий

Поскольку для файлов этой записи установлен ограниченный доступ, они не являются общедоступными, для доступа к ним вам понадобится токен доступа для проверки вашей личности, который вы можете создать здесь или вам следует выполнить отображаемую процедуру.

Закрытие, так как это не ошибка.

как использовать приватный токен? Любая идея? Спасибо большое

Мне это тоже нужно, кто-нибудь знает?

мне тоже любопытно

@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-адресом для скачивания
и он должен начать загрузку,

и замените имя файла на --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-limited-curl-sh-L26

Была ли эта страница полезной?
0 / 5 - 0 рейтинги