apps - cargar archivo a mi dropbox desde python script
dropbox code (8)
Quiero subir un archivo de mi secuencia de comandos python a mi cuenta de Dropbox automáticamente. No puedo encontrar de todos modos para hacer esto con solo un usuario / pase. Todo lo que veo en el Dropbox SDK está relacionado con una aplicación que tiene interacción con el usuario. Solo quiero hacer algo como esto:
https://api-content.dropbox.com/1/files_put/ /? user = me & pass = blah
¡Gracias a @smarx por la respuesta anterior! Solo quería aclarar si alguien más intenta hacer esto.
Asegúrate de instalar el módulo dropbox primero, por supuesto,
pip install dropbox
.Cree una aplicación en su propia cuenta de Dropbox en la "Consola de la aplicación". ( https://www.dropbox.com/developers/apps )
Solo para el registro, creé mi aplicación con lo siguiente:
a. Tipo de aplicación como "API API de Dropbox".
segundo. Tipo de acceso a datos como "Archivos y almacenes de datos"
do. Acceso a la carpeta como "Mi aplicación necesita acceso a los archivos que ya están en Dropbox". (es decir: Tipo de permiso como "Dropbox completo").
A continuación, haga clic en el botón "generar token de acceso" y corte / pegue en el siguiente ejemplo de python en lugar de
<auth_token>
:
import dropbox
client = dropbox.client.DropboxClient(<auth_token>)
print ''linked account: '', client.account_info()
f = open(''working-draft.txt'', ''rb'')
response = client.put_file(''/magnum-opus.txt'', f)
print ''uploaded: '', response
folder_metadata = client.metadata(''/'')
print ''metadata: '', folder_metadata
f, metadata = client.get_file_and_metadata(''/magnum-opus.txt'')
out = open(''magnum-opus.txt'', ''wb'')
out.write(f.read())
out.close()
print metadata
Aquí está el código para subir videos en vivo en Dropbox usando Python en Windows. Espero que esto te ayudará.
import numpy as np
import cv2
import dropbox
import os
from glob import iglob
access_token = ''paste your access token here'' #paste your access token in-between ''''
client = dropbox.client.DropboxClient(access_token)
print ''linked account: '', client.account_info()
PATH = ''''
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*''XVID'')
out = cv2.VideoWriter(''C:/python27/output1.avi'',fourcc, 20.0, (640,480))
#here output1.avi is the filename in which your video which is captured from webcam is stored. and it resides in C:/python27 as per the path is given.
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
#frame = cv2.flip(frame,0) #if u want to flip your video
# write the (unflipped or flipped) frame
out.write(frame)
cv2.imshow(''frame'',frame)
if cv2.waitKey(1) & 0xFF == ord(''q''):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
for filename in iglob(os.path.join(PATH, ''C:/Python27/output1.avi'')):
print filename
try:
f = open(filename, ''rb'')
response = client.put_file(''/livevideo1.avi'', f)
print "uploaded:", response
f.close()
#os.remove(filename)
except Exception, e:
print ''Error %s'' % e
Aquí está el código para subir videos existentes en su cuenta de Dropbox usando Python en Windows.
Espero que esto te ayudará.
# Include the Dropbox SDK
import dropbox
# Get your app key and secret from the Dropbox developer website
app_key = ''paste your app-key here''
app_secret = ''paste your app-secret here''
flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret)
# Have the user sign in and authorize this token
authorize_url = flow.start()
print ''1. Go to: '' + authorize_url
print ''2. Click "Allow" (you might have to log in first)''
print ''3. Copy the authorization code.''
code = raw_input("Enter the authorization code here: ").strip()
# This will fail if the user enters an invalid authorization code
access_token, user_id = flow.finish(code)
client = dropbox.client.DropboxClient(access_token)
print ''linked account: '', client.account_info()
f = open(''give full path of the video which u want to upload on your dropbox account(ex: C:/python27/examples/video.avi)'', ''rb'')
response = client.put_file(''/video1.avi'', f) #video1.avi is the name in which your video is shown on your dropbox account. You can give any name here.
print ''uploaded: '', response
folder_metadata = client.metadata(''/'')
print ''metadata: '', folder_metadata
f, metadata = client.get_file_and_metadata(''/video1.avi'')
out = open(''video1.avi'', ''wb'')
out.write(f.read())
out.close()
print metadata
Ahora para subir imágenes, se usará el mismo código.
Solo escriba el nombre del archivo de imagen para el que desea subir, por ejemplo: image.jpg en lugar del nombre del video. Cambie también el nombre de video1.avi y escriba el nombre de la imagen en la que se mostrará su imagen cargada en su Dropbox para ex: image1.jpg.
Aquí está mi enfoque usando API v2 (y Python 3). Quería subir un archivo y crear un enlace para compartirlo, que podría enviar por correo electrónico a los usuarios. Está basado en el ejemplo de sparkandshine. Nota: creo que la documentación actual de la API tiene un pequeño error que sparkandshine ha corregido.
import pathlib
import dropbox
import re
# the source file
folder = pathlib.Path(".") # located in this folder
filename = "test.txt" # file name
filepath = folder / filename # path object, defining the file
# target location in Dropbox
target = "/Temp/" # the target folder
targetfile = target + filename # the target path and file name
# Create a dropbox object using an API v2 key
d = dropbox.Dropbox(your_api_access_token)
# open the file and upload it
with filepath.open("rb") as f:
# upload gives you metadata about the file
# we want to overwite any previous version of the file
meta = d.files_upload(f.read(), targetfile, mode=dropbox.files.WriteMode("overwrite"))
# create a shared link
link = d.sharing_create_shared_link(targetfile)
# url which can be shared
url = link.url
# link which directly downloads by replacing ?dl=0 with ?dl=1
dl_url = re.sub(r"/?dl/=0", "?dl=1", url)
print (dl_url)
La única manera de autenticar las llamadas a la API de Dropbox es usar OAuth, que implica que el usuario dé permiso a su aplicación. No permitimos que las aplicaciones de terceros manejen las credenciales del usuario (nombre de usuario y contraseña).
Si esto es solo para su cuenta, tenga en cuenta que puede obtener fácilmente un token de OAuth para su propia cuenta y simplemente usarlo. Consulte https://www.dropbox.com/developers/blog/94/generate-an-access-token-for-your-own-account .
Si esto es para otros usuarios, deberán autorizar su aplicación una vez a través del navegador para que pueda obtener un token de OAuth. Una vez que tiene el token, puede seguir usándolo, por lo que cada usuario solo debe hacer esto una vez.
La respuesta de @Christina se basa en la aplicación v1 de Dropbox, que ahora está en desuso y se apagará el 28/6/2017. (Consulte here para más información).
La aplicación v2 se lanzó en noviembre de 2015, que es más simple, más consistente y más completa.
Aquí está el código fuente con APP v2.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dropbox
class TransferData:
def __init__(self, access_token):
self.access_token = access_token
def upload_file(self, file_from, file_to):
"""upload a file to Dropbox using API v2
"""
dbx = dropbox.Dropbox(self.access_token)
with open(file_from, ''rb'') as f:
dbx.files_upload(f.read(), file_to)
def main():
access_token = ''******''
transferData = TransferData(access_token)
file_from = ''test.txt''
file_to = ''/test_dropbox/test.txt'' # The full path to upload the file to, including the file name
# API v2
transferData.upload_file(file_from, file_to)
if __name__ == ''__main__'':
main()
El código fuente está alojado en GitHub, here .
Lo siento si me falta algo, pero no puedes descargar la aplicación de Dropbox para tu SO y luego guardar el archivo (en Windows) en:
C:/Users/<UserName>/Dropbox/<FileName>
acabo de programar un programa de Python para guardar un archivo de texto, compruebe mi Dropbox y los guarda bien.
import dropbox
access_token = ''************************''
file_from = ''index.jpeg'' //local file path
file_to = ''/Siva/index.jpeg'' // dropbox path
def upload_file(file_from, file_to):
dbx = dropbox.Dropbox(access_token)
f = open(file_from, ''rb'')
dbx.files_upload(f.read(), file_to)
upload_file(file_from,file_to)