PyDrive

Google Drive API Python wrapper library

Github stars Tracking Chart

PyDrive

PyDrive is a wrapper library of
google-api-python-client <https://github.com/google/google-api-python-client>_
that simplifies many common Google Drive API tasks.

Project Info

  • Homepage: https://pypi.python.org/pypi/PyDrive <https://pypi.python.org/pypi/PyDrive>_
  • Documentation: Official documentation on GitHub pages <https://gsuitedevs.github.io/PyDrive/docs/build/html/index.html>_
  • GitHub: https://github.com/gsuitedevs/PyDrive <https://github.com/gsuitedevs/PyDrive>_

Features of PyDrive

  • Simplifies OAuth2.0 into just few lines with flexible settings.
  • Wraps Google Drive API <https://developers.google.com/drive/>_ into
    classes of each resource to make your program more object-oriented.
  • Helps common operations else than API calls, such as content fetching
    and pagination control.

How to install

You can install PyDrive with regular pip command.

::

$ pip install PyDrive

To install the current development version from GitHub, use:

::

$  pip install git+https://github.com/gsuitedevs/PyDrive.git#egg=PyDrive

OAuth made easy

Download client_secrets.json from Google API Console and OAuth2.0 is
done in two lines. You can customize behavior of OAuth2 in one settings
file settings.yaml.

.. code:: python

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

File management made easy

Upload/update the file with one method. PyDrive will do it in the most
efficient way.

.. code:: python

file1 = drive.CreateFile({'title': 'Hello.txt'})
file1.SetContentString('Hello')
file1.Upload() # Files.insert()

file1['title'] = 'HelloWorld.txt'  # Change title of the file
file1.Upload() # Files.patch()

content = file1.GetContentString()  # 'Hello'
file1.SetContentString(content+' World!')  # 'Hello World!'
file1.Upload() # Files.update()

file2 = drive.CreateFile()
file2.SetContentFile('hello.png')
file2.Upload()
print('Created file %s with mimeType %s' % (file2['title'],
file2['mimeType']))
# Created file hello.png with mimeType image/png

file3 = drive.CreateFile({'id': file2['id']})
print('Downloading file %s from Google Drive' % file3['title']) # 'hello.png'
file3.GetContentFile('world.png')  # Save Drive file as a local file

# or download Google Docs files in an export format provided.
# downloading a docs document as an html file:
docsfile.GetContentFile('test.html', mimetype='text/html')

File listing pagination made easy

PyDrive handles file listing pagination for you.

.. code:: python

# Auto-iterate through all files that matches this query
file_list = drive.ListFile({'q': "'root' in parents"}).GetList()
for file1 in file_list:
    print('title: {}, id: {}'.format(file1['title'], file1['id']))

# Paginate file lists by specifying number of max results
for file_list in drive.ListFile({'maxResults': 10}):
    print('Received {} files from Files.list()'.format(len(file_list))) # <= 10
    for file1 in file_list:
        print('title: {}, id: {}'.format(file1['title'], file1['id']))

Concurrent access made easy

All calls made are thread-safe. The underlying implementation in the
google-api-client library
is not thread-safe <https://developers.google.com/api-client-library/python/guide/thread_safety>_,
which means that every request has to re-authenticate an http object. You
can avoid this overhead by
creating your own http object for each thread and re-use it for every call.

This can be done as follows:

.. code:: python

# Create httplib.Http() object.
http = drive.auth.Get_Http_Object()

# Create file object to upload.
file_obj = drive.CreateFile()
file_obj['title'] = "file name"

# Upload the file and pass the http object into the call to Upload.
file_obj.Upload(param={"http": http})

You can specify the http-object in every access method which takes a param
parameter.

Main metrics

Overview
Name With Ownergooglearchive/PyDrive
Primary LanguagePython
Program languagePython (Language Count: 1)
Platform
License:Other
所有者活动
Created At2013-08-16 17:39:54
Pushed At2021-06-24 05:24:59
Last Commit At2021-06-23 10:32:42
Release Count4
Last Release Name1.3.1 (Posted on )
First Release Name1.0.0 (Posted on )
用户参与
Stargazers Count1.3k
Watchers Count57
Fork Count273
Commits Count58
Has Issues Enabled
Issues Count178
Issue Open Count79
Pull Requests Count22
Pull Requests Open Count10
Pull Requests Close Count17
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private