Próbuję pobrać plik z dysku Google w skrypcie i mam z tym trochę problemów. Pliki, które próbuję pobrać, są tutaj .
Rozglądałem się szeroko i wreszcie udało mi się zdobyć jednego z nich do pobrania. Mam identyfikatory UID plików, a mniejszy (1,6 MB) pobiera dobrze, jednak większy plik (3,7 GB) zawsze przekierowuje na stronę, która pyta mnie, czy chcę kontynuować pobieranie bez skanowania antywirusowego. Czy ktoś może mi pomóc ominąć ten ekran?
Oto jak uruchomiłem pierwszy plik -
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
Kiedy uruchomię to samo w innym pliku,
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
Otrzymuję następujące dane wyjściowe -
Zauważyłem w wierszu od trzeciego do ostatniego w linku, &confirm=JwkK
który jest losowym ciągiem 4 znaków, ale sugeruje, że istnieje sposób na dodanie potwierdzenia do mojego adresu URL. Jeden z linków, które odwiedziłem, sugeruje, &confirm=no_antivirus
ale to nie działa.
Mam nadzieję, że ktoś tutaj może w tym pomóc!
curl script
użyte do pobrania plikugoogle drive
ponieważ nie jestem w stanie pobrać działającego pliku (obrazu) z tego skryptucurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
gdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
Odpowiedzi:
OSTRZEŻENIE : Ta funkcja jest przestarzała. Zobacz ostrzeżenie poniżej w komentarzach.
Spójrz na to pytanie: Bezpośrednie pobieranie z Dysku Google za pomocą interfejsu API Dysku Google
Zasadniczo musisz utworzyć katalog publiczny i uzyskać dostęp do swoich plików poprzez odniesienie względne za pomocą czegoś takiego
Alternatywnie możesz użyć tego skryptu: https://github.com/circulosmeos/gdown.pl
źródło
export=download
więc powinien być dobry w przewidywalnej przyszłości, chyba że Google zmieni ten schemat adresów URLCzerwiec 2020 r
pip install gdown
The
file_id
Powinien wyglądać mniej więcej tak 0Bz8a_Dbh9QhbNU3SGlFaDgMożesz go uzyskać, klikając plik prawym przyciskiem myszy, a następnie Uzyskaj link do udostępniania. Działa tylko na plikach o otwartym dostępie (każdy, kto ma link, może wyświetlać). Nie działa w przypadku katalogów. Testowane na Google Colab. Działa najlepiej przy pobieraniu plików. Użyj tar / zip, aby uczynić go jednym plikiem.
Przykład: aby pobrać plik readme z tego katalogu
źródło
export=download&
zgdown https://drive.google.com/uc?export=download&id=your_file_id
i działa jak czarNapisałem fragment kodu w języku Python, który pobiera plik z Dysku Google, podając link do udostępnienia . Działa od sierpnia 2017 r .
Snipped nie korzysta z gdrive ani interfejsu API Dysku Google. Korzysta z modułu żądań .
Podczas pobierania dużych plików z Dysku Google pojedyncze żądanie GET nie jest wystarczające. Potrzebny jest drugi, a ten ma dodatkowy parametr adresu URL o nazwie potwierdź , którego wartość powinna być równa wartości określonego pliku cookie.
źródło
python snippet.py file_id destination
. Czy to właściwy sposób na uruchomienie? Bo jeśli miejscem docelowym jest folder, wyrzucany jest błąd. Jeśli wykonam twardy plik i użyję go jako miejsca docelowego, fragment kodu wydaje się działać dobrze, ale potem nic nie robi.$ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx
działał dla mnie. w przypadku, gdy to nie działa, czy masz jakieś udostępnione out out? czy utworzono jakiś plik?Możesz użyć narzędzia wiersza poleceń Linux / Unix typu open source
gdrive
.Aby zainstalować:
Pobierz plik binarny. Wybierz na przykład ten, który pasuje do Twojej architektury
gdrive-linux-x64
.Skopiuj go na swoją ścieżkę.
Aby go użyć:
Określ identyfikator pliku Dysku Google. W tym celu kliknij prawym przyciskiem myszy żądany plik na stronie Dysku Google i wybierz „Uzyskaj link…”. Zwróci coś takiego
https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. Uzyskaj ciąg za?id=
i skopiuj go do schowka. To jest identyfikator pliku.Pobierz plik. Oczywiście zamiast tego użyj identyfikatora pliku w następującym poleceniu.
Przy pierwszym użyciu narzędzie będzie musiało uzyskać uprawnienia dostępu do interfejsu API Dysku Google. W tym celu pokaże Ci link, który musisz odwiedzić w przeglądarce, a następnie otrzymasz kod weryfikacyjny, aby skopiować i wkleić z powrotem do narzędzia. Pobieranie rozpocznie się automatycznie. Nie ma wskaźnika postępu, ale można obserwować postęp w menedżerze plików lub drugim terminalu.
Źródło: Komentarz Tobiego do innej odpowiedzi tutaj.
Dodatkowa sztuczka: ograniczenie prędkości. Aby pobierać z
gdrive
ograniczoną maksymalną szybkością (aby nie zalać sieci…), możesz użyć takiego polecenia (pv
to PipeViewer ):To pokaże ilość pobranych danych (
-b
) i szybkość pobierania (-r
) i ograniczy tę szybkość do 90 kiB / s (-L 90k
).źródło
Jak to działa?
Pobierz plik cookie i kod HTML z curl.
Przeciągnij html do grep i sed i wyszukaj nazwę pliku.
Uzyskaj kod potwierdzający z pliku cookie za pomocą awk.
Na koniec pobierz plik z włączoną obsługą plików cookie, potwierdź kod i nazwę pliku.
Jeśli nie potrzebujesz nazwy pliku, zmienne curl może zgadnąć
-L Śledź przekierowania
-O Nazwa
zdalna -J Nazwa zdalna nagłówka
Aby wyodrębnić identyfikator pliku Google z adresu URL, możesz użyć:
LUB
źródło
--insecure
opcję do obu żądań zwijania, aby to działało.Aktualizacja od marca 2018 r.
Próbowałem różnych technik podanych w innych odpowiedziach, aby pobrać mój plik (6 GB) bezpośrednio z dysku Google do mojej instancji AWS ec2, ale żadna z nich nie działa (może dlatego, że są stare).
Tak więc, dla informacji innych, oto jak to zrobiłem z powodzeniem:
https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
Skopiuj poniższy skrypt do pliku. Wykorzystuje curl i przetwarza plik cookie, aby zautomatyzować pobieranie pliku.
Jak pokazano powyżej, wklej FILEIDENTIFIER w skrypcie. Pamiętaj, aby zachować podwójne cytaty!
myfile.zip
).sudo chmod +x download-gdrive.sh
.PS: Oto lista Github dla powyższego skryptu: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424
źródło
-c
z--save-cookies
i-b
z--load-cookies
"
cytaty${filename}
w ostatnim wierszu../download-gdrive.sh" Do not be like me and try to run the script by typing
download-gdrive.sh, the
. / `Wydaje się być obowiązkowy.Oto szybki sposób, aby to zrobić.
Upewnij się, że link jest udostępniony i będzie wyglądał mniej więcej tak:
https://drive.google.com/open?id=FILEID&authuser=0
Następnie skopiuj ten FILEID i użyj go w ten sposób
źródło
wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
-r
flagąwget
. Tak to jestwget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
Domyślne zachowanie dysku google polega na skanowaniu plików w poszukiwaniu wirusów, jeśli plik jest zbyt duży, wyświetli monit dla użytkownika i powiadomi go, że pliku nie można przeskanować.
W tej chwili jedynym obejściem, jakie znalazłem, jest udostępnienie pliku w Internecie i utworzenie zasobu internetowego.
Cytat ze strony pomocy Google Drive:
Za pomocą Dysku możesz udostępniać zasoby internetowe - takie jak pliki HTML, CSS i JavaScript - jako witryny sieci Web.
Aby hostować stronę internetową za pomocą Dysku:
Znalezione tutaj: https://support.google.com/drive/answer/2881970?hl=pl
Na przykład publicznie udostępniając plik na dysku Google, link udostępniania wygląda następująco:
Następnie skopiuj identyfikator pliku i utwórz link googledrive.com, który wygląda następująco:
źródło
Łatwa droga:
(jeśli potrzebujesz go tylko do jednorazowego pobrania)
Powinieneś skończyć z czymś takim jak:
Wklej go w konsoli, dodaj
> my-file-name.extension
na końcu (w przeciwnym razie zapisze plik w konsoli), a następnie naciśnij klawisz Enter :)źródło
Na podstawie odpowiedzi Roshana Sethi
Maja 2018 r
Korzystanie z WGET :
Utwórz skrypt powłoki o nazwie wgetgdrive.sh, jak poniżej:
Nadaj odpowiednie uprawnienia do wykonania skryptu
W terminalu uruchom:
na przykład:
źródło
chmod 770 wgetgdrive.sh
- AKTUALIZACJA--
Aby pobrać plik, pobierz najpierw
youtube-dl
python tutaj:youtube-dl: https://rg3.github.io/youtube-dl/download.html
lub zainstaluj za pomocą
pip
:AKTUALIZACJA:
Właśnie się dowiedziałem:
Kliknij prawym przyciskiem myszy plik, który chcesz pobrać z drive.google.com
Kliknij
Get Sharable link
Włącz
Link sharing on
Kliknij
Sharing settings
Kliknij górne menu, aby wyświetlić opcje
Kliknij Więcej
Wybierz
[x] On - Anyone with a link
Skopiuj link
Skopiuj identyfikator po
https://drive.google.com/file/d/
:Wklej to do wiersza poleceń:
Wklej identyfikator za
open?id=
Mam nadzieję, że to pomoże
źródło
Żadna odpowiedź nie sugeruje, co działa dla mnie od grudnia 2016 r. ( Źródło ):
pod warunkiem, że plik Dysku Google został udostępniony osobom mającym link i
{FileID}
jest ciągiem?id=
w udostępnianym adresie URL.Chociaż nie sprawdzałem dużych plików, uważam, że warto wiedzieć.
źródło
curl -L -o {filename} https://drive.google.com/uc?id={FileID}
pracował dla mnie, dzięki!Najprostszym sposobem jest:
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
źródło
Powyższe odpowiedzi są nieaktualne w kwietniu 2020 r., Ponieważ dysk Google używa teraz przekierowania do faktycznej lokalizacji pliku.
Działa od kwietnia 2020 r. W systemie macOS 10.15.4 dla dokumentów publicznych:
źródło
download-google-2
pracuje dla mnie. Mój plik ma rozmiar 3G. Dzięki @ danieltan95download-google-2
ostatni curl do tegocurl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;
i teraz może wznowić pobieranie.Miałem ten sam problem z Dyskiem Google.
Oto jak rozwiązałem problem za pomocą Links 2 .
Otwórz przeglądarkę na komputerze, przejdź do pliku na Dysku Google. Udostępnij plik publicznie.
Skopiuj publiczny link do schowka (np. Kliknij prawym przyciskiem myszy, Kopiuj adres linku)
Otwórz terminal. Jeśli pobierasz na inny komputer / serwer / maszynę, powinieneś SSH do niego w tym momencie
Zainstaluj Links 2 (metoda debian / ubuntu, użyj dystrybucji lub odpowiednika systemu operacyjnego)
sudo apt-get install links2
Wklej link do terminala i otwórz go za pomocą linków:
links2 "paste url here"
Przejdź do łącza pobierania w Łączach za pomocą klawiszy strzałek i naciśnij Enter
Wybierz nazwę pliku, a plik zostanie pobrany
źródło
Links
całkowicie załatwiło sprawę! I jest o wiele lepszy niżw3m
Użyj youtube-dl !
youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890
Możesz również przejść,
--get-url
aby uzyskać bezpośredni adres URL pobierania.źródło
youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage
. może masz nieaktualną wersjęyoutube-dl
lub format linku nie jest przez nią rozpoznawany z jakiegoś powodu ... Spróbuj użyć powyższego formatu, zastępując identyfikator identyfikatorem pliku z oryginalnego adresu URLUżywam fragmentu curl @ Amit Chahar, który opublikował dobrą odpowiedź w tym wątku. Uważam, że użyteczne jest umieszczenie go w funkcji bash zamiast w osobnym
.sh
plikuktóre mogą być uwzględnione np.
~/.bashrc
po (oczywiście, jeśli nie są pozyskiwane automatycznie) i użyte w następujący sposóbźródło
Istnieje wieloplatformowy klient open source, napisany w Go: drive . Jest całkiem fajny i posiada wiele funkcji, a także jest w fazie rozwoju.
źródło
Wszystkie powyższe odpowiedzi wydają się zaciemniać prostotę odpowiedzi lub mają pewne niuanse, które nie zostały wyjaśnione.
Jeśli plik jest udostępniany publicznie, możesz wygenerować bezpośredni link do pobrania, po prostu znając jego identyfikator. Adres URL musi mieć postać „ https://drive.google.com/uc?id=[FILEID]&export=download ” Działa od 11-22-2019. Nie wymaga to od odbiorcy zalogowania się w Google, ale wymaga publicznego udostępnienia pliku.
W przeglądarce przejdź do drive.google.com.
Kliknij plik prawym przyciskiem myszy i kliknij „Uzyskaj link do udostępnienia”
Edytuj adres URL, aby był w następującym formacie, zastępując „[FILEID]” identyfikatorem udostępnianego pliku:
https://drive.google.com/uc?id=[FILEID]&export=download
To jest twój bezpośredni link do pobrania. Jeśli klikniesz go w przeglądarce, plik zostanie „wypchnięty” do przeglądarki, otwierając okno pobierania, umożliwiając zapisanie lub otwarcie pliku. Możesz również użyć tego linku w swoich skryptach pobierania.
Więc równoważne polecenie curl byłoby:
źródło
Google Drive can't scan this file for viruses. <filename> is too large for Google to scan for viruses. Would you still like to download this file?
Nie byłem w stanie uruchomić skryptu perla Nanoix ani innych przykładów curl, które widziałem, więc zacząłem szukać interfejsu API w Pythonie. Działa to dobrze w przypadku małych plików, ale duże pliki dusiły dostępną pamięć RAM, więc znalazłem inny fajny kod, który wykorzystuje zdolność API do częściowego pobrania. Gist tutaj: https://gist.github.com/csik/c4c90987224150e4a0b2
Zwróć uwagę na temat pobierania pliku json client_secret z interfejsu API do katalogu lokalnego.
Źródłoźródło
Oto krótki skrypt napisany przeze mnie, który dziś spełnia swoje zadanie. Działa na dużych plikach i może również wznowić częściowo pobrane pliki. Wymaga dwóch argumentów, pierwszy to identyfikator_pliku, a drugi to nazwa pliku wyjściowego. Główne ulepszenia w porównaniu z poprzednimi odpowiedziami są takie, że działa na dużych plikach i potrzebuje tylko powszechnie dostępnych narzędzi: bash, curl, tr, grep, du, cut i mv.
źródło
Działa to od listopada 2017 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db
źródło
Po zabawie w śmieci. Znalazłem sposób na pobranie mojego słodkiego pliku za pomocą narzędzi Chrome dla programistów.
Wyświetli to żądanie w konsoli „Network”
Kliknij prawym przyciskiem myszy -> Kopiuj -> Kopiuj jako zawinięcie
-o
aby utworzyć wyeksportowany plik.curl 'https://docs.google.com/spreadsheets/d/1Cjsryejgn29BDiInOrGZWvg/export?format=xlsx&id=1Cjsryejgn29BDiInOrGZWvg' -H 'authority: docs.google.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X..... -o server.xlsx
Rozwiązany!
źródło
Oto obejście, które wymyśliłem, pobierając pliki z Dysku Google do mojej powłoki Google Cloud Linux.
googledrive.com/host/[ID]
wget https://googledrive.com/host/[ID]
mv [ID] 1.zip
rozpakuj 1.zip
otrzymamy pliki.
źródło
Znalazłem działające rozwiązanie tego ... Po prostu skorzystaj z poniższych
źródło
Jest łatwiejszy sposób.
Zainstaluj cliget / CURLWGET z rozszerzenia firefox / chrome.
Pobierz plik z przeglądarki. Tworzy to link curl / wget, który zapamiętuje pliki cookie i nagłówki użyte podczas pobierania pliku. Aby pobrać, użyj tego polecenia z dowolnej powłoki
źródło
łatwym sposobem na usunięcie pliku z dysku google możesz również pobrać plik na colab
Następnie
lub
Dokument https://pypi.org/project/gdown/
źródło
PRACA W maju 2018 r
Cześć, na podstawie tych komentarzy ... tworzę bash, aby wyeksportować listę adresów URL z pliku URLS.txt do URLS_DECODED.txt używanego w niektórych akceleratorach, takich jak Flashget (używam cygwin do łączenia Windowsa i Linuksa)
Pająk poleceń został wprowadzony, aby uniknąć pobierania i uzyskania końcowego linku (bezpośrednio)
Polecenie GREP HEAD i CUT, przetwarzaj i uzyskaj ostatni link, Opiera się na języku hiszpańskim, może możesz być portem do JĘZYKA ANGIELSKIEGO
echo -e "$URL_TO_DOWNLOAD\r"
prawdopodobnie \ r jest tylko cywin i musi być zastąpione przez \ n (linia przerwania)**********user***********
to folder użytkownika*******Localización***********
jest w języku hiszpańskim, usuń asterykę i pozwól słowu w języku angielskim Lokalizacja i dostosuj numery HEAD i CUT do odpowiedniego podejścia.źródło
Wystarczy użyć wget z:
PD. Plik musi być publiczny.
źródło
skicka to narzędzie cli do przesyłania, pobierania plików dostępu z dysku google.
przykład -
źródło