使用Python下载共享的Google云端硬盘文件夹

时间:2019-07-02 18:02:44

标签: python download google-drive-api

我在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驱动器文件夹?

1 个答案:

答案 0 :(得分:0)

如果您使用Google Drive API which you can find here的Python快速入门教程,则可以使用该API设置身份验证。然后,可以通过将搜索的MIMEType指定为jpg来循环浏览云端硬盘并仅下载image/jpeg文件。

首先,您要遍历驱动器using 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']))

您可以使用here指定的q中的listFiles()参数来进一步优化搜索。