Загрузите общую папку Google Drive с Python - PullRequest
0 голосов
/ 02 июля 2019

У меня есть папка на диске Google, содержащая только изображения .jpg, и я хочу загрузить все изображения из этой папки на свой компьютер, используя общую ссылку в папке.

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

from google_drive_downloader import GoogleDriveDownloader as gdd

gdd.download_file_from_google_drive(file_id='1viW3guJTZuEFcx1-ivCL2aypDNLckEMh',
                                    dest_path='./data/mnist.zip',
                                    unzip=True)

Есть ли способ изменить это для работы с папками Google или есть другой способ загрузки папок Google Drive?

1 Ответ

0 голосов
/ 03 июля 2019

Если вы используете Краткое руководство по Python для Google Drive API , которое вы можете найти здесь , вы сможете настроить свою аутентификацию с помощью API. После этого вы можете перебирать диск и загружать jpg файлы, указав MIMEType вашего поиска равным image/jpeg.

Сначала вы хотите просмотреть файлы на вашем диске , используя files: list:

def listFiles(service):

    listOfFiles = []
    page_token = None
    q = "mimeType='image/jpeg'"

    #Get list of jpg files in Drive of authenticated user
    while True:
        response = service.files().list(q=q, spaces = "drive", fields = "nextPageToken, files(id, name)", pageToken = page_token, driveId='SHARED_DRIVE_ID', corpora='drive', includeItemsFromAllDrives=True, supportsAllDrives=True).execute()
        for file in response.get('files', []):
            listOfFiles.append(file)

        print(listOfFiles)
        page_token = response.get('nextPageToken', None)

        if page_token is None:
            break

Затем вы можете загрузить их, используя метод files: get_media():

def downloadFiles(service):
    #Download all jpegs
    for fileID in listOfFiles:
        response = service.files().get_media(fileId=fileID['id'])
        fh = io.FileIO(fileID['name'], 'wb')
        downloader = MediaIoBaseDownload(fh, response)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print("Downloading..." + str(fileID['name']))

Вы можете уточнить поиск, используя параметр q в listFiles(), как указано здесь .

...