як завантажити файли папки за допомогою команди wget?


72

Здається, я можу завантажувати файли Dropbox лише за допомогою Explorer, таких як хром та firefox. Якщо я використовую wget для завантаження, я отримаю файл у форматі html. Чому?

Наприклад, ви можете відкрити це посилання

Ви б не отримали вміст цього файлу, чому? Далі є частиною test.txt, щоб завантажити його, це зовсім не вміст test.txt.

То чи можна завантажувати файли Dropbox за допомогою, wgetа не Explorer?

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)                        });
                    } 

Я не можу отримати test.txt з командою

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


ls -l 
-rw-rw-r-- 1 mirror mirror  30K Sep  6 15:01 test.txt

Дурне запитання: чи увійшли ви в DropBox, коли намагалися завантажити через браузер?

1
Використання wgetу вашому посиланні пошуку test.txt(містить 4 байти "тест") просто чудово з мого боку. Можливо, щось у вас .wgetrcвикликає це?
jjlin

@jjlin, що твоє командування? моє додано вище
hugemeow

5
Я звик wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Це добре працювало для мене, але якщо ви хочете змусити завантажити, можете wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'замість цього спробувати (зверніть увагу на ?dl=1параметр запиту).
jjlin

@jjlin, тож, можливо, потрібен сценарій, якщо я хочу завантажити файл з dropbox :)
hugemeow

Відповіді:


21

Посилання у вашому запитанні не є посиланням на файл, це посилання на сторінку Dropbox цього файлу.
Якщо ви хочете використовувати його wgetдля завантаження, вам слід скопіювати посилання для прямого завантаження з меню, яке випадає при натисканні кнопки завантаження праворуч.

У моєму випадку це спрацювало чудово. Однак іноді проблеми із завантаженням посилань за межами браузера стосуються інших параметрів, ніж саме посилання. Загальний елемент, який не існує, коли ви просто копіюєте посилання, - це файли cookie.

Спробуйте цей класний додаток FF, щоб отримати правильні wgetпосилання

А також, особливо якщо ми говоримо про відому робочій станції, а не про випадкові, ви, звичайно, можете встановити клієнт Dropbox. Це буде найпростішим способом, просто нехай ваш ящик буде частиною вашої файлової структури і усуне необхідність складних завантажень.
Дивіться цю публікацію askubuntu.com та сторінку завантаження Dropbox .


4
Намагаючись отримати пряме посилання у веб-переглядачі, з'являється реклама для варіанту оновлення. Я бачу іншу відповідь ( superuser.com/a/486351/106977 ), яка передбачає ?dl=1, але це також не дозволяє потрапити на посилання (можливо, через запобігання використання Box, якщо ви не оновите).
bgoodr

@amotzg є спосіб відновити завантаження з Dropbox із прапором --continue? Здається, це не працює для мене. ( unix.stackexchange.com/questions/174850/… )
prayagupd

@PrayagUpd, запросив вас переглянути stackoverflow.com/questions/18084677 / ... .
amotzg

1
Цей додаток допоміг із спільним посиланням, що вимагає пароля, щоб завантажити його. Зауважте, клацнувши правою кнопкою миші на кнопку "завантажити", вибравши кліп, ви отримаєте URL на вихід? Dl = 0, що є меншим файлом. Змінивши його на? Dl = 1, ви отримаєте правильний шлях завантаження.
JonTheNiceGuy

116

Просто додайте ?dl=1в кінці посилання! Наприклад:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Це має забезпечити точне отримання відповідного файлу, не додаючи до нього нічого.

Ще одне! Якщо ви хочете зберегти файл де-небудь ще, скористайтеся такою -Oопцією

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

І якщо ви хочете мати трохи графічного інтерфейсу, ви можете використовувати zenityдля позначення місця, де файл буде завантажений!

Ось приклад коду:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

Це приголомшливо, спрацьовує поза коробкою ...
слотиш

Щойно використали вашу пропозицію, щоб отримати спільну папку, і отримав дивовижний zip-файл (міс назва). Дивовижно! Дуже дякую!!
Рафареїно

