wget / कर्ल बड़ी फाइल गूगल ड्राइव से


304

मैं एक स्क्रिप्ट में Google ड्राइव से एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं, और मुझे ऐसा करने में थोड़ी परेशानी हो रही है। मैं जिन फ़ाइलों को डाउनलोड करने की कोशिश कर रहा हूँ वे यहाँ हैं

मैंने बड़े पैमाने पर ऑनलाइन देखा है और मैं आखिरकार उनमें से एक को डाउनलोड करने में कामयाब रहा। मुझे फ़ाइलों का यूआईडी मिला है और छोटा वाला (1.6 एमबी) डाउनलोड ठीक है, हालांकि बड़ी फ़ाइल (3.7 जीबी) हमेशा एक पृष्ठ पर रीडायरेक्ट करती है जो मुझसे पूछती है कि क्या मैं वायरस स्कैन के बिना डाउनलोड के साथ आगे बढ़ना चाहता हूं। कोई मेरी मदद कर सकता है कि स्क्रीन पिछले?

यहां बताया गया है कि मुझे पहली फ़ाइल कैसे मिली -

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

मुझे निम्नलिखित आउटपुट मिलता है - यहां छवि विवरण दर्ज करें

मैं कड़ी में तीसरी-से-अंतिम पंक्ति पर ध्यान देता हूं, &confirm=JwkKजो एक यादृच्छिक 4 वर्ण स्ट्रिंग है लेकिन सुझाव देता है कि मेरे URL में पुष्टि जोड़ने का एक तरीका है। मेरे द्वारा देखे गए लिंक में से एक ने सुझाव दिया था &confirm=no_antivirusलेकिन वह काम नहीं कर रहा है।

मुझे आशा है कि यहाँ कोई इस के साथ मदद कर सकता है!


क्या आप curl scriptइस फ़ाइल को डाउनलोड करने के लिए इस्तेमाल की गई जानकारी प्रदान कर सकते हैं , google driveक्योंकि मैं इस स्क्रिप्ट से एक काम करने वाली फ़ाइल (छवि) डाउनलोड करने में असमर्थ हूँcurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
कसुन सियामबलपिटिया

स्वीकृत उत्तर को देखें। मैं gdown.pl स्क्रिप्ट का इस्तेमाल कियाgdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
अर्जुन

2
स्क्रॉल करने से डरो मत! यह उत्तर एक बार में डाउनलोड करने के लिए एक बहुत अच्छा अजगर स्क्रिप्ट प्रदान करता है।
सिप्रियन टोमोयागू

./gdrive डाउनलोड [FILEID] [--recursive यदि इसका एक फोल्डर] यह आपको दिए गए url तक पहुँचने और टोकन कोड को कॉपी करने के लिए कहेगा।
रोज़ 4

जवाबों:


60

चेतावनी : इस कार्यक्षमता को हटा दिया गया है। नीचे टिप्पणी में चेतावनी देखें।


इस प्रश्न पर एक नज़र डालें: Google डिस्क से Google ड्राइव API का उपयोग करके डायरेक्ट डाउनलोड करें

मूल रूप से आपको एक सार्वजनिक निर्देशिका बनानी होगी और अपनी फ़ाइलों को किसी संदर्भ के साथ संबंधित संदर्भ में एक्सेस करना होगा

wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz

वैकल्पिक रूप से, आप इस स्क्रिप्ट का उपयोग कर सकते हैं: https://github.com/circulosmeos/gdown.pl


5
एक और अच्छा तरीका यह है कि लिनक्स कमांड लाइन टूल "gdrive" github.com/prasmussen/gdrive
Tobi

1
मैं Google ड्राइव permalink पर gdurl.com --Thanks के साथ संयोजन में Nanolx की पर्ल स्क्रिप्ट का उपयोग करने में सक्षम था !
जद्दिक

14
चेतावनी: Google डिस्क में वेब होस्टिंग समर्थन को हटा दिया गया है। "31 अगस्त, 2015 से, उपयोगकर्ताओं और डेवलपर्स के लिए Google ड्राइव में वेब होस्टिंग को हटा दिया जाएगा। Google Apps के ग्राहक इस सुविधा का उपयोग 31 अगस्त, 2016 तक एक वर्ष की अवधि के लिए जारी रख सकते हैं, जब googledrive.com/host के माध्यम से सामग्री परोसी जा रही है। / doc id बंद कर दी जाएगी। ” googleappsupdates.blogspot.com/2015/08/...
Chrish

9
दुर्भाग्य से यह 2018 तक किसी भी काम नहीं करता है।
कैलिमो

2
gdown.pl ने मेरे लिए भी बहुत काम किया। स्क्रिप्ट पर एक त्वरित नज़र यह दिखाती है कि यह उस एपीआई का उपयोग नहीं कर रहा है, यह एक पैरामीटर के साथ एक नया URL बनाता है, export=downloadइसलिए यह भविष्य के भविष्य के लिए अच्छा होना चाहिए, जब तक कि Google उस URL योजना को बदल न दे
बेन बैरन

228

जून 2020

file_id0Bz8a_Dbh9QhbNU3SGlFaDg कुछ ऐसा दिखाई देगा

आप इसे फ़ाइल पर राइट क्लिक करके प्राप्त कर सकते हैं और फिर साझा करने योग्य लिंक प्राप्त कर सकते हैं। केवल ओपन एक्सेस फाइलों पर काम करें (जिसके पास भी लिंक हो वह देख सकता है)। निर्देशिकाओं के लिए काम नहीं करता है। Google Colab पर परीक्षण किया गया। फ़ाइल डाउनलोड पर सबसे अच्छा काम करता है। इसे सिंगल फाइल बनाने के लिए टार / जिप का इस्तेमाल करें।

उदाहरण: इस निर्देशिका से रीडमी फ़ाइल डाउनलोड करने के लिए

gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk

9
बस को दूर export=download&से gdown https://drive.google.com/uc?export=download&id=your_file_idऔर यह आकर्षण की तरह काम करता
Saravanabalagi रामचंद्रन

