-
Notifications
You must be signed in to change notification settings - Fork 0
/
gdrive_upload.py
72 lines (53 loc) · 1.93 KB
/
gdrive_upload.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python
# coding: utf-8
"""Upload file to Google Drive
Usage:
gdrive_upload.py [-d] <file> [<folder>] [<new_name>]
gdrive_upload.py (-h | --help)
gdrive_upload.py --version
Options:
<file> Path to file to upload
<folder> ID of Drive folder
<new_name> New name of file on Drive
-d,--debug Turn on debug output.
-h,--help Show this screen.
--version Show version.
"""
import logging
from docopt import docopt
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
log = logging.getLogger(__name__)
flags = None
SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store, flags) \
if flags else tools.run_flow(flow, store)
DRIVE = build('drive', 'v3', http=creds.authorize(Http()))
def upload(path, folder=None, filename=None, mimetype='application/vnd.google-apps.sheet'):
filename = path if not filename else filename
metadata = {'name': filename,
'mimeType': mimetype}
if folder:
metadata.update({'parents': [folder,]})
res = DRIVE.files().create(body=metadata, media_body=path, supportsTeamDrives=True).execute()
if res:
log.debug('Uploaded "%s" (%s)' % (filename, res['mimeType']))
else:
log.debug('Upload failed')
if __name__ == '__main__':
args = docopt(__doc__, version='OSM 2.0')
if args['--debug']:
level = logging.DEBUG
else:
level = logging.WARN
logging.basicConfig(level=level)
log.debug("Debug On\n")
file = args['<file>']
folder = args['<folder>'] if args['<folder>'] else None
new_name = args['<new_name>'] if args['<new_name>'] else None
upload(file, folder, new_name)