wake-up-neo.net

Verwenden Sie curl, um einen Dropbox-Ordner über einen freigegebenen Link (nicht öffentlichen Link) herunterzuladen.

Dropbox erleichtert das programmgesteuerte Herunterladen einer einzelnen Datei per Curl (EX: curl -O https://dl.dropboxusercontent.com/s/file.ext). Für einen Ordner ist es etwas kniffliger (normaler Verzeichnisordner, nicht komprimiert). Der freigegebene Link für einen Ordner wird im Gegensatz zu einer Datei nicht direkt mit dem komprimierten Ordner verknüpft (Dropbox komprimiert den Ordner automatisch, bevor er heruntergeladen wird). Es scheint, dass Sie einfach ?dl=1 Am Ende des Links einfügen könnten, da dies den Download in einem Browser direkt startet. Dies weist jedoch auf ein HTML-Vermittlungsdokument hin, das zum eigentlichen Zip-Ordner umleitet und anscheinend nicht mit Curl funktioniert. Gibt es eine Möglichkeit, einen Ordner über einen freigegebenen Link mit curl herunterzuladen? Mir ist klar, dass die beste Lösung darin besteht, die Dropbox-API zu verwenden, aber für dieses Projekt ist es wichtig, sie so einfach wie möglich zu halten. Darüber hinaus muss die Lösung in ein Bash-Shell-Skript integriert werden.

38
USCFan13

Es scheint möglich zu sein, sich mit dem -L Möglichkeit. Dies zwingt das Einrollen, der Umleitung zu folgen. Darüber hinaus ist es wichtig, einen Ausgabenamen mit der Erweiterung .Zip anzugeben, da der Standardname ein zufälliger alphanumerischer Name ohne Erweiterung ist. Vergessen Sie nicht, das ?dl=1 bis zum Ende des Links. Andernfalls wird die Umleitungsseite niemals mit dem Einrollen erreicht.

curl -L -o newName.Zip https://www.dropbox.com/sh/[folderLink]?dl=1
85
USCFan13
  1. Folge den Weiterleitungen (benutze -L). Ihr unmittelbares Problem ist, dass Curl keine Weiterleitungen verfolgt.

  2. Legen Sie einen Dateinamen fest. (Optional)

    • Dropbox sendet bereits einen Content-Disposition Header mit seinem Dropbox Dateinamen.
      Es gibt keinen Grund, den Dateinamen anzugeben, wenn Sie die richtigen Curl-Flags verwenden.
    • Umgekehrt können Sie einen Dateinamen mit einer beliebigen Methode erzwingen.

Verwenden Sie einen dieser Befehle:

curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -O -J -L

Den entfernten Dateinamen (-O, -J) Beibehalten/schreiben und Weiterleitungen (-L) Folgen.

  • Dieselbe Zeile gilt sowohl für einzeln freigegebene Dateien als auch für ganze Ordner.
  • Ordner werden automatisch als .Zip Gespeichert (basierend auf dem Ordnernamen).
  • Vergessen Sie nicht, den Parameter ?dl=0 In ?dl=1 Zu ändern (siehe Kommentare).

ODER:

curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -L -o [filename]

Folgen Sie der Umleitung (-L) Und legen Sie einen Dateinamen (-o) Ihrer Wahl fest.



HINWEIS: Verwenden des Flags -J Im Allgemeinen:

WARNUNG: Verwenden Sie diese Option mit Bedacht, insbesondere unter Windows. Ein betrügerischer Server könnte Ihnen den Namen einer DLL oder einer anderen Datei senden, die möglicherweise automatisch von Windows oder einer Software von Drittanbietern geladen wird.

Bitte konsultieren Sie: https://curl.haxx.se/docs/manpage.html#OPTIONS (Siehe: - O , - J , - L , - o ) für mehr.

9
bshea