8
यह एक जुलाई 2018 में काम किया! फ़ाइल साझा करने के लिए याद रखें और यदि आप के रूप में लिंक है drive.google.com/open?id=FILE_ID बस के साथ "यूसी" और बस gdown की जगह "खुला" drive.google.com/uc?id=FILE_ID
simo23

7
हम Gdd का उपयोग करके Gdown से एक फ़ोल्डर कैसे डाउनलोड कर सकते हैं?
user1

7
अगस्त 2019 तक काम नहीं करता। त्रुटि: "अनुमति से इनकार किया गया: drive.google.com/uc?id=0B7EVK8r0v71pWEZsZE9oNnFzTm8 शायद आपको किसी भी लिंक पर 'किसी के साथ भी अनुमति बदलने की आवश्यकता है?" और यह सार्वजनिक रूप से डाउनलोड करने योग्य CelebA डेटासेट है, इसलिए यह ठीक होना चाहिए। मैंने 'लिंक साझा करने योग्य लिंक' पर क्लिक करके डाउनलोड लिंक प्राप्त कर लिया है, फिर कहा कि 'लिंक साझा करना' और 'लिंक वाला कोई भी व्यक्ति देख सकता है'। तो ऐसा लगता है कि अनुमति पहले से ही दी गई है, फिर भी त्रुटि कहती है कि अनुमति अस्वीकृत है। यहाँ होस्ट साइट है अगर आप इसे आज़माना चाहते हैं: mmlab.ie.cuhk.edu.hk/projects/CelebA.html
क्रिस्टोफ़

6
यह आधा दर्जन में से एकमात्र समाधान है जो मैंने कोशिश की थी कि काम करता है। इसे पहले तक उकेरने की जरूरत है। मुझे केवल 'साझा लिंक' को बदलने की आवश्यकता है: drive.google.com/open?id=XXXX से drive.google.com/uc?id=XXXX पर
21

194

मैंने एक पायथन स्निपेट लिखा है जो एक साझा लिंक दिया गया है, जो Google ड्राइव की एक फ़ाइल डाउनलोड करता है । यह अगस्त 2017 तक काम करता है ।

स्निप्ड न तो gdrive का उपयोग करता है , न ही Google डिस्क API का। यह अनुरोध मॉड्यूल का उपयोग करता है ।

Google ड्राइव से बड़ी फ़ाइलों को डाउनलोड करते समय, एक भी GET अनुरोध पर्याप्त नहीं है। एक दूसरे की जरूरत है, और इस एक के पास पुष्टि के लिए एक अतिरिक्त 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)

मैं स्निपेट चला रहा हूं python snippet.py file_id destination। क्या इसे चलाने का सही तरीका है? यदि गंतव्य एक फ़ोल्डर है तो मुझे एक त्रुटि दी गई है। अगर मुझे कोई फ़ाइल कठिन लगती है और मैं इसका उपयोग करता हूं कि गंतव्य के रूप में स्निपेट ठीक काम करता है, लेकिन तब कुछ नहीं करता है।
मैनफ्रेडो

2
@ मैनफ्रेडो आपको फ़ाइल नाम की आवश्यकता है जो आप फ़ाइल को सहेजना चाहते हैं, उदाहरण के लिए, $ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx मेरे लिए काम किया। अगर वह काम नहीं करता है, तो क्या आपके पास कोई आउट पुट है? क्या कोई फ़ाइल बनाई जाती है?
जेफ

1
@CiprianTomoiaga में टीकम पायथन मॉड्यूल का उपयोग करते हुए 90% प्रगति पट्टी काम कर रही है। मैंने एक जिस्ट बनाया: gist.github.com/joshtch/8e51c6d40b1e3205d1bb2eea18fb57ae । दुर्भाग्य से मुझे कुल फ़ाइल आकार प्राप्त करने का एक विश्वसनीय तरीका नहीं मिला है, जिसे आपको% प्रगति और अनुमानित पूर्ण समय की गणना करने की आवश्यकता होगी।
2

इसके अलावा, Google ड्राइव तक पहुंचने के लिए अनुरोध मॉड्यूल किस तरह के प्रमाणीकरण का उपयोग करता है? OAuth? उदाहरण के लिए, आपके उपरोक्त कोड में यह कहां संभाला गया है - अनुरोध-oauthlib.readthedocs.io/en/latest/… ?
tauseef_CuriousGuy

7
यह कमाल का है! यहां drive_File_ID: https // drive.google.com / file / d / "drive_File_ID" / दृश्य - https ~~ फ़ाइल / d / और / डाउनलोड लिंक के दृश्य के बीच एक टिप दिया गया है।
Jaeyoung ली

70

आप ओपन सोर्स लिनक्स / यूनिक्स कमांड लाइन टूल का उपयोग कर सकते हैं gdrive

इसे स्थापित करने के लिए:

  1. बाइनरी डाउनलोड करें। उदाहरण के लिए, अपनी वास्तुकला के अनुकूल एक को चुनेंgdrive-linux-x64

  2. इसे अपने पथ पर कॉपी करें।

    sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    sudo chmod a+x /usr/local/bin/gdrive;
    

इसके प्रयेाग के लिए:

  1. Google डिस्क फ़ाइल आईडी का निर्धारण करें। उसके लिए, Google ड्राइव वेबसाइट में वांछित फ़ाइल पर राइट-क्लिक करें और "गेट लिंक ..." चुनें। यह कुछ इस तरह लौटेगा https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H। पीछे स्ट्रिंग प्राप्त करें ?id=और इसे अपने क्लिपबोर्ड पर कॉपी करें। वह फाइल की आईडी है।

  2. फ़ाइल डाउनलोड करें। बेशक, निम्न कमांड के बजाय अपनी फ़ाइल की आईडी का उपयोग करें।

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

