Comment télécharger des fichiers Dropbox en utilisant la commande wget?

72

Il semble que je ne puisse télécharger que des fichiers dropbox à l'aide de l'explorateur, tel que chrome et firefox. Si j'utilise wget pour télécharger, j'obtiendrais un fichier au format HTML. Pourquoi?

Par exemple, vous pouvez ouvrir ce lien

Vous n'obtiendrez pas le contenu de ce fichier, pourquoi? Ce qui suit fait partie de test.txt pour le télécharger, ce n'est pas du tout le contenu de test.txt.

Est-il donc possible de télécharger des fichiers Dropbox en utilisant wgetplutôt que l'explorateur?

document.observe('script:loaded', function() {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } else if (window.jQuery) {
jQuery(function () {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } 

Je n'arrive pas à obtenir test.txt avec la commande

wget https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.tx


ls -l 
-rw-rw-r-- 1 mirror mirror  30K Sep  6 15:01 test.txt
hugemeow
la source
Question stupide: étiez-vous connecté à DropBox lorsque vous avez essayé de télécharger à l'aide d'un navigateur?
1
Utiliser wgetsur votre lien récupère test.txt(contenant les 4 octets "test") me convient parfaitement. Peut-être que quelque chose dans votre .wgetrcest la cause?
Jjlin
@ jjlin quelle est votre commande? le mien est ajouter ci
hugemeow
5
J'ai utilisé wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Cela a bien fonctionné pour moi, mais si vous souhaitez forcer un téléchargement, vous pouvez envisager d'essayer wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'(notez le ?dl=1paramètre de requête).
Jjlin
@jjlin alors peut-être un script est nécessaire si je veux télécharger le fichier de dropbox :)
jeudi

Réponses:

21

Le lien dans votre question n'est pas le lien vers le fichier, mais un lien vers la page Dropbox de ce fichier.
Si vous souhaitez utiliser wgetpour le télécharger, vous devez copier le lien de téléchargement direct à partir du menu qui s’affiche lorsque vous cliquez sur le bouton de téléchargement à droite.

Dans mon cas, cela a bien fonctionné. Cependant, il est parfois difficile de télécharger des liens en dehors du navigateur en raison de paramètres autres que le lien lui-même. Les cookies du site sont un élément commun qui n’existe pas lorsque vous copiez simplement le lien.

Essayez ce complément FF pour obtenir les wgetliens appropriés

Et aussi, surtout si nous parlons d’un poste de travail connu et non d’un poste occasionnel, vous pouvez bien sûr installer le client Dropbox. Ce sera le moyen le plus simple, laissez simplement votre boîte faire partie de la structure de votre fichier et éliminez le besoin de téléchargements compliqués.
Voir cet article askubuntu.com et la page de téléchargement de Dropbox .

amotzg
la source
4
Essayer d'obtenir le lien direct dans le navigateur affiche une annonce pour une option de mise à niveau. Je vois l’autre réponse ( superuser.com/a/486351/106977 ) ?dl=1, mais cela ne permet pas non plus d’obtenir le lien (probablement en raison de l’empêchement de Box de l'utiliser sauf si vous effectuez une mise à niveau).
Bgoodr
@ amotzg Y a-t-il un moyen de reprendre le téléchargement depuis la dropbox avec le drapeau --continue? Cela ne semble pas fonctionner pour moi. ( unix.stackexchange.com/questions/174850/… )
prière
@PrayagUpd, a trouvé ce stackoverflow.com/questions/18084677/… .
amotzg
1
Cet add-on a aidé avec un lien dropbox partagé qui nécessite un mot de passe pour le télécharger. Notez que, en cliquant avec le bouton droit sur le bouton "télécharger", en sélectionnant cliget, vous obtenez l'URL de la sortie? Dl = 0, qui est un fichier plus petit. Changer cela en? Dl = 1 donne le chemin de téléchargement correct.
JonTheNiceGuy
116

Il suffit d'ajouter ?dl=1à la fin du lien! Par exemple:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Cela devrait vous permettre de récupérer le fichier en question sans rien ajouter au fichier.

Une dernière chose! Si vous voulez enregistrer le fichier ailleurs, utilisez l' -Ooption comme ceci

wget -O /root/Desktop/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

Et si vous voulez avoir un peu d’interface graphique, vous pouvez utiliser zenitypour marquer l’emplacement où le fichier sera téléchargé!

Voici un exemple de code:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"
Ismael Segui
la source
C'est génial, fonctionne hors de la boîte ...
Slish
Vous avez juste utilisé votre suggestion pour obtenir un dossier partagé et vous avez reçu un fichier zip étonnant (miss name). Impressionnant! Merci beaucoup!!
Rafareino
1
Bien meilleure réponse que celle acceptée. Cela a beaucoup aidé, merci.
Seiyria
3
Cette méthode fonctionne-t-elle encore? En utilisant la commande wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'je continue à recevoir ERROR 400: Bad Request.
Paul Rougieux
Maintenant je comprends 500 Internal Server Error, Dropbox est une vraie merde.
Avio
15

Dropbox l'a modifié pour que wgetcela soit correct et récupère le fichier au lieu de l'interstitiel.

Utilisez "Partager le lien" pour récupérer le lien direct vers le fichier.

Ryan
la source
Cela devrait être la bonne réponse, c'est trivial avec le lien de partage.
davidparks21
Agréable! J'ai eu une wget: No matchsortie, qui a été résolue en utilisant le lien inclus entre guillemets simples (à cause de la ?dans l'URL peut-être?)
Matifou
3

