code - dropbox python github
Descargar contenido de los enlaces de carpetas compartidas de Dropbox mediante programaciĆ³n (3)
Estoy creando una aplicación para activar automáticamente una descarga de un archivo de Dropbox compartido con un usuario (archivo compartido / enlace de carpeta). Esto fue sencillo de implementar para los enlaces de Dropbox a los archivos, como se describe here .
Desafortunadamente esto no funciona para las carpetas compartidas. Alguien tiene sugerencias sobre cómo podría
- Descargue todos sus contenidos (¿quizás obtenga una lista de los enlaces de los archivos que contiene para descargar?) o
- Descarga un zip de la carpeta.
Actualmente puedo ir a la url y hacer un raspado de pantalla para intentar obtener la lista de contenidos, pero la ventaja de la solución descrita en la entrada del blog de Dropbox para archivos es que no se necesita raspado, por lo que es mucho más confiable y eficiente. .
Al descargar enlaces directos compartidos a archivos a través de Python, obtenía páginas html en lugar del contenido real del archivo. ?dl=1
Cambiar ?dl=1
no estaba ayudando. Entonces me di cuenta de que wget estaba descargando el archivo real, incluso cuando ?dl=0
. Parece que Dropbox detecta el agente de usuario de wget y responde con el archivo, por lo que configurar el encabezado de agente de usuario en Wget/1.16 (linux-gnu)
en Python solucionó el problema, ahora cualquier enlace compartido de Dropbox se está descargando correctamente:
headers = {''user-agent'': ''Wget/1.16 (linux-gnu)''}
r = requests.get(url, stream=True, headers=headers)
with open(filepath, ''wb'') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
El equipo de soporte de Dropbox me acaba de informar sobre la mejor manera de hacer esto:
Simplemente agregue ?dl=1
al final del enlace compartido. Eso te dará una versión comprimida de la carpeta compartida.
Entonces, si el enlace compartido con un usuario es https://www.dropbox.com/sh/xyz/xyz-YZ
(o similar, que se vincula a una carpeta compartida), para descargar una versión comprimida de esa carpeta simplemente acceda a https://www.dropbox.com/sh/xyz/xyz-YZ?dl=1
Espero que esto ayude a alguien más también.
Esto debería hacerse usando la impresionante API de Dropbox Core , que te permite upload o descargar archivos , ver información sobre los deltas de archivos e información sobre carpetas / archivos compartidos .
La API es bastante simple, ya que devuelve una URL común para descargar cualquier elemento de las cuentas de Dropbox con.