पहले उपयोग में, टूल को Google डिस्क एपीआई तक पहुंच की अनुमति प्राप्त करनी होगी। उसके लिए, यह आपको एक लिंक दिखाएगा जिसे आपको एक ब्राउज़र में देखना है, और फिर आपको टूल पर वापस कॉपी और पेस्ट करने के लिए एक सत्यापन कोड मिलेगा। फिर डाउनलोड स्वचालित रूप से शुरू होता है। कोई प्रगति संकेतक नहीं है, लेकिन आप फ़ाइल प्रबंधक या दूसरे टर्मिनल में प्रगति का निरीक्षण कर सकते हैं।

स्रोत: टोबी द्वारा एक टिप्पणी यहाँ एक और उत्तर पर।

 

अतिरिक्त चाल: दर सीमित। साथ डाउनलोड करने के लिए gdriveएक सीमित अधिकतम दर से (करने के लिए नेटवर्क नहीं दलदल ...), तो आप इस तरह एक आदेश का उपयोग कर सकते हैं ( pvहै PipeViewer ):

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext

यह डाउनलोड किए गए डेटा की राशि ( -b) और डाउनलोड की दर ( -r) को दर्शाएगा और उस दर को 90 kiB / s ( -L 90k) तक सीमित कर देगा ।


403: त्रुटि संदेश: "। अनधिकृत उपयोग के लिए दैनिक सीमा को पार निरंतर उपयोग साइनअप की आवश्यकता है।", कोड
Nianliang

@Nianliang ने अभी तक इसका अनुभव नहीं किया है, लेकिन यहां एक अनुमान है: आपने सार्वजनिक रूप से सुलभ फ़ाइल डाउनलोड करने के लिए gdrive का उपयोग किया है, इसलिए यह आपसे पहले उपयोग के लिए प्रमाणीकरण के लिए नहीं कहेगा। पहले एक गैर-सार्वजनिक फ़ाइल आज़माएं, सुनिश्चित करें कि प्रमाणीकरण सफल होता है (जैसा कि उत्तर में वर्णित है: "पहले उपयोग में, ...")। क्या इससे मदद मिली?
तानीस

3
सत्यापन कोड प्राप्त नहीं कर सकते। त्रुटि प्राप्त करें "इस ऐप के लिए Google के साथ अस्थायी रूप से अक्षम करें यह ऐप Google साइन इन का उपयोग करने के लिए Google द्वारा अभी तक सत्यापित नहीं किया गया है।"
यूजरनॉन

1
यहां एक ही त्रुटि संदेश: "Google साइन इन का उपयोग करने के लिए Google द्वारा इस ऐप को अभी तक सत्यापित नहीं किया गया है।"
गेबिसिमो

1
@useranon: इस समाधान का प्रयास करें: github.com/gdrive-org/gdrive/issues/533#issuecomment-596336395 , आपको एक Google सेवा खाता बनाने और फ़ाइल / फ़ोल्डर को इस सेवा खाते के पते पर साझा करने की आवश्यकता है। मैंने यह किया। 04/17/2020 तक काम करता है!
Whyisyoung

52
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}"  

यह कैसे काम करता है?
कुकी फ़ाइल और HTML कोड कर्ल के साथ प्राप्त करें।
पाइप html को grep और sed करें और फ़ाइल नाम के लिए खोजें।
Awk के साथ कुकी फ़ाइल से पुष्टि कोड प्राप्त करें।
कुकी सक्षम, अंत में कोड और फ़ाइल नाम के साथ फाइल डाउनलोड करें।

curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"

अगर आपको फ़ाइल नाम चर कर्ल की आवश्यकता नहीं है, तो आप इसका अनुमान लगा सकते हैं
-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 फ़ाइल आईडी निकालने के लिए आप इसका उपयोग कर सकते हैं:

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 

बहुत अच्छी तरह से किया। 5GB + फ़ाइल पर वायरस की चेतावनी से छुटकारा पा लिया जब अन्य सभी उत्तर विफल हो गए।

1
यह भयानक है। मुझे --insecureइसे बनाने के लिए दोनों कर्ल अनुरोधों के विकल्प को जोड़ना पड़ा।
टेलर आर

@ लिंक करें मैं RESUME कार्यक्षमता कैसे जोड़ूं?
स्टीवन at मेवेसीगावा

क्या हम किसी तरह से Google आईडी से छुटकारा पा सकते हैं यदि हमारे पास फ़ाइल का सार्वजनिक लिंक है?
oarfish

42

मार्च 2018 तक अपडेट करें।

मैंने अपनी फ़ाइल (6 GB) को Google ड्राइव से सीधे अपने AWS ec2 उदाहरण में डाउनलोड करने के लिए अन्य उत्तरों में दी गई विभिन्न तकनीकों की कोशिश की, लेकिन उनमें से कोई भी काम नहीं किया (क्योंकि वे पुराने हैं)।

