구글 드라이브에서 wget / curl 큰 파일
스크립트로 Google 드라이브에서 파일을 다운로드하려고하는데 약간의 문제가 있습니다. 다운로드하려는 파일은 여기에 있습니다 .
나는 온라인에서 광범위하게 보았고 마침내 그들 중 하나를 다운로드받을 수있었습니다. 파일의 UID가 있고 더 작은 파일 (1.6MB) 다운로드는 괜찮지 만 더 큰 파일 (3.7GB)은 항상 바이러스 검사없이 다운로드를 진행할 것인지 묻는 페이지로 리디렉션됩니다. 누군가 내가 그 화면을 벗어나도록 도울 수 있습니까?
첫 번째 파일이 작동하는 방법은 다음과 같습니다.
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz
다른 파일에서 동일하게 실행하면
curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz
링크의 마지막 3 줄에서 &confirm=JwkK
임의의 4 문자 문자열이 있지만 내 URL에 확인을 추가하는 방법이 있음을 나타냅니다. 내가 방문한 링크 중 하나가 제안 &confirm=no_antivirus
했지만 작동하지 않습니다.
여기 누군가가 이것을 도울 수 있기를 바랍니다!
미리 감사드립니다.
이 질문을 살펴보십시오. Google Drive API를 사용하여 Google Drive에서 직접 다운로드
기본적으로 공용 디렉토리를 작성하고 다음과 같은 상대 참조로 파일에 액세스해야합니다.
wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz
경고 :이 기능은 더 이상 사용되지 않습니다. 주석에서 아래 경고를 참조하십시오.
또는이 스크립트를 사용할 수 있습니다 : https://github.com/circulosmeos/gdown.pl
공유 가능한 링크가 주어지면 Google 드라이브에서 파일을 다운로드하는 Python 스 니펫을 작성했습니다 . 2017 년 8 월 기준으로 작동합니다 .
스니핑은 gdrive 또는 Google Drive API를 사용하지 않습니다 . 요청 모듈을 사용합니다 .
Google 드라이브에서 대용량 파일을 다운로드 할 때 단일 GET 요청으로는 충분하지 않습니다. 두 번째 매개 변수가 필요하며, 여기에는 confirm 이라는 추가 URL 매개 변수가 있으며 그 값은 특정 쿠키의 값과 같아야합니다.
import requests
def download_file_from_google_drive(id, destination):
def get_confirm_token(response):
for key, value in response.cookies.items():
if key.startswith('download_warning'):
return value
return None
def save_response_content(response, destination):
CHUNK_SIZE = 32768
with open(destination, "wb") as f:
for chunk in response.iter_content(CHUNK_SIZE):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
URL = "https://docs.google.com/uc?export=download"
session = requests.Session()
response = session.get(URL, params = { 'id' : id }, stream = True)
token = get_confirm_token(response)
if token:
params = { 'id' : id, 'confirm' : token }
response = session.get(URL, params = params, stream = True)
save_response_content(response, destination)
if __name__ == "__main__":
import sys
if len(sys.argv) is not 3:
print("Usage: python google_drive.py drive_file_id destination_file_path")
else:
# TAKE ID FROM SHAREABLE LINK
file_id = sys.argv[1]
# DESTINATION FILE ON YOUR DISK
destination = sys.argv[2]
download_file_from_google_drive(file_id, destination)
2019 년 9 월
pip install gdown
- gdown https://drive.google.com/uc?id=file_id
는 file_id
0Bz8a_Dbh9QhbNU3SGlFaDg처럼 보일 것이다
파일을 마우스 오른쪽 버튼으로 클릭 한 다음 공유 가능 링크 가져 오기를 통해 파일을 얻을 수 있습니다 . 열린 액세스 파일에서 테스트되었습니다. 디렉토리에서는 작동하지 않습니다. Google Colab에서 테스트되었습니다.
예 : 이 디렉토리 에서 readme 파일을 다운로드하려면
gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk
오픈 소스 Linux / Unix 명령 행 도구를 사용할 수 있습니다 gdrive
.
설치하려면 :
바이너리를 다운로드 하십시오. 예를 들어 아키텍처에 맞는 것을 선택하십시오
gdrive-linux-x64
.경로에 복사하십시오.
sudo cp gdrive-linux-x64 /usr/local/bin/gdrive; sudo chmod a+x /usr/local/bin/gdrive;
그것을 사용하려면 :
Google 드라이브 파일 ID를 결정하십시오. 이를 위해 Google 드라이브 웹 사이트에서 원하는 파일을 마우스 오른쪽 버튼으로 클릭하고 "링크 가져 오기 ..."를 선택하십시오. 다음과 같은 것을 반환합니다
https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. 뒤에있는?id=
줄을 찾아 클립 보드에 복사하십시오. 이것이 파일의 ID입니다.파일을 다운로드하십시오. 물론 다음 명령에서 파일 ID를 대신 사용하십시오.
gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
처음 사용시이 도구는 Google Drive API에 대한 액세스 권한을 얻어야합니다. 이를 위해 브라우저에서 방문 해야하는 링크가 표시되고 도구에 복사하여 붙여 넣을 수있는 확인 코드가 표시됩니다. 그런 다음 다운로드가 자동으로 시작됩니다. 진행률 표시기는 없지만 파일 관리자 나 두 번째 터미널에서 진행률을 관찰 할 수 있습니다.
추가 트릭 : 속도 제한. gdrive
제한된 최대 속도로 다운로드하려면 (네트워크 pv
를 휩쓸 지 않기 위해 ...) 다음과 같은 명령을 사용할 수 있습니다 ( PipeViewer입니다 ).
gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
pv -br -L 90k | \
cat > file.ext
다운로드 한 데이터 양 ( -b
)과 다운로드 속도 ( ) 가 표시 -r
되고이 속도는 90 kiB / s ( -L 90k
)로 제한됩니다.
ggID='put_googleID_here'
ggURL='https://drive.google.com/uc?export=download'
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | sed 's/.*">//;s/<.a> .*//')"
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"
어떻게 작동합니까?
curl로 쿠키 파일 및 HTML 코드를 가져옵니다.
grep과 sed로 html을 파이프하고 파일 이름을 검색하십시오.
쿠키 파일에서 awk로 코드를 확인하십시오.
마지막으로 쿠키가 활성화 된 파일을 다운로드하고 코드와 파일 이름을 확인하십시오.
curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"
파일 이름이 필요하지 않으면 변수 curl이 추측 할 수 있습니다.
-L 경로 재 지정을 따르십시오.
-O 원격 이름
-J 원격 헤더 이름
curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}"
URL에서 Google 파일 ID를 추출하려면 다음을 사용할 수 있습니다.
echo "gURL" | egrep -o '(\w|-){26,}'
# match more than 26 word characters
또는
echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'
# replace non-word characters with new line,
# print only line with more than 26 word characters
2018 년 3 월 기준으로 업데이트하십시오.
다른 답변에서 제공된 다양한 기술을 사용하여 파일 (6GB)을 Google 드라이브에서 AWS ec2 인스턴스로 직접 다운로드했지만 그중 아무것도 작동하지 않습니다 (오래되었을 수 있습니다).
그래서 다른 사람들의 정보를 위해, 내가 성공적으로 한 방법은 다음과 같습니다.
- 다운로드하려는 파일을 마우스 오른쪽 버튼으로 클릭하고 공유를 클릭 한 후 링크 공유 섹션에서 "이 링크가있는 모든 사용자가 편집 할 수 있음"을 선택하십시오.
- 링크를 복사하십시오. 이 형식이어야합니다.
https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
- 링크에서 FILEIDENTIFIER 부분을 복사하십시오.
아래 스크립트를 파일로 복사하십시오. curl을 사용하고 쿠키를 처리하여 파일 다운로드를 자동화합니다.
#!/bin/bash fileid="FILEIDENTIFIER" filename="FILENAME" curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}
위에 표시된대로 FILEIDENTIFIER를 스크립트에 붙여 넣습니다. 큰 따옴표를 유지하십시오!
- FILENAME 대신 파일 이름을 제공하십시오. 큰 따옴표를 유지하고 FILENAME에 확장자 (예 :)를 포함해야합니다
myfile.zip
. - 이제 터미널에서이 명령을 실행하여 파일을 저장하고 파일을 실행 가능하게 만드십시오
sudo chmod +x download-gdrive.sh
. - `./download-gdrive.sh '를 사용하여 스크립트를 실행하십시오.
추신 : 위의 스크립트에 대한 Github 요점은 다음과 같습니다. https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424
Google 드라이브의 기본 동작은 파일이 크면 파일을 검사하여 바이러스를 검사하는 것입니다. 파일이 크면 사용자에게 메시지를 표시하고 파일을 검색 할 수 없음을 알립니다.
현재 내가 찾은 유일한 해결 방법은 파일을 웹과 공유하고 웹 리소스를 만드는 것입니다.
Google 드라이브 도움말 페이지에서 인용하십시오.
Drive를 사용하면 HTML, CSS 및 Javascript 파일과 같은 웹 리소스를 웹 사이트로 볼 수 있습니다.
드라이브로 웹 페이지를 호스팅하려면 다음 단계를 따르세요.
- drive.google.com에서 드라이브를 열고 파일을 선택하십시오.
- 페이지 상단의 공유 버튼을 클릭 하십시오.
- 공유 상자의 오른쪽 하단에서 고급 을 클릭하십시오 .
- 변경 ...을 클릭 하십시오.
- 웹에서 공개를 선택 하고 저장을 클릭 하십시오 .
- 공유 상자를 닫기 전에 "공유 링크"아래 필드의 URL에서 문서 ID를 복사하십시오. 문서 ID는 URL에서 슬래시 사이의 대문자와 소문자 및 숫자의 문자열입니다.
- "www.googledrive.com/host/[doc id]와 같은 URL을 공유합니다. 여기서 [doc id]는 6 단계에서 복사 한 문서 ID로 대체됩니다
. 이제 누구나 웹 페이지를 볼 수 있습니다.
여기 찾았 https://support.google.com/drive/answer/2881970?hl=en
예를 들어 Google 드라이브에서 파일을 공개적으로 공유하면 공유 링크는 다음과 같습니다.
https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing
그런 다음 파일 ID를 복사하고 다음과 같은 googledrive.com 링크를 만듭니다.
https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U
이 작업을 수행하는 빠른 방법이 있습니다.
링크가 공유되어 있는지 확인하십시오.
https://drive.google.com/open?id=FILEID&authuser=0
그런 다음 해당 FILEID를 복사하여 다음과 같이 사용하십시오.
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
쉬운 방법 :
(일회성 다운로드에 필요한 경우)
- 다운로드 링크가있는 Google 드라이브 웹 페이지로 이동
- 브라우저 콘솔을 열고 "네트워크"탭으로 이동하십시오
- 다운로드 링크를 클릭하십시오
- 파일 다운로드가 시작될 때까지 기다렸다가 해당 요청 (목록에서 마지막 요청이어야 함)을 찾은 다음 다운로드를 취소 할 수 있습니다.
- 요청을 마우스 오른쪽 버튼으로 클릭하고 "cURL로 복사"(또는 유사)를 클릭하십시오.
다음과 같은 결과가 발생합니다.
curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed
콘솔에 붙여 > my-file-name.extension
넣고 끝에 추가 하십시오 (그렇지 않으면 콘솔에 파일을 씁니다).
Roshan Sethia의 답변을 바탕으로
2018 년 5 월
WGET 사용 :
아래와 같이 wgetgdrive.sh라는 쉘 스크립트를 작성하십시오.
#!/bin/bash # Get files from Google Drive # $1 = file ID # $2 = file name URL="https://docs.google.com/uc?export=download&id=$1" 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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
스크립트를 실행할 수있는 올바른 권한을 부여하십시오
터미널에서 다음을 실행하십시오.
./wgetgdrive.sh <file ID> <filename>
예를 들면 다음과 같습니다.
./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
-업데이트-
파일을 다운로드하려면 먼저 youtube-dl
여기에서 파이썬을 얻으 십시오.
youtube-dl : https://rg3.github.io/youtube-dl/download.html
또는 다음과 pip
같이 설치하십시오 .
sudo python2.7 -m pip install --upgrade youtube_dl
# or
# sudo python3.6 -m pip install --upgrade youtube_dl
최신 정보:
방금 이것을 발견했습니다.
drive.google.com에서 다운로드하려는 파일을 마우스 오른쪽 버튼으로 클릭하십시오.
딸깍 하는 소리
Get Sharable link
켜기
Link sharing on
클릭
Sharing settings
옵션을 보려면 상단 드롭 다운을 클릭하십시오
더 클릭
고르다
[x] On - Anyone with a link
링크 복사
https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing
(This is not a real file address)
다음에 ID를 복사하십시오 https://drive.google.com/file/d/
.
3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
이것을 명령 줄에 붙여 넣으십시오.
youtube-dl https://drive.google.com/open?id=
ID를 뒤에 붙여 넣기 open?id=
youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at 2321.53MiB/s (00:01)
그것이 도움이되기를 바랍니다.
2016 년 12 월 현재 나에게 맞는 것이 무엇인지 제안하는 답변이 없습니다 ( 출처 ).
curl -L https://drive.google.com/uc?id={FileID}
Google 드라이브 파일이 링크가있는 파일과 공유되었으며 공유 URL에서 {FileID}
뒤에있는 문자열 인 경우 ?id=
.
큰 파일을 확인하지는 않았지만 알아두면 도움이 될 것입니다.
Google 드라이브와 동일한 문제가있었습니다.
Links 2를 사용하여 문제를 해결하는 방법은 다음과 같습니다 .
PC에서 브라우저를 열고 Google 드라이브에서 파일로 이동합니다. 파일에 공개 링크를 제공하십시오.
공개 링크를 클립 보드에 복사하십시오 (예 : 마우스 오른쪽 단추 클릭, 링크 주소 복사)
터미널을 엽니 다. 다른 PC / 서버 / 컴퓨터로 다운로드하는 경우이 시점에서 SSH로 연결해야합니다
링크 2 설치 (데비안 / 우분투 방식, 배포판 또는 OS와 동등한 기능 사용)
sudo apt-get install links2
링크를 터미널에 붙여 넣고 다음과 같이 링크로 엽니 다.
links2 "paste url here"
화살표 키를 사용하여 링크 내에서 다운로드 링크로 이동 한 후 Enter
파일 이름을 선택하면 파일이 다운로드됩니다
youtube-dl을 사용하십시오 !
youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890
--get-url
직접 다운로드 URL을 얻기 위해 전달할 수도 있습니다 .
Go : drive로 작성된 오픈 소스 다중 플랫폼 클라이언트가 있습니다 . 꽤 훌륭하고 모든 기능을 갖추고 있으며 적극적으로 개발 중입니다.
$ drive help pull
Name
pull - pulls remote changes from Google Drive
Description
Downloads content from the remote drive or modifies
local content to match that on your Google Drive
Note: You can skip checksum verification by passing in flag `-ignore-checksum`
* For usage flags: `drive pull -h`
가장 쉬운 방법은 다음과 같습니다.
- 다운로드 링크 생성 및 fileID 복사
- WGET으로 다운로드 :
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
다음은 Google 드라이브에서 Google Cloud Linux 셸로 파일을 다운로드하는 방법입니다.
- 파일을 PUBLIC에 공유하고 고급 공유를 사용하여 편집 권한으로 공유하십시오.
- ID가있는 공유 링크가 제공됩니다. 링크 참조 :-drive.google.com/file/d/[ID]/view?usp=sharing
- 해당 ID를 복사하여 다음 링크에 붙여 넣습니다.
googledrive.com/host/[ID]
- 위의 링크는 다운로드 링크입니다.
- wget을 사용하여 파일을 다운로드하십시오.
wget https://googledrive.com/host/[ID]
- 이 명령은 wget 명령을 실행 한 동일한 위치에 확장자가없고 파일 크기가 동일한 [ID]라는 파일 이름을 다운로드합니다.
- 실제로 연습에서 압축 폴더를 다운로드했습니다. 그래서 다음을 사용하여 그 어색한 파일의 이름을 바꿨습니다.
mv [ID] 1.zip
- 그런 다음
압축 해제 1.zip
우리는 파일을 얻을 것입니다.
Nanoix의 펄 스크립트를 사용할 수 없었거나 내가 본 다른 컬 예제를 얻을 수 없었기 때문에 파이썬에서 직접 API를 살펴보기 시작했습니다. 이것은 작은 파일에는 효과가 있었지만 큰 파일은 사용 가능한 램을 초과하여 API의 부분 다운로드 기능을 사용하는 다른 멋진 청킹 코드를 발견했습니다. 여기 요점 : https://gist.github.com/csik/c4c90987224150e4a0b2
client_secret json 파일을 API 인터페이스에서 로컬 디렉토리로 다운로드하는 것에 대한 정보를 참고하십시오.
출처$ cat gdrive_dl.py
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
"""API calls to download a very large google drive file. The drive API only allows downloading to ram
(unlike, say, the Requests library's streaming option) so the files has to be partially downloaded
and chunked. Authentication requires a google api key, and a local download of client_secrets.json
Thanks to Radek for the key functions: http://stackoverflow.com/questions/27617258/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python
"""
def partial(total_byte_len, part_size_limit):
s = []
for p in range(0, total_byte_len, part_size_limit):
last = min(total_byte_len - 1, p + part_size_limit - 1)
s.append([p, last])
return s
def GD_download_file(service, file_id):
drive_file = service.files().get(fileId=file_id).execute()
download_url = drive_file.get('downloadUrl')
total_size = int(drive_file.get('fileSize'))
s = partial(total_size, 100000000) # I'm downloading BIG files, so 100M chunk size is fine for me
title = drive_file.get('title')
originalFilename = drive_file.get('originalFilename')
filename = './' + originalFilename
if download_url:
with open(filename, 'wb') as file:
print "Bytes downloaded: "
for bytes in s:
headers = {"Range" : 'bytes=%s-%s' % (bytes[0], bytes[1])}
resp, content = service._http.request(download_url, headers=headers)
if resp.status == 206 :
file.write(content)
file.flush()
else:
print 'An error occurred: %s' % resp
return None
print str(bytes[1])+"..."
return title, filename
else:
return None
gauth = GoogleAuth()
gauth.CommandLineAuth() #requires cut and paste from a browser
FILE_ID = 'SOMEID' #FileID is the simple file hash, like 0B1NzlxZ5RpdKS0NOS0x0Ym9kR0U
drive = GoogleDrive(gauth)
service = gauth.service
#file = drive.CreateFile({'id':FILE_ID}) # Use this to get file metadata
GD_download_file(service, FILE_ID)
여기 내가 오늘 일한 작은 bash 스크립트가 있습니다. 큰 파일에서 작동하며 부분적으로 가져온 파일도 다시 시작할 수 있습니다. 두 개의 인수가 필요합니다. 첫 번째는 file_id이고 두 번째는 출력 파일의 이름입니다. 이전 답변에 비해 주요 개선 사항은 큰 파일에서 작동하며 일반적으로 사용 가능한 도구 (bash, curl, tr, grep, du, cut 및 mv) 만 필요하다는 것입니다.
#!/usr/bin/env bash
fileid="$1"
destination="$2"
# try to download the file
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`
# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
sigSize=${#bigFileSig}
if (( probeSize <= sigSize )); then
virusMessage=false
else
firstBytes=$(head -c $sigSize /tmp/probe.bin)
if [ "$firstBytes" = "$bigFileSig" ]; then
virusMessage=true
else
virusMessage=false
fi
fi
if [ "$virusMessage" = true ] ; then
confirm=$(tr ';' '\n' </tmp/probe.bin | grep confirm)
confirm=${confirm:8:4}
curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
mv /tmp/probe.bin "$destination"
fi
이것은 2017 년 11 월 기준으로 작동합니다 https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db
#!/bin/bash
SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
echo "Must specify a source url"
exit 1
fi
DEST="$2"
if [ "${DEST}" == "" ]; then
echo "Must specify a destination filename"
exit 1
fi
FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)
CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')
# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)
wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST
rm -f $COOKIES
다음과 함께 wget을 사용해야합니다.
https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download
PD. 파일은 공개되어야합니다.
이 쓰레기를 엉망으로 만든 후. 크롬 개발자 도구를 사용하여 달콤한 파일을 다운로드하는 방법을 찾았습니다.
- Google 문서 탭에서 Ctr + Shift + J (설정-> 개발자 도구)
- 네트워크 탭으로 전환
- docs 파일에서 "Download"-> CSV, xlsx, ...로 다운로드를 클릭하십시오.
마우스 오른쪽 버튼으로 클릭-> 복사-> 컬로 복사
- Curl 명령은 다음과 같으며 추가
-o
하여 내 보낸 파일을 만듭니다.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
해결되었습니다!
이 작업에 대한 해결책을 찾았습니다 ... 간단히 다음을 사용하십시오.
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=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt
2018 년 5 월
안녕하세요이 의견에 따라 ... 내가 파일에서 URL의 목록을 내보낼 떠들썩한 만들 URLS.txt A를 URLS_DECODED.txt Flashget의 같은 일부 가속기에 사용을 (내가 윈도우 및 리눅스를 결합하는 Cygwin에서 사용하십시오)
다운로드를 피하고 최종 링크를 얻기 위해 명령 스파이더가 도입되었습니다 (직접)
GREP HEAD 및 CUT 명령, 최종 링크 처리 및 처리, 스페인어 기반, 아마도 영어로 포트 가능
echo -e "$URL_TO_DOWNLOAD\r"
아마도 \ r은 cywin 일 뿐이며 \ n (break line)으로 대체되어야합니다.
**********user***********
사용자 폴더입니다
*******Localización***********
스페인어로, 별표를 지우고 영어로 단어를 보자. HEAD와 CUT 번호를 접근 방식에 맞게 조정하십시오.
rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do
string=$p
hash="${string#*id=}"
hash="${hash%&*}"
hash="${hash#*file/d/}"
hash="${hash%/*}"
let COUNTER=COUNTER+1
echo "Enlace "$COUNTER" id="$hash
URL_TO_DOWNLOAD=$(wget --spider --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='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
rm -rf /tmp/cookies.txt
echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt
더 쉬운 방법이 있습니다.
firefox / chrome 확장 프로그램에서 cliget / CURLWGET을 설치하십시오.
브라우저에서 파일을 다운로드하십시오. 이렇게하면 파일을 다운로드하는 동안 사용 된 쿠키와 헤더를 기억하는 curl / wget 링크가 생성됩니다. 모든 쉘에서이 명령을 사용하여 다운로드
skicka 는 Google 드라이브에서 액세스 파일을 업로드하고 다운로드하는 cli 도구입니다.
예 -
skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 %
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used
2018 년 5 월
curl
Google 드라이브에서 파일을 다운로드하는 데 사용 하려면 드라이브의 파일 ID 외에도 access_token
Google Drive API 용 OAuth2가 필요합니다 . 토큰을 얻는 데는 Google API 프레임 워크와 관련된 여러 단계가 포함됩니다. Google의 가입 단계는 현재 무료입니다.
OAuth2 access_token은 잠재적으로 모든 종류의 활동을 허용하므로주의하십시오. 또한 토큰은 잠시 (1 시간?) 후에 시간 초과되지만 누군가가이를 악용 할 경우 남용을 방지 할만큼 짧지는 않습니다.
access_token과 fileid가 있으면 다음과 같이 작동합니다.
AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext
참조 : Google 드라이브 API-REST-파일 다운로드
공유 가능한 링크를 가져와 시크릿 (매우 중요)으로 엽니 다. 스캔 할 수 없다는 메시지가 나타납니다.
인스펙터를 열고 네트워크 트래픽을 추적하십시오. "어쨌든 다운로드"버튼을 클릭하십시오.
마지막 요청의 URL을 복사하십시오. 이것은 당신의 링크입니다. wget에서 사용하십시오.
파이썬 스크립트와 Google 드라이브 API를 사용 하여이 작업을 수행했습니다.이 스 니펫을 사용해보십시오.
//using chunk download
file_id = 'someid'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
구글 드라이브에서 파일을 다운하는 쉬운 방법 당신은 또한 colab에 파일을 다운로드 할 수 있습니다
pip install gdown
import gdown
그때
url = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c'
output = 'spam.txt'
gdown.download(url, output, quiet=False)
또는
fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'
gdown https://drive.google.com/uc?id=+fileid
문서 https://pypi.org/project/gdown/
참고 URL : https://stackoverflow.com/questions/25010369/wget-curl-large-file-from-google-drive
'Programing' 카테고리의 다른 글
커서를 사용하지 않고 TSQL에서 테이블 변수를 반복하는 방법이 있습니까? (0) | 2020.04.16 |
---|---|
글 리포 콘을 더 크게 만드는 방법은 무엇입니까? (0) | 2020.04.16 |
두 날짜 사이의 일 수를 계산하는 방법 (0) | 2020.04.16 |
SQL 키, MUL vs PRI vs UNI (0) | 2020.04.16 |
“잠금 대기 시간 초과를 초과했습니다. (0) | 2020.04.16 |