1
Набагато краща відповідь, ніж прийнята. Це дуже допомогло, дякую.
Сейрія

3
Цей метод все ще працює? За допомогою команди wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'я продовжую отримувати ERROR 400: Bad Request.
Пол Рудьо

Тепер я зрозумів 500 Internal Server Error, Dropbox - справжнє лайно.
Авіо

15

Dropbox змінив його так, що wgetзробить правильно і отримає файл замість проміжного простору.

Використовуйте "Поділитися посиланням", щоб отримати пряме посилання на файл.


Це має бути правильна відповідь, це банально із посиланням на спільний доступ.
davidparks21

Приємно! Я отримав wget: No matchвисновок, який було вирішено за допомогою посилання, включеного в окремі лапки ( ?можливо, в URL-
адресі,

3

Побачили це запитання і подумали, що це може допомогти тому, хто намагається завантажити багато файлів одночасно.

Ось невеликий сценарій Windows CMD / Batch, який ви можете використовувати.
Його можна легко налаштувати для роботи під оболонкою Bash (Mac / Linux / тощо).
Він використовує CURL . WGET також повинен працювати з деякими незначними налаштуваннями.

1. Встановіть Curl для Windows.

2. Помістіть окремі посилання в розділі з текстом (1 на рядок).

3. Відрегулюйте всі параметри "? Dl = 0" у текстовому файлі до "? Dl = 1" та збережіть.

4. Скопіюйте скрипт нижче у файл під назвою "geturllist.cmd" (або на ваш вибір)

5. Відкрийте підказку CMD та виконайте сценарій CMD.

Завантажені файли з'являться в поточному робочому каталозі, з якого виконується сценарій.

ПРИМІТКА.
Ви повинні мати належним чином відформатовані СПІЛЬНІ ПОСИЛАННЯ, які можна відкрити "Усі, хто має посилання" Цей сценарій НЕ працює з захищеними паролем посиланнями або спільними ресурсами на основі входу / електронної пошти Dropbox.
ПРИМІТКА.
Якщо один файл або група файлів (автоматична застібка) перевищує певний розмір, вона не матиме помилки ("Файл (zip) занадто великий. Будь ласка, додайте його до свого Dropbox."). У цьому випадку ви повинні зробити так, як сказано. Цей сценарій не працюватиме, оскільки посилання на спільний доступ не завантажується безпосередньо.

Приклад текстового файлу:
("RandomShareCharacters / Here" буде замінено тим, що написано у посиланні для спільного використання)

 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.

Приклад використання:

geturllist.cmd X:\somepath\dropbox.txt


1
Вниз голоси без коментарів є прекрасними. Дякую. Пошкодити почуття?
bshea

1
Неймовірно, чому люди спростували цю відповідь ffs, підтримували.
Джосюла Крішна

0

Ви отримаєте щось з назвою "файл" або якесь дивне ім'я ... Просто перейменування цього файлу на все, що ви хочете, зробить свою справу. Фактично завантажений файл - це той файл, який ви хотіли, просто зі дивним іменем та без атрибуту типу файлу.


-2

Найпростіший і найбільш гарантований метод для такого типу завантажень - це використання інструментів для розробників Google Chrome.

  • Натисніть F12, щоб відкрити інструменти для розробників
  • Перейдіть на вкладку мережі
  • Натисніть посилання для завантаження, щоб розпочати завантаження
  • Знайдіть подію завантаження в подіях мережі
  • Клацніть правою кнопкою миші та виберіть "Копіювати як cURL (bash)" або windows, якщо ви хочете

  • URL буде виглядати приблизно так:

    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"
    
  • Замініть curlнаwget

  • Замініть -H "some headers"на--header="some headers"
  • Вставте це у ваше вікно bash та додайте -oпараметр. (Якщо не додати цей параметр, вихід буде надрукований на консоль.
  • Натисніть Enter та насолоджуйтесь завантаженням.

OP вимагає використання wget.
twerdster

Ви можете легко конвертувати з завитка в Wget: stackoverflow.com/a/25044709/531524
huseyın Yağlı
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.