इसलिए, दूसरों की जानकारी के लिए, मैंने इसे सफलतापूर्वक कैसे किया:

  1. जिस फ़ाइल को आप डाउनलोड करना चाहते हैं, उस पर राइट-क्लिक करें, लिंक साझाकरण अनुभाग के तहत शेयर पर क्लिक करें, "इस लिंक वाला कोई भी व्यक्ति संपादित कर सकता है" चुनें।
  2. लिंक कॉपी करें। यह इस प्रारूप में होना चाहिए:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. लिंक से FILEIDENTIFIER भाग की प्रतिलिपि बनाएँ।
  4. नीचे दी गई स्क्रिप्ट को किसी फ़ाइल में कॉपी करें। यह कर्ल का उपयोग करता है और फ़ाइल को डाउनलोड करने को स्वचालित करने के लिए कुकी को संसाधित करता है।

    #!/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}
    
  5. जैसा कि ऊपर दिखाया गया है, स्क्रिप्ट में FILEIDENTIFIER पेस्ट करें। दोहरा उद्धरण रखने के लिए याद रखें!

  6. FILENAME के ​​स्थान पर फ़ाइल के लिए एक नाम प्रदान करें। डबल कोट्स रखना याद रखें और FILENAME में विस्तार भी शामिल करें (उदाहरण के लिए, myfile.zip)।
  7. अब, फ़ाइल को सहेजें और टर्मिनल में इस कमांड को चलाकर फ़ाइल को निष्पादन योग्य बनाएं sudo chmod +x download-gdrive.sh
  8. स्क्रिप्ट का उपयोग करके चलाएं `./download-gdrive.sh”।

PS: यहाँ ऊपर दी गई लिपि के लिए गितुब गिस्ट है: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424


wget के लिए बदलने के -cसाथ --save-cookiesऔर -bसाथ--load-cookies
untore

3
यह मेरे लिए काम किया पुष्टि की 👍, स्पष्टता के लिए थोड़ा संपादित
जेफ एटवुड

1
जनवरी 2019 में काम करता है। मुझे अंतिम पंक्ति पर "चारों ओर उद्धरण जोड़ने की आवश्यकता है ${filename}
जिम्बो

> का उपयोग कर स्क्रिप्ट चलाएं ./download-gdrive.sh" Do not be like me and try to run the script by typing download-gdrive.sh , the । / `अनिवार्य हो रहा है।
राजदूत राबिया

मई 2019 में काम कर रहे हैं
क्षितिज बजराचार्य

29

यहाँ यह करने का एक त्वरित तरीका है।

सुनिश्चित करें कि लिंक साझा किया गया है, और यह कुछ इस तरह दिखाई देगा:

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

2
हाय, उत्तर के लिए धन्यवाद। यदि आप मेरे द्वारा साझा किए गए लिंक की फाइलों को देखते हैं, तो आप देखेंगे कि फ़ाइलें साझा किए जाने के दौरान, उनके पास लिंक में 'ऑक्टूसर = 0' टैग का अभाव है। आपका तरीका प्रदान की गई फ़ाइलों पर काम नहीं करता है! अर्जुन
अर्जुन

2
सार्वजनिक पहुंच के साथ भी प्रयास नहीं किया, यह लिंक-साझा की गई फ़ाइलों के लिए अच्छी तरह से काम करता है atow। इसे इस तरह से इस्तेमाल करें:wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
सम्पो सरला - codidact.org

2018 तक काम नहीं करता है, मुझे फ़ाइल के बजाय एंटीवायरस स्कैन वेब पेज मिल रहा है।
कालिमा

7
यह 2018 में मेरे लिए एंटीवायरस स्कैनर को दरकिनार कर देता है जब -rध्वज के साथ प्रयोग किया जाता है wget। तो यह हैwget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
आर्टेम पेलिनित्सिन

1
मेरे लिए 10/2019 के रूप में काम किया और मेरे लिए एक सही डॉकटर कंटेनर में एक फ़ाइल प्राप्त करना एक सही समाधान था, जिस पर लगभग कोई उपयोगिता ऐप नहीं चल रहा था।
ammills01

23

Google ड्राइव का डिफ़ॉल्ट व्यवहार वायरस के लिए फ़ाइलों को स्कैन करना है यदि फ़ाइल बड़ी है तो यह उपयोगकर्ता को संकेत देगा और उसे सूचित करेगा कि फ़ाइल को स्कैन नहीं किया जा सकता है।

फिलहाल जो एकमात्र समाधान मुझे मिला वह है वेब के साथ फ़ाइल साझा करना और एक वेब संसाधन बनाना।

Google ड्राइव सहायता पृष्ठ से उद्धरण:

ड्राइव के साथ, आप वेब संसाधन बना सकते हैं - जैसे कि HTML, सीएसएस, और जावास्क्रिप्ट फाइलें - एक वेबसाइट के रूप में देखने योग्य।

ड्राइव के साथ एक वेबपेज होस्ट करने के लिए:

  1. Drive.google.com पर ड्राइव खोलें और एक फ़ाइल चुनें।
  2. पृष्ठ के शीर्ष पर स्थित शेयर बटन पर क्लिक करें ।
  3. साझाकरण बॉक्स के निचले दाएं कोने में उन्नत पर क्लिक करें ।
  4. चेंज पर क्लिक करें …।
  5. वेब पर ऑन - पब्लिक चुनें और सेव पर क्लिक करें
  6. साझाकरण बॉक्स को बंद करने से पहले, "लिंक टू शेयर" के नीचे के क्षेत्र में URL से दस्तावेज़ आईडी को कॉपी करें। दस्तावेज़ आईडी अपरकेस और लोअरकेस अक्षर और URL में स्लैश के बीच संख्याओं की एक स्ट्रिंग है।
  7. वह URL साझा करें जो "www.googledrive.com/host/ Isdoc id] जैसा दिखता है, जहां [doc id] को आपके द्वारा चरण 6 में कॉपी किए गए दस्तावेज़ ID द्वारा प्रतिस्थापित किया जाता है
    । अब कोई भी आपका वेबपृष्ठ देख सकता है।

यहां मिला: https://support.google.com/drive/answer/2881970?hl=en

इसलिए उदाहरण के लिए, जब आप Google ड्राइव पर कोई फ़ाइल सार्वजनिक रूप से साझा करते हैं तो शेयरलिंक इस तरह दिखता है:

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing

तब आप फ़ाइल आईडी की प्रतिलिपि बनाते हैं और एक googledrive.com लिंक बनाते हैं जो इस तरह दिखता है:

https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U

1
@ FıratK FK क्या आप सुनिश्चित हैं कि आपके पास सही यूआरएल प्रारूप है? (नोट www.googledrive.com और नहीं drive.google.com) मैंने अभी-अभी कोशिश की और यह काम कर गया।
चार्ल्स फॉरेस्ट

मेरी फ़ाइल 50 एमबी से अधिक है। यह एक वायरस स्कैन पुष्टिकरण पूछता है। इसलिए समाधान मेरे मामले के लिए उपयुक्त नहीं है। इसके बजाय मैंने "gdrive" कंसोल एप्लिकेशन समाधान का उपयोग किया।
फ्रात कृष्ण

