Загрузка документов Google с помощью API - PullRequest
0 голосов
/ 06 сентября 2018

это общая ссылка ссылка на файл

id = 1wzCjl51u131v1KBgpbiKLJs8DPPakhXCFosfYjp7BY0

так управление загрузками документации.

file_id = '11wzCjl51u131v1KBgpbiKLJs8DPPakhXCFosfYjp7BY0'
request = drive_service.files().export_media(fileId=file_id,
                                             mimeType='application/pdf')
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print ("Download %d%%." % int(status.progress() * 100))

я сохранил файл как dd.py, запустил с помощью f5 и получил эту ошибку

строка 2, в request = drive_service.files (). export_media (fileId = file_id, NameError: имя 'drive_service' не определено

1 Ответ

0 голосов
/ 06 сентября 2018

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

drive_service 'не определено

Во-вторых, вам нужно создать службу диска и пройти аутентификацию, прежде чем вы сможете запустить этот код. Попробуйте выполнить python quickstart

.
from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# If modifying these scopes, delete the file token.json.
SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly'

def main():
    """Shows basic usage of the Drive v3 API.
    Prints the names and ids of the first 10 files the user has access to.
    """
    store = file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)
    service = build('drive', 'v3', http=creds.authorize(Http()))

    # Call the Drive v3 API
    results = service.files().list(
        pageSize=10, fields="nextPageToken, files(id, name)").execute()
    items = results.get('files', [])

    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print('{0} ({1})'.format(item['name'], item['id']))

if __name__ == '__main__':
    main()
...