ColabでGoogleDrive上の容量の大きいデータをダウンロードする

# はじめに
2021年6月30日現在の方法になります．  
ColabやPyPiの仕様変更によって成功するかどうかは変わりますので悪しからず．．．

## やること

<b>GoogleDriveにある100MB以上のファイル</b>のダウンロード方法を紹介します．
100MB未満のファイルを扱う方は，この方の[curlやwgetで公開済みGoogle Driveデータをダウンロードする](https://qiita.com/namakemono/items/c963e75e0af3f7eed732)を読んでみましょう．

手っ取り早く試したい人はこちらのコマンドをどうぞ．

```pl
!pip install gdown
!gdown "https://drive.google.com/uc?export=download&id=1raMzTc0UmUxXluQ7ckPDHbQbhLhZCL_A"
!unzip cat.zip
```


100MB未満のファイルを扱うときのコマンドは次の通りです．

```pl
!wget "https://drive.google.com/uc?export=download&id=<FILE_ID>" -O <FILE_NAME>
```
※Colabはipynb形式なのでマジックコマンドになっています（コマンドの頭に`！`がついています）．

## 誰向けか

Colabを使ってデータ分析とか始めたい人

Colabの扱いにそこまで慣れていない人
（やり込んでる人は知っているような内容かと思います．．．）

# ダウンロード手順
1. ファイルのIDを調べる
1. ~~pipでgdownをインストールする~~（Cobalにはプリインされてました）
2. gdownコマンドでダウンロードする

## GoogleDriveのファイルのID

知っている人は飛ばして次のダウンロード実行に進みましょう．

【Goodle Drive】→【目的のファイルのディレクトリ】まで遷移しましょう．

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/4e924bf1-d9e6-4029-3453-e9e5025cf16e.png)

右クリックか二本指クリック→【リンクを取得】をクリックしましょう．
このようなモーダル画面が現れます．

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/ff038edb-81cd-89df-c1f6-8b14f76bcd75.png)


【制限付き】→【リンクを知っている全員】に変更しましょう．
ちなみに，ここで【制限付き】にするとあとで怒られます．
（僕の二の轍を踏まないで下さいね←）

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/49355864-e867-a407-04a2-fc83d0d3854e.png)

---

さて変更するとこんな画面になります．

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/d8c40b75-849d-feaa-ac6f-7140df12ea9a.png)

【閲覧者】でも【閲覧者（コメント可）】でも【編集者】でもどれでもいいです．

【リンクをコピー】を押しましょう．
すると下記のようなリンクが手に入ります．

```
https://drive.google.com/file/d/1raMzTc0UmUxXluQ7ckPDHbQbhLhZCL_A/view?usp=sharing
```

IDはこの部分です．

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/0642d96f-00f1-02fc-a115-6a0a1f90fb4c.png)

`file/d/`と`/view?`の間ですね.
この場合は`1raMzTc0UmUxXluQ7ckPDHbQbhLhZCL_A`ですね．
これをメモしておきましょう．あとで使います．

## ダウンロードの実行
次の二つのコマンドを見てみましょう．
2.~~pipでgdownをインストールする~~（Cobalにはプリインされてました）
3.gdownコマンドでダウンロードする


```pl
!pip install gdown
!gdown "https://drive.google.com/uc?export=download&id=[FILE_ID]"
# [FILE_ID]は任意のファイルのIDです
```

（マジックコマンド`!pip`を使ってgdownをインストールします．）
※Colabでは必要のない処理ですが，他の環境で実行するのであれば必要になる場合があります．

`!gdown　ダウンロードファイルURL`でGoodleDriveからファイルをダウンロードできるので，先ほど取得したファイルのIDを`[FILE_ID]`に代入しましょう．

上の例の場合はこのようになります．  

```pl
!pip install gdown
!gdown "https://drive.google.com/uc?export=download&id=1raMzTc0UmUxXluQ7ckPDHbQbhLhZCL_A"
```

実行するとこのようにダウンロードの様子が表示されます．
そして左側の【:file_folder:】の中に【cat.zip】を確認することができます．

![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/17aa8ea6-72f1-c895-b3bd-f86eb815fc67.png)


## おまけ：zipの解凍

さて，この例ではcat.zipという猫画像を100枚スプレイピングしたものが入っています．   
zipファイルなので解凍する必要があります．
こんな感じで解凍しましょう．

```python
from IPython.display import clear_output
!unzip cat.zip
clear_output()
```

うまくいくと，左側の【:file_folder:】の中に【cat】を確認することができます．

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165289/700ab6fa-df15-a5d5-3f38-df4b4ac15097.png)



# おわりに

~~ローカルでの実行方法は結構あったんですが，Colab上でとなるとなかなかいなかったので書いてみました．~~
書き終わった後に探し直したらありました！！笑
こちらもどうぞ！[Google ColabでGoogle driveの公開ファイルを直接ダウンロードする方法](https://qiita.com/jun40vn/items/66fff06abe48e01e23e3)

ちなみに参考にしたのはこのやりとりです．
[グーグルドライブからwget / curl大きなファイル](https://codehero.jp/curl/25010369/wget-curl-large-file-from-google-drive)

サンプルを用意してみました．
実際に動きを確認したい人はこちらから試してみて下さい．
https://colab.research.google.com/drive/1JDev-cw4ufXWFC-p8jUwUk3Jl8jr7MOP#forceEdit=true&sandboxMode=true

この類の何度も行う処理はスニペット化，あるいは同じファイルを使い回すのであればテンプレート化してもいいかもしれませんね．
Colabスニペットについては[こちらの記事](https://qiita.com/szk1akhr/items/517a9f88c00c6a150fb8#%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B9%E3%83%8B%E3%83%9A%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95)をどうそ．