@ FıratK FK मैं अभी इस पद्धति से 200+ एमबी की फ़ाइल डाउनलोड करने में कामयाब रहा हूँ जो सामान्य रूप से वायरस की जाँच को ट्रिगर करती है। मुझे राइट क्लिक से ID मिला "> साझा करने योग्य लिंक"।
सिरो सेंटिल्ली 郝海东 i i i 法轮功

1
@Alex http 502 उसके लिए एक googledrive.com/host/0BwPIpgeJ2AdnUGUzVGJuak5abDg
user2284570

11
इस सुविधा को हटा दिया गया है और अब समर्थित नहीं है
डैनियल जी

19

आसान तरीका:

(यदि आपको इसे एकबारगी डाउनलोड करने की आवश्यकता है)

  1. उस Google ड्राइव वेबपृष्ठ पर जाएं, जिसमें डाउनलोड लिंक है
  2. अपना ब्राउज़र कंसोल खोलें और "नेटवर्क" टैब पर जाएं
  3. डाउनलोड लिंक पर क्लिक करें
  4. डाउनलोड शुरू करने के लिए फ़ाइल के लिए प्रतीक्षा करें, और इसी अनुरोध को ढूंढें (सूची में अंतिम एक होना चाहिए), फिर आप डाउनलोड को रद्द कर सकते हैं
  5. अनुरोध पर राइट क्लिक करें और "प्रतिलिपि के रूप में कॉपी करें" (या समान) पर क्लिक करें

आपको कुछ इस तरह से समाप्त करना चाहिए:

curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed

अपने कंसोल में इसे पास्ट करें, > my-file-name.extensionअंत में जोड़ें (अन्यथा यह आपके कंसोल में फ़ाइल लिख देगा), फिर एंटर दबाएं :)


जून 2019 का काम
टेककुज़

फरवरी 2020 तक काम करता है
जीवन

12

रोशन सेठिया के जवाब के आधार पर

मई 2018

WGET का उपयोग करना :

  1. नीचे के रूप में 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
    
  2. स्क्रिप्ट निष्पादित करने के लिए सही अनुमति दें

  3. टर्मिनल में, चलाएं:

    ./wgetgdrive.sh <file ID> <filename>
    

    उदाहरण के लिए:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    

1
यह CHARM chmod 770 wgetgdrive.sh
थैंक्स

8

--UPDATED--

फ़ाइल को पहले डाउनलोड करने के लिए 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

अपडेट करें:

मुझे यह पता चला:

  1. उस फ़ाइल पर राइट क्लिक करें जिसे आप drive.google.com से डाउनलोड करना चाहते हैं

  2. क्लिक करें Get Sharable link

  3. पर टॉगल करें Link sharing on

  4. पर क्लिक करें Sharing settings

  5. विकल्पों के लिए शीर्ष ड्रॉपडाउन पर क्लिक करें

  6. More पर क्लिक करे

  7. चुनते हैं [x] On - Anyone with a link

  8. प्रतिरूप जोड़ना

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)

आईडी की कॉपी करें https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

इसे कमांड लाइन में पेस्ट करें:

youtube-dl https://drive.google.com/open?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)

आशा है ये मदद करेगा


1
हाय धन्यवाद मैंने यह कोशिश की और जब मैं कमांड प्रॉम्प्ट से चला रहा हूं तो यह डाउनलोड कर रहा है, लेकिन क्या सर्वर पर एक्सेस के लिए वास्तविक "डायरेक्ट लिंक" प्राप्त करने का एक तरीका है? मैं इसे नोड {स्पोन} के साथ चलाने की कोशिश कर रहा हूं, लेकिन फिर इसे नोड सर्वर पर डाउनलोड करना होगा, और वहां से इसे फिर से डाउनलोड करना होगा, क्या Google ड्राइव से सीधे डाउनलोड लिंक प्राप्त करने का कोई तरीका है? वे किस लिंक का उपयोग करते हैं?
ब्लूजैके

मुझे अब इस विधि का उपयोग करना होगा इसलिए मैं इसे पूरी तरह से स्वचालित करने का प्रयास करूंगा। बस Google लिंक प्राप्त करें और पायथन स्क्रिप्ट बाकी काम करेगी। मुझे लगता है कि मैं ऐसा करने के लिए सेलेनियम का उपयोग करूँगा। काम होने पर मेरे समाधान को अपडेट करेगा।
16

मेरे उत्तर को अपडेट किया। यह अब यूट्यूब-डीएल के साथ किसी भी फाइल को डाउनलोड करने के लिए 2 क्लिक के रूप में सरल है।
जटुरी

7

उत्तर 2016 के रूप में मेरे लिए क्या काम करता है, इसका कोई जवाब नहीं है ( स्रोत ):

curl -L https://drive.google.com/uc?id={FileID}

बशर्ते Google डिस्क फ़ाइल को लिंक करने वालों के साथ साझा किया गया है और साझा URL में {FileID}पीछे स्ट्रिंग है ?id=

हालाँकि मैंने बड़ी फ़ाइलों के साथ जाँच नहीं की है, मेरा मानना ​​है कि यह जानना उपयोगी हो सकता है।


हम्म् ... मेरे लिए काम नहीं किया :( बस वेब सामग्री डाउनलोड करता है - फ़ाइल नहीं
21

1
curl -L -o {filename} https://drive.google.com/uc?id={FileID}मेरे लिए काम किया, धन्यवाद!
डायरियो

यह मेरे लिए काम नहीं करता है। मेरा लिंक नीचे है (लिंक वाला कोई भी व्यक्ति देख सकता है): drive.google.com/file/d/0B7Jh6M91b83bdFlWX2RIU2hYSWM/… । मैंने कोशिश की: <code> curl -O -J -L drive.google.com/uc?id=0B7Jh6M91b83bdFlWX2RIU2hYSWM</code और मुझे यह परिणाम मिले: CONNECT के बाद प्रॉक्सी से कर्ल (56) प्राप्त HTTP कोड 403
स्टीव

7
केवल 25 एमबी तक की फ़ाइलों के लिए काम करता है, बड़ी फाइलें वायरस स्कैन चेतावनी पृष्ठ देती हैं
सेन

6

सबसे आसान तरीका है:

  1. डाउनलोड लिंक बनाएं और फाइल को कॉपी करें
  2. 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

1
आपको बहुत - बहुत धन्यवाद! अविश्वसनीय रूप से उपयोगी
निकोलस पिपिटोन

6

उपरोक्त उत्तर अप्रैल 2020 के लिए पुराने हैं, क्योंकि Google ड्राइव अब फ़ाइल के वास्तविक स्थान पर पुनर्निर्देशित करता है।

सार्वजनिक दस्तावेजों के लिए macOS 10.15.4 पर अप्रैल 2020 तक कार्य करना:

# this is used for drive directly downloads
function download-google(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}

# some files are shared using an indirect download
function download-google-2(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  code=$(egrep -o "confirm=(.+)&amp;id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
  curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}

# used like this
download-google <id> <name of item.extension>

1
download-google-2मेरे लिये कार्य करता है। मेरी फ़ाइल 3 जी आकार की है। धन्यवाद @ danieltan95
सौरभ कुमार

मैंने इसे download-google-2अंतिम कर्ल अपडेट किया curl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;और यह अब डाउनलोड को फिर से शुरू कर सकता है।
ssi-aik

कम गति पर डाउनलोड के साथ कुछ गलत हो गया लगता है। एक और दृष्टिकोण मुझे मिला। qr.ae/pNrPaJ
-

5

मुझे Google ड्राइव के साथ भी यही समस्या थी।

यहां मैंने लिंक 2 का उपयोग करके समस्या को हल किया है ।

  1. अपने पीसी पर एक ब्राउज़र खोलें, Google ड्राइव में अपनी फ़ाइल पर नेविगेट करें। अपनी फ़ाइल को एक सार्वजनिक लिंक दें।

  2. सार्वजनिक लिंक को अपने क्लिपबोर्ड पर कॉपी करें (जैसे राइट क्लिक, कॉपी लिंक एड्रेस)

  3. एक टर्मिनल खोलें। यदि आप किसी अन्य पीसी / सर्वर / मशीन पर डाउनलोड कर रहे हैं तो आपको इस बिंदु के रूप में एसएसएच करना चाहिए

  4. लिंक 2 स्थापित करें (डेबियन / ubuntu विधि, अपने distro या OS समकक्ष का उपयोग करें)

    sudo apt-get install links2

  5. लिंक को अपने टर्मिनल पर पेस्ट करें और इसे लिंक के साथ खोलें जैसे:

    links2 "paste url here"

  6. अपने एरो कीज़ का उपयोग करके लिंक के भीतर डाउनलोड लिंक पर जाएँ और दबाएँ Enter

  7. फ़ाइल नाम चुनें और यह आपकी फ़ाइल डाउनलोड करेगा


Linksपूरी तरह से किया चाल! और यह बहुत बेहतर हैw3m
अल्वाज

1
यह केवल एक चीज है जो मेरे लिए काम करती है! फरवरी 2019. पहले की टिप्पणियों में gdown ऐप को Google डॉक्स के अलावा और किसी ने होस्ट किया है, इसलिए इसे डाउनलोड करना असंभव है।
स्टीवन

5

उपयोग Youtube-dl का !

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

आप --get-urlडायरेक्ट डाउनलोड URL प्राप्त करने के लिए भी पास हो सकते हैं ।


1
@ और फिर भी यह मेरे लिए काम करता है youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage। हो सकता है कि आपके पास पुराना संस्करण है youtube-dlया लिंक प्रारूप किसी कारण से इसे मान्यता प्राप्त नहीं है ... अपने मूल URL से फ़ाइल आईडी के साथ आईडी को बदलने के लिए ऊपर दिए गए प्रारूप का उपयोग करने का प्रयास करें
aularon

5

मैं @ अमित चाहर के कर्ल स्निपेट का उपयोग कर रहा हूं जिन्होंने इस धागे में एक अच्छा जवाब पोस्ट किया है । मुझे इसे एक अलग .shफ़ाइल के बजाय बैश फ़ंक्शन में रखना उपयोगी लगा

function curl_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
    rm -fr cookie
}

यह उदाहरण के लिए एक में शामिल किया जा सकता है ~/.bashrc(यह सोर्सिंग के बाद अगर यह स्वचालित रूप से sourced नहीं है) और निम्न तरीके से उपयोग किया जाता है

   $ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar

यह शायद सबसे अच्छा जवाब अजगर gdown है ... इसलिए तुलना में भारी। मुझे कहना चाहिए कि मैं gdrive से बहुत संतुष्ट हूँ ...
smaudet

1
आपको अपने rm कमांड में न तो -f की जरूरत है और न ही -r की। यदि आप लोगों को हमेशा "rm -rf" सिखाते हैं, तो वे उन चीजों को हटा सकते हैं जिन्हें वे रखना चाहते हैं ...
josch

4

गो: ड्राइव में लिखा गया एक ओपन-सोर्स मल्टी-प्लेटफ़ॉर्म क्लाइंट है । यह काफी अच्छा और पूर्ण विशेषताओं वाला है, और सक्रिय विकास में भी है।

$ 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`

4

उपरोक्त सभी प्रतिक्रियाएं उत्तर की सादगी को अस्पष्ट करती हैं या कुछ ऐसी बारीकियां हैं जिन्हें समझाया नहीं गया है।

यदि फ़ाइल सार्वजनिक रूप से साझा की जाती है, तो आप केवल फ़ाइल आईडी को जानकर सीधा डाउनलोड लिंक उत्पन्न कर सकते हैं। URL को " https://drive.google.com/uc?id= " आधारभूत आईडी https:// export= download "के रूप में होना चाहिए। यह 11-22-2019 तक काम करता है। इसके लिए रिसीवर को Google में लॉग इन करने की आवश्यकता नहीं होती है लेकिन फ़ाइल को सार्वजनिक रूप से साझा करने की आवश्यकता होती है।

  1. अपने ब्राउज़र में, drive.google.com पर नेविगेट करें।

  2. फ़ाइल पर राइट क्लिक करें, और "एक साझा करने योग्य लिंक प्राप्त करें" पर क्लिक करें

राइट क्लिक करने योग्य लिंक प्राप्त करें

  1. एक नया टैब खोलें, पता बार का चयन करें, और अपने क्लिपबोर्ड की सामग्री में पेस्ट करें जो कि साझा करने योग्य लिंक होगा। आप Google के दर्शक द्वारा प्रदर्शित फ़ाइल देखेंगे। आईडी URL के "दृश्य" घटक से ठीक पहले की संख्या है:

यहां छवि विवरण दर्ज करें

  1. URL को संपादित करें ताकि यह आपकी साझा फ़ाइल की आईडी के साथ "[FILEID]" की जगह निम्न प्रारूप में हो:

    https://drive.google.com/uc?id=[FILEID]&export=download

  2. वह आपका सीधा डाउनलोड लिंक है। यदि आप अपने ब्राउज़र में इस पर क्लिक करते हैं, तो फ़ाइल अब आपके ब्राउज़र पर "पुश" हो जाएगी, डाउनलोड डायलॉग को खोलकर, आपको फ़ाइल को सहेजने या खोलने की अनुमति देगा। आप इस लिंक का उपयोग अपनी डाउनलोड स्क्रिप्ट में भी कर सकते हैं।

  3. तो बराबर कर्ल कमांड होगा:

curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz

2
यह बड़ी फ़ाइलों के लिए काम नहीं करता है: त्रुटि प्राप्त करें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?
Rekni

यह काम किया। धन्यवाद! लिंक को उस प्रारूप में परिवर्तित करने के बाद, आप अन्य उत्तरों में दिखाए गए अनुसार गाउन का उपयोग भी कर सकते हैं
हैरी एम

3

मुझे काम करने के लिए नैनोक्स की पर्ल स्क्रिप्ट नहीं मिल पाई थी, या अन्य कर्ल उदाहरण जो मैंने देखे थे, इसलिए मैंने अजगर में खुद को आपी के रूप में देखना शुरू कर दिया। यह छोटी फ़ाइलों के लिए ठीक काम करता था, लेकिन बड़ी फ़ाइलों ने पिछले उपलब्ध रैम को चट कर दिया, इसलिए मुझे कुछ अन्य अच्छे कोडिंग कोड मिले जो आंशिक डाउनलोड के लिए एपी की क्षमता का उपयोग करते हैं। यहां दें: https://gist.github.com/csik/c4c90987224150e4a0b2

अपने स्थानीय निर्देशिका के लिए API इंटरफ़ेस से client_secret json फ़ाइल डाउनलोड करने के बारे में थोड़ा ध्यान दें।

स्रोत
$ 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) 

3

यहाँ थोड़ी बैश स्क्रिप्ट लिखी गई है जो आज काम करती है। यह बड़ी फ़ाइलों पर काम करता है और आंशिक रूप से प्राप्त फ़ाइलों को भी फिर से शुरू कर सकता है। इसमें दो तर्क दिए गए हैं, पहला है file_id और दूसरा है आउटपुट फाइल का नाम। यहां पिछले उत्तरों पर मुख्य सुधार यह है कि यह बड़ी फ़ाइलों पर काम करता है और केवल आमतौर पर उपलब्ध उपकरणों की आवश्यकता होती है: बैश, कर्ल, ट्रे, ग्रीप, डु, कट और एमवी।

#!/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

एसओ में आपका स्वागत है। यदि आपने इस उद्देश्य के लिए किसी संदर्भ का उपयोग किया है तो कृपया उन्हें अपने उत्तर में शामिल करें। किसी भी तरह, अच्छी नौकरी +1
M--

3

यह नवंबर 2017 के रूप में काम करता है 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

हालांकि कहा गया है कि "स्रोत url" और कुछ पार्सिंग है जिसे मैंने समझने की कोशिश नहीं की, बस सीधे फाइल का उपयोग करके यहां काम किया है और दूसरे उत्तरों में पहले पैरामीटर के रूप में।
जनवरी

@ भजन का अर्थ हो सकता है कि एक से अधिक url शैली हो। मुझे खुशी है कि यह अभी भी आपके लिए काम कर रहा है।
17

3

इस कचरे के साथ खिलवाड़ करने के बाद। मुझे क्रोम - डेवलपर टूल का उपयोग करके अपनी प्यारी फ़ाइल डाउनलोड करने का एक तरीका मिल गया है।

  1. अपने Google डॉक्स टैब पर, Ctr + Shift + J (सेटिंग -> डेवलपर टूल)
  2. नेटवर्क टैब पर स्विच करें
  3. अपनी डॉक्स फ़ाइल में, "डाउनलोड करें" -> CSV, xlsx, ... के रूप में डाउनलोड करें पर क्लिक करें।
  4. यह आपको "नेटवर्क" कंसोल में अनुरोध दिखाएगा यहां छवि विवरण दर्ज करें

  5. राइट क्लिक -> कॉपी -> कॉपी कर्ल के रूप में

  6. आपकी कर्ल कमांड इस तरह होगी, और -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

हल किया!


वह लिंक समाप्त हो रहा है और एक समय में केवल 1 आईपी पते के लिए है
ब्लूजेक

आप सत्र को जीवित रखने के लिए केवल एक मौन निरंतर अनुरोध कर सकते हैं। @bluejayke
Ender

मैंने ठीक वैसा ही किया और जब एक और जवाब लिखने के लिए यहां आया, तो आप पर टूट पड़ा। मैं पुष्टि करता हूं कि यह अलग-अलग आईपी के साथ काम करता है क्योंकि मुझे उस सर्वर पर 36 जीबी फ़ाइल डाउनलोड करने की आवश्यकता थी जिसमें ब्राउज़र नहीं है। और मैंने अपने लैपटॉप से ​​लिंक निकाला।
dmitry502

2

यहाँ वर्कअराउंड है, जो मैंने Google डिस्क से अपने Google क्लाउड लिनक्स शेल में डाउनलोड फ़ाइलों के लिए आया था।

  1. PUBLIC में फ़ाइल साझा करें और उन्नत साझाकरण का उपयोग करके अनुमतियों को संपादित करें।
  2. आपको एक शेयरिंग लिंक मिलेगा जिसमें एक आईडी होगी। लिंक देखें: - drive.google.com/file/d/
  3. उस आईडी को कॉपी करें और उसे निम्न लिंक में पेस्ट करें: -

googledrive.com/host/[ID]

  1. उपरोक्त लिंक हमारी डाउनलोड लिंक होगी।
  2. फ़ाइल डाउनलोड करने के लिए wget का उपयोग करें: -

wget https://googledrive.com/host/ IsID ]

  1. यह कमांड फाइल को बिना किसी एक्सटेंशन के [आईडी] के नाम से और उसी स्थान पर उसी फ़ाइल साइज़ के साथ डाउनलोड करेगा जहाँ आपने wget कमांड चलाया था।
  2. वास्तव में, मैंने अपने अभ्यास में एक ज़िप्ड फ़ोल्डर डाउनलोड किया। इसलिए मैंने उस अजीब फ़ाइल का उपयोग करके नाम बदल दिया: -

एमवी [आईडी] १.जिप

  1. तब का उपयोग कर

unzip 1.zip

हमें फाइलें मिलेंगी।


http 502 इसके लिए एक googledrive.com/host/0BwPIpgeJ2AdnUGUzVGJuak5abDg
user2284570

Google ने ड्राइव से होस्टिंग ले ली है, इसलिए यह अब काम नहीं करता है।
केगेरीरी

2

मुझे इसका एक हल मिल गया ... बस निम्नलिखित का उपयोग करें

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

ऐसा करते समय मुझे चेतावनी मिलती है: docs.google.com के प्रमाणपत्र को सत्यापित नहीं कर सकता, जो `/ C = US / O = Google ट्रस्ट सेवाएँ / CN = Google इंटरनेट प्राधिकरण G3 'द्वारा जारी किया गया है: स्थानीय रूप से जारीकर्ता के प्राधिकरण का सत्यापन करने में असमर्थ। HTTP अनुरोध भेजा गया, प्रतिक्रिया का इंतजार ... 404 नहीं मिला 2019-02-08 02:56:30 ERROR 404: नहीं मिला। किसी भी काम?
ब्लूजैके

वाह! शानदार जवाब और बहुत तार्किक। इसे लिखने के लिए धन्यवाद। इस कमांड का उपयोग करके 1.3 जीबी फ़ाइल डाउनलोड की गई ... केवल इस कमांड द्वारा लिनक्स टर्मिनल से पूरी तरह से ऑटो मोड। जीसीपी पर भी कोशिश की। वहाँ भी महान काम करता है। वर्ष २०२० ... मेरा मानना ​​है कि यह सही तरीका है ... भले ही वे थोड़ा सा आदेश बदल दें, लेकिन समय की कसौटी पर खरा उतरना चाहिए।
एटा जट्ट

2

एक आसान तरीका है।

फ़ायरफ़ॉक्स / क्रोम एक्सटेंशन से क्लिगेट / CURLWGET स्थापित करें।

ब्राउज़र से फ़ाइल डाउनलोड करें। यह एक कर्ल / wget लिंक बनाता है जो फ़ाइल डाउनलोड करते समय उपयोग किए जाने वाले कुकीज़ और हेडर को याद करता है। किसी भी शेल से डाउनलोड करने के लिए इस कमांड का उपयोग करें


यह सबसे आसान और सरल तरीका है।
c0degeas

2

Google ड्राइव से फ़ाइल डाउन करने का आसान तरीका आप कोलाब पर फ़ाइल डाउनलोड कर सकते हैं

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/


ठंडा। लेकिन यह फी के जवाब से कैसे अलग है जो एक साल पहले आपके द्वारा पोस्ट किया गया था?
umläute

1

मई 2018 तक काम कर रहा है

हाय इस टिप्पणी के आधार पर ... मैं फ़ाइल URL से URL की सूची निर्यात करने के लिए एक bash बनाता हूं । URL से URLS_DECODT.txt पर जाएं में कुछ एक्सीलरेटर जैसे फ्लैशगेट (मैं विंडोज़ और लिनक्स को संयोजित करने के लिए का उपयोग में उपयोग किया जाता है।

कमांड स्पाइडर को डाउनलोड से बचने और अंतिम लिंक प्राप्त करने के लिए पेश किया गया था (सीधे)

GREP HEAD और CUT को कमांड करें, प्रक्रिया करें और अंतिम लिंक प्राप्त करें, यह स्पेनिश भाषा में आधारित है, शायद आप अंग्रेजी भाषा में पोर्ट कर सकते हैं

echo -e "$URL_TO_DOWNLOAD\r" शायद the \ r केवल cywin है और इसे a \ n (ब्रेक लाइन) से बदलना चाहिए

**********user*********** उपयोगकर्ता फ़ोल्डर है

*******Localización*********** स्पेनिश भाषा में है, क्षुद्रग्रहों को साफ करें और शब्द को अंग्रेजी स्थान में दें और दृष्टिकोण को संक्षिप्त और कट नंबर को अनुकूलित करें।

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

1

आपको बस wget का उपयोग करने की आवश्यकता है:

 https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download

पीडी। फ़ाइल सार्वजनिक होनी चाहिए।


0

skicka एक अपलोड करने के लिए एक 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.