📜  从 gdrive 链接命令行下载 (1)

📅  最后修改于: 2023-12-03 15:06:31.290000             🧑  作者: Mango

从 GDrive 链接命令行下载

如果你需要从 Google Drive 下载大量文件或文件夹,而不想在本地打开浏览器并一个一个下载,可能需要了解如何在命令行中下载。

需求
  1. Python
  2. Google API client
步骤
  1. 安装 Google API client
    pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
    
  2. 获取 OAuth 2.0 密钥
    1. 前往 Google Cloud Console 创建项目
    2. 进入创建的项目,并在"认证信息"下创建OAuth 2.0 客户端 ID
    3. 下载 JSON 密钥文件,并保存到项目中的某个位置
  3. 配置密钥和文件 ID
    1. 将 JSON 密钥文件放在项目中
    2. 复制文件 ID,形如:1pZ08ecA8Xctf_ghjJ47ZXv7MVu2_gnmg
  4. 编写 Python 下载脚本
     from google.oauth2.credentials import Credentials
     from googleapiclient.discovery import build
     from googleapiclient.errors import HttpError
     import io
     from googleapiclient.http import MediaIoBaseDownload
    
     # 从谷歌云盘上下载文件
     def download_file(file_id, local_path, creds):
         
         try:
             service = build('drive', 'v3', credentials=creds)
             file = service.files().get(fileId=file_id).execute()
    
             filename = file['name']
    
             # 将文件下载到内存中
             request = service.files().get_media(fileId=file_id)
             fh = io.BytesIO()
             downloader = MediaIoBaseDownload(fh, request)
             done = False
             while done is False:
                 status, done = downloader.next_chunk()
                 print(f"Download {int(status.progress() * 100)}.")
             
             # 将内存中的文件写入磁盘
             with open(f"{local_path}/{filename}", 'wb') as f:
                 f.write(fh.getbuffer())
         except HttpError as error:
             print(f'An error has occurred: {error}')
             raise error
    
     # 运行下载函数
     creds = Credentials.from_authorized_user_file('path/to/credentials.json') # 替换为自己的密钥文件路径
     download_file('1pZ08ecA8Xctf_ghjJ47ZXv7MVu2_gnmg', 'path/to/local/download/folder', creds) # 替换为自己的文件 ID 和本地路径
    
  5. 运行 Python 脚本
    python download.py
    
结论

使用 Google API client 和 Python,可以轻松在命令行中从 Google Drive 下载大量文件和文件夹。通过 OAuth 2.0,以及 Google API client 的下载功能,可以轻松地下载文件到内存中,然后将其写入磁盘。