20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google ColabでGoogle driveの公開ファイルを直接ダウンロードする方法

Last updated at Posted at 2020-07-26

#1.はじめに
 Google Colab で Google drive の公開ファイル (例えば、fastText日本語版の学習済みモデルとか) を使う場合は、PCに一旦ダウンロードしてから Google drive経由で使うのが一般的だと思います。

 普通はこの方法で問題ないわけですが、場合によっては わざわざ別途手動でダウンロードせずに、Google Colab を先頭からポチポチするだけで動くコードにしたいと思ったりするわけです。

 今回は、そのための良い方法をWebで見つけましたので、備忘録として残します。

#2.サンプルコード
 サンプル例は、fastText日本語版学習済みモデル です。URLをクリックすると、まずこの画面が現れます。

スクリーンショット 2020-07-26 19.08.20.png

 この画面で、赤枠のボタンを押すと、ダウンロード画面になります。

スクリーンショット 2020-07-26 19.10.08.png

 そうしたら、このダウンロード画面のURLを控えておきます。後は、以下のコードで、直接ダウンロード出来ます。

# Google drive からfastText日本語モデル(vector_neologd.zip)をダウンロードする
import requests

def download_file_from_google_drive(id, destination):
    
       # ダウンロード画面のURL
       URL = "https://drive.google.com/uc?id=0ByFQ96A4DgSPUm9wVWRLdm5qbmc&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)    

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)

if __name__ == "__main__":
       file_id = 'TAKE ID FROM SHAREABLE LINK' 
       destination = './data/vector_neologd.zip'  # 保存先パスの指定
       download_file_from_google_drive(file_id, destination)

enjoy !

(参考)
Python: download files from google drive using url

#<追記 2021.5.29>
 少し前から、Colab にこのためのライブラリー gdown が組み込まれて簡単になったので、追記します。
例えば、
表示リンク: https://drive.google.com/file/d/1vcxH6JOtwh_-FoZ8SNXYlHF9qCi3YoDH/view
ダウンロードリンク: https://drive.google.com/u/1/uc?id=1vcxH6JOtwh_-FoZ8SNXYlHF9qCi3YoDH&export=download** 
のときは、
1vcxH6JOtwh_-FoZ8SNXYlHF9qCi3YoDH が
id**です。このとき、ダウンロードするファイルが、food_101.zip であれば、下記のコードでダウンロードできます。

import gdown
gdown.download('https://drive.google.com/uc?id=1vcxH6JOtwh_-FoZ8SNXYlHF9qCi3YoDH', 'food_101.zip', quiet=False)
! unzip food_101.zip

 これだけです。超簡単になりました! colab はだんだんと使いやすくなっていますね。

20
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?