Last active
August 29, 2015 14:02
-
-
Save kanazux/72560febec4bd3f8ba1b to your computer and use it in GitHub Desktop.
send backup file to google drive
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding: utf-8 -*- | |
# Documentação oficial https://developers.google.com/api-client-library/python/ | |
# Foi modificado o arquivo sample.py fornecido na pagina do client. | |
import os | |
import sys | |
import argparse | |
import httplib2 | |
from apiclient import discovery | |
from mimetypes import MimeTypes | |
from apiclient.http import MediaFileUpload | |
from oauth2client import file, client, tools | |
# Definição dos parametros que serão usados, existem valores default definidos. | |
parser = argparse.ArgumentParser( | |
description=__doc__, | |
formatter_class=argparse.RawDescriptionHelpFormatter, | |
parents=[tools.argparser] | |
) | |
# Define o caminho para o arquivo client_secretes.json com as credenciais | |
secrets = False | |
if secrets == False: | |
secrets = raw_input('Digite o caminho do arquivo client_secrets.json: ').rstrip() | |
# Define os parametros para a liberação de acesso para a api do google drive | |
flow = client.flow_from_clientsecrets(secrets, | |
scope = [ | |
'https://www.googleapis.com/auth/drive', | |
'https://www.googleapis.com/auth/drive.appdata', | |
'https://www.googleapis.com/auth/drive.apps.readonly', | |
'https://www.googleapis.com/auth/drive.file', | |
'https://www.googleapis.com/auth/drive.metadata.readonly', | |
'https://www.googleapis.com/auth/drive.readonly', | |
'https://www.googleapis.com/auth/drive.scripts' | |
], | |
message = tools.message_if_missing(secrets) | |
) | |
# Define variavel que sera passada como parametro com os argumentos default. | |
# Iremos modificar um unico parametro caso precisemos, o outros serão default. | |
flags = parser.parse_args(sys.argv[1:]) | |
# Define o caminho com as credenciais liberando o acesso a api, caso o arquivo ainda não exista | |
# será criado logo abaixo. | |
file_storage = False | |
if file_storage == False: | |
file_storage = raw_input('Digite o caminho do arquivo storage.dat: ').rstrip() | |
storage = file.Storage(file_storage) | |
# Define a credencial de acesso através do arquivo de credenciaias já liberadas caso ele exista. | |
credentials = storage.get() | |
# Se a credencial estiver vazia ou invalida, os parametros no arquivo client_secrets.json | |
# serão usados para criar a url que levará para a liberação da credencial. | |
if credentials is None or credentials.invalid: | |
flags.noauth_local_webserver = True | |
# Nessa parte sera exibida uma url no terminal, copie e cole a url em um navegador. | |
# Ira pedir para liberar acesso para a aplicação em uso. | |
# Depois disso copie o codigo que sera apresentado e cole no terminal. | |
# Sera criado o arquivo com a credencial liberada definido em file_storage. | |
credentials = tools.run_flow(flow, storage, flags) | |
# Cria o processo para conexão com o google drive. | |
http = httplib2.Http() | |
http = credentials.authorize(http) | |
drive_service = discovery.build('drive','v2', http=http) | |
# Define o caminho do arquivo que sera enviado. | |
# Caso seja um arquivo fixo, troque o parametro False pelo caminho do arquivo. | |
file_name = False | |
if file_name == False: | |
file_name = raw_input('Digite o caminho para o arquivo: ').rstrip() | |
# Define a mensagem usada no envio do arquivo. | |
message = False | |
if message == False: | |
message = raw_input('Escreva uma mensagem para o upload: ') | |
try: | |
# Cria uma instancia para pegar o mime type do arquivo. | |
mime = MimeTypes() | |
# Cria os parametros para enviar o arquivo. | |
media_body = MediaFileUpload(file_name, mimetype=mime.guess_type(file_name)[0], resumable=True) | |
body = { | |
# O titulo será o nome do arquivo. | |
'title' : os.path.split(file_name)[1], | |
'description' : message, | |
'mimeType' : mime.guess_type(file_name)[0] | |
} | |
# Envia o arquivo para o google drive. | |
drive_service.files().insert(body=body, media_body=media_body).execute() | |
except Exception, error: | |
print >> sys.stdout, error |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment