Zenodo: Verwenden Sie die Commend-Zeile, um die Datei von Zenode herunterzuladen

Erstellt am 16. Okt. 2019  ·  8Kommentare  ·  Quelle: zenodo/zenodo

Es tut mir leid, Sie zu stören, aber ich habe seit langem ein Problem. Es ist jedoch nicht stabil für mich, den großen Datensatz von Zenode mit einem Browser herunterzuladen. Also kommt mir in den Sinn, 'wget' zu verwenden, aber wenn ich dem Ansatz in Issues folge, bin ich gescheitert.

Aus der vorherigen Ausgabe verwende ich:

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

Ich habe die REST-API:

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

Aber ich habe 404 bekommen, als würde ich die REST-API nicht verwenden.

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

Könnten Sie mir helfen? Vielen Dank!

Hilfreichster Kommentar

Ich habe das probiert und bei mir hat es funktioniert:
https://gist.github.com/slint/d47fe5628916d14b8d0b987ac45aeb66#file -zenodo-restricted-curl-sh-L26

Alle 8 Kommentare

Da die Dateien dieses Datensatzes auf eingeschränkten Zugriff eingestellt sind, sind sie nicht öffentlich zugänglich. Um darauf zuzugreifen, benötigen Sie einen Zugriffstoken zur Überprüfung Ihrer Identität, den Sie hier erstellen können, oder folgen Sie dem angezeigten Verfahren .

Schließe dies, da es kein Fehler ist.

Wie verwendet man das private Token? Irgendeine Idee? Danke sehr

Ich brauche es auch, jemand bekannt?

ich bin auch neugierig

@thesby @keunwoochoi

Hier sind die Schritte zum Herunterladen der Dateien
von der Kommandozeile selbst

1- Erwerben Sie das persönliche Token (das Sie wahrscheinlich bereits haben)
2- Führen Sie die folgenden Befehle aus

curl --cookie zenodo-cookies.txt "https://zenodo.org/record/1117372?token=<your token here>"
Ersetzen Sie diese Datensatznummer 1117372 durch Ihre entsprechende

Nachdem Sie die Cookie-Datei generiert haben,
Rufen Sie jetzt einfach Ihren Browser auf, klicken Sie mit der rechten Maustaste auf die Download-Schaltfläche und kopieren Sie die URL

es sollte ungefähr so ​​aussehen wie https://zenodo.org/record/1117372/files/musdb18.zip?download=1

jetzt ,

Führen Sie einfach diesen Befehl auf Ihrem Terminal aus,

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

Ersetzen Sie den Download-Link durch Ihre spezielle Download-URL
und es sollte mit dem Download beginnen,

und ersetzen Sie den Dateinamen auf --output musdb18.zip

mit dem gewünschten Dateinamen

Dies ist die Methode, die für mich funktioniert,

Lassen Sie es mich wissen, wenn Sie irgendwelche Probleme haben,
Ich wünsche ihnen einen wunderbaren Tag !

Ich hatte Probleme mit dem Cookie-Ansatz, also habe ich stattdessen den zenodo API-Ansatz (in Python) verwendet.

Zuerst habe ich ein persönliches Zugriffstoken (NICHT Entwickleranwendungen) erstellt und es meiner Variablen ACCESS_TOKEN zugewiesen. Dann habe ich alle zum Download verfügbaren Dateien in meiner Akte abgefragt:

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)

Da ich nun die URLs der Dateien, die ich herunterladen möchte, sowie deren Namen (dh Schlüssel) habe, kann ich sie einfach mit requests.get herunterladen und in einer Datei speichern:

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)

Ich habe das probiert und bei mir hat es funktioniert:
https://gist.github.com/slint/d47fe5628916d14b8d0b987ac45aeb66#file -zenodo-restricted-curl-sh-L26

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen