Google Диск - замечательный сервис, который предлагает практически неограниченное хранилище для резервного копирования и синхронизации. Если у вас есть тонны данных, хранящихся на вашем Google Диске, и вы не можете загрузить данные с Google Диска в папку Jupyter с помощью локального компьютера, потому что это занимает слишком много времени или требует слишком много места для хранения, то вот шаг за шагом. руководство, чтобы ваш блокнот Jupyter загружал данные прямо с вашего Google Диска.

Это поможет вам получить большой набор данных для обучения и тестирования на Jupyter.

Раздел 1. Включение Google Drive API в Google Cloud Console

Перейдите в облачную консоль своей учетной записи Google: https: // console.developers.google.com.

Если у вас нет проекта (например, при первом входе в систему), вам будет предложено создать проект, перейти и создать проект. В противном случае, если у вас уже есть проект, просто выберите любой из существующих.

После создания / выбора проекта на левой панели навигации выберите API и службы.

Вы попадете на страницу панели управления API и служб, где выберите Включить API и службы.

Вы увидите строку поиска, введите google drive в строке поиска.

В результатах поиска вы должны увидеть Google Drive API, выберите Google Drive API.

На странице API Google Диска вы должны увидеть кнопку Включить, нажмите кнопку.

Включение API Google Диска должно занять несколько секунд, после чего вы должны увидеть страницу обзора API Диска Google. В правом верхнем углу той же страницы вы должны нажать кнопку, чтобы выбрать Создать учетные данные, нажмите кнопку.

Вы должны перейти на страницу для добавления учетных данных в проект. На этой странице есть несколько вариантов.

В раскрывающемся списке «Какой API вы используете?» Выберите Google Drive API.

В раскрывающемся списке «Откуда вы будете вызывать API?» Выберите Другой пользовательский интерфейс (например, Windows, инструмент CLI).

В селекторе «К каким данным вы будете получать доступ?» Выберите Данные пользователя.

Наконец, нажмите кнопку Какие учетные данные мне нужны?

На следующей странице вам будет предложено создать идентификатор клиента OAuth 2.0. В поле «Имя» можно оставить значение по умолчанию или изменить имя на любое, выбрав кнопку Создать идентификатор клиента OAuth 2.0.

На следующем шаге вам будет предложено выбрать свой адрес электронной почты и ввести название продукта. Введите любое имя для имени продукта, например «readmydrive». Затем выберите Продолжить.

На следующем шаге вы увидите созданный идентификатор клиента и кнопку для загрузки учетных данных в формате JSON. Нажмите кнопку Загрузить, чтобы загрузить файл JSON на свой компьютер.

Затем вы увидите страницу «Учетные данные» со списком учетных данных. Над списком есть несколько вкладок, выберите Экран согласия OAuth.

На странице экрана согласия OAuth. Сначала выберите тип приложения как Внутреннее. Затем в разделе Области действия для Google API нажмите кнопку Добавить область.

После этого вы должны увидеть длинный список для выбора области, прокрутите вниз и выберите «Google Drive API ../auth/drive.readonly», затем нажмите кнопку Добавить. внизу.

После этого прокрутите вниз и нажмите кнопку Сохранить.

Поздравляю! Теперь вы включили доступ для чтения к Google Drive API. Помните только что скачанный файл JSON? Этот файл JSON содержит информацию об учетных данных для Jupyter, чтобы получить доступ для чтения к любому файлу на вашем диске Google.

Затем вам понадобится скрипт Python для загрузки файлов с вашего Google Диска.

Раздел 2 - Использование Jupyter для загрузки файлов с вашего Google Диска

Сначала в папке Jupyter notebook / lab загрузите файл JSON с учетными данными, который вы только что скачали из Google Cloud Console.

Затем создайте новую записную книжку Python 3.

В сценарии 2 части. Первая часть подтвердит вашу личность с помощью учетных данных JSON и предоставит доступ к вашему Google Диску. Эта часть кода основана на руководстве по быстрому запуску Python по адресу https://developers.google.com/drive/api/v3/quickstart/python.

Скопируйте, вставьте и запустите код в Jupyter Notebook следующим образом:

from apiclient import discovery
from httplib2 import Http
import oauth2client
from oauth2client import file, client, tools
obj = lambda: None
lmao = {"auth_host_name":'localhost', 'noauth_local_webserver':'store_true', 'auth_host_port':[8080, 8090], 'logging_level':'ERROR'}
for k, v in lmao.items():
    setattr(obj, k, v)
    
# authorization boilerplate code
SCOPES = 'https://www.googleapis.com/auth/drive.readonly'
store = file.Storage('token.json')
creds = store.get()
# The following will give you a link if token.json does not exist, the link allows the user to give this app permission
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store, obj)

После запуска кода в блокноте Jupyter вы должны увидеть, как он распечатывает ссылку и предлагает ввести проверочный код.

Чтобы получить код подтверждения, скопируйте и перейдите по ссылке в новой вкладке браузера. Вы должны увидеть страницу для выбора учетной записи. Выберите учетную запись, в которой есть файлы, которые вы хотите загрузить.

На следующей странице с разрешениями на Просмотр файлов на Google Диске выберите Разрешить.

Вы должны увидеть страницу с кодом. Скопируйте код.

Вернитесь в Jupyter Notebook, вставьте и введите код в поле, запрашивающее код подтверждения.

Вы должны получить распечатку. Аутентификация прошла успешно. Кроме того, в случае успешной аутентификации вы должны увидеть созданный для вас файл token.json.

Поздравляю! Теперь вы можете скачивать файлы со своего Google Диска. Для загрузки сначала вам нужно будет найти ID файла на вашем Google Диске.

Чтобы получить идентификатор файла, перейдите к файлу на своем Google Диске, щелкните правой кнопкой мыши и выберите Получить ссылку для общего доступа.

Вставьте эту ссылку в адресную строку веб-браузера, идентификатор файла находится в поле id = ‹file-id-is-here› в ссылке, как выделено ниже:

Следующая часть кода загрузит файл, указанный идентификатором файла, в папку Jupyter Notebook. Код основан на API Python для Google Диска здесь: https://developers.google.com/drive/api/v3/manage-downloads

Скопируйте и вставьте код в Jupyter Notebook следующим образом:

import io
from googleapiclient.http import MediaIoBaseDownload
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
# if you get the shareable link, the link contains this id, replace the file_id below
file_id = '1xtoxijieKG-241NDyscE_qlE6G0UGhl1'
request = DRIVE.files().get_media(fileId=file_id)
# replace the filename and extension in the first field below
fh = io.FileIO('filename.zip', mode='w')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print("Download %d%%." % int(status.progress() * 100))

Перед запуском скрипта обязательно замените поля file_id и filename на file_id и filename, которые вы загружаете.

Запускаем скрипт, ждем пока он покажет Download 100%. После запуска сценария вы должны увидеть, что этот файл загружен в ту же папку, что и ваш сценарий.

Поздравляем, вы только что скачали файл прямо со своего Google Диска!

Раздел 3. Отмена доступа к Google Диску

Однако это были все шаги для загрузки файла, если вы хотите отменить доступ для чтения к Google Диску, например, когда вы закончили использовать Jupyter в общей среде. Вам нужно сделать два шага:

Удалите файлы token.json и client_id.json в папке Jupyter.

Удалите учетные данные идентификатора клиента в облачной консоли Google.

Вот и все, что нужно для отмены доступа.

Конец!

Выражение признательности: это руководство было создано доктором Раймондом Хуахонгом Ту с помощью студента машинного обучения FIRE Capital One Дерека Чжана.