Vu cette question et pensé que cela peut aider quelqu'un qui tente de télécharger plusieurs fichiers à la fois.

Voici un petit script Windows CMD / Batch que vous pouvez utiliser.
Il peut facilement être ajusté pour fonctionner sous un shell Bash (Mac / Linux / etc).
Il utilise CURL . Le WGET devrait également fonctionner avec quelques ajustements mineurs.

1. Installez Curl pour Windows.

2. Placez les liens SHARED individuels dans un fichier texte (1 par ligne).

3. Réglez tous les paramètres "? Dl = 0" de votre fichier texte sur "? Dl = 1" et enregistrez.

4. Copiez le script ci-dessous dans un fichier nommé 'geturllist.cmd' (ou à votre choix).

5. Ouvrez une invite CMD et exécutez le script CMD.

Les fichiers téléchargés apparaîtront dans le répertoire de travail actuel dans lequel vous avez exécuté le script.

REMARQUE:
Vous devez avoir correctement formaté les LIENS PARTAGÉS que "N'importe qui avec le lien" peut s'ouvrir. Ce script ne fonctionne PAS avec les liens protégés par mot de passe ou les partages basés sur un login / email Dropbox.
REMARQUE:
Si le fichier unique ou le groupe de fichiers (compressé automatiquement) dépasse une certaine taille, il échouera avec une erreur ("Le fichier (zip) est trop volumineux. Ajoutez-le à votre Dropbox."). Dans ce cas, vous devez procéder comme il est indiqué .. ce script ne fonctionnera pas car le lien de partage n'est pas téléchargeable directement.

Exemple de fichier texte:
("RandomShareCharacters / Here" sera remplacé par ce qu'il est dit dans le lien de partage)

 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1

geturllist.cmd:

@echo off
set count=0
setlocal ENABLEDELAYEDEXPANSION
IF [%1]==[] GOTO BLANK
SET PARAMETER=%1
SET _PARAMETER=%PARAMETER:~0,2%

IF [%1]==[/?] GOTO HELP
IF [%1]==[--help] GOTO HELP
IF %_PARAMETER%==-h GOTO HELP

IF EXIST %1 (

  for /f "delims=" %%u in (%1) do (

      set /a count=count+1
      curl -kL "%%u" -O -J

      REM For other share sites:
      REM (ZIP EXAMPLE) if no filename type header sent:
      REM > curl -kL "%%u" -o "!count!.zip"
      REM > echo "!count!.zip"
      REM Will download file(s) called 1.zip, 2.zip, etc.
      )
  ) ELSE (
GOTO BLANK
)
GOTO DONE

:HELP
ECHO.
ECHO    Usage:
ECHO.
ECHO    geturllist [path]\[filename]
ECHO.
ECHO.
ECHO    Required Parameters:
ECHO.
ECHO    [filename]  A text file with one url per line
ECHO    -h      Help
ECHO.
GOTO DONE

:BLANK
ECHO.
ECHO Error: no input file found

:HELPMSG
ECHO.
ECHO Try -h for Help

:DONE
ECHO.
ECHO Exiting.
ECHO.

Exemple d'utilisation:

geturllist.cmd X:\somepath\dropbox.txt

bshea
la source
1
Les votes sans commentaires sont charmants. Merci. Blessé vos sentiments?
bshea
1
Incroyable pourquoi les gens ont voté contre cette réponse ffs, voté.
Josyula Krishna
0

Vous allez avoir quelque chose qui s'appelle "fichier" ou un nom étrange ... Renommer ce fichier comme bon vous semble fera l'affaire. Le fichier réellement téléchargé est le fichier que vous vouliez avec simplement un nom étrange et sans l'attribut de type de fichier.

Kruno
la source
-2

La méthode la plus simple et la plus garantie pour ce type de téléchargement consiste à utiliser les outils de développement de Google Chrome.

  • Appuyez sur F12 pour ouvrir les outils de développement.
  • Aller à l'onglet réseau
  • Appuyez sur le lien de téléchargement pour lancer le téléchargement.
  • Trouver l'événement de téléchargement dans les événements du réseau
  • Faites un clic droit sur la ligne et sélectionnez "Copier en tant que cURL (bash)" ou Windows si vous le souhaitez

  • L'URL ressemblera à ceci:

    curl "http://yoururl.com/yourfile" -H "Pragma: no-cache" -H "Origin: http://yoururl.com" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: en-US;q=0.8,en;q=0.6,fr;q=0.4" -H "User-Agent: Mozilla/5.0 bla bla" -H "Content-Type: text/plain;charset=UTF-8" -H "Accept: */*" -H "Cache-Control: max-age=0" -H "Referer: http://yoururl.com/downloadpage" -H "Cookie: e07214fb60a1a; _ga=98987; " -H "Connection: keep-alive"
    
  • Remplacer curlparwget

  • Remplacer -H "some headers"par--header="some headers"
  • Collez-le dans votre fenêtre bash et ajoutez le -oparamètre. (Si vous n'ajoutez pas ce paramètre, la sortie sera imprimée sur la console.
  • Appuyez sur Entrée et profitez de votre téléchargement.
Hüseyin Yağlı
la source
OP a demandé l'utilisation avec wget.
twerdster
Vous pouvez facilement convertir de curl en wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı