Dropbox Shared Links

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
daniel_e
User
Beiträge: 2
Registriert: Donnerstag 20. Juli 2017, 18:30

Hallo zusammen,

ich bin python-Anfänger und versuche mich, nach mehreren kleinen Test-Scripts, an mein erstes größeres Projekt. Ich versuche einen Raspberry-Pi dazu zu bringen einen Dropbox-Ordner auszulesen und die sich darin befindenden Fotos mittels ImageMagic mit einem QR-Code zu versehen.

Dazu müssen mehrere Dinge nacheinander passieren:

1. Inhalt des Dropbox-Ordners auslesen
2. Jede einzelne Datei als Public-Link freigeben
3. Aus jedem Public Link einen QR-Code generieren
4. Den QR-Code per ImageMagic auf das Foto legen und neu speichern

Ich stocke gerade an Punkt 2. Ich werde einfach aus der Dropbox-API für python nicht schlau. Die verantwortliche API-Klasse ist diese:
https://dropbox-sdk-python.readthedocs. ... nkSettings.

Code: Alles auswählen

import dropbox
import datetime

db = dropbox.Dropbox('HierStehtMeinKorrekterAccessToken')
expires = datetime.datetime.now() + datetime.timedelta(days=30)
requested_visibility = dropbox.sharing.RequestedVisibility.public
desired_shared_link_settings = dropbox.sharing.SharedLinkSettings(requested_visibility=requested_visibility, expires=expires)

shared_link_metadata = db.sharing_create_shared_link_with_settings('/session_test/fb_1707160202581.JPG', settings=desired_shared_link_settings)

print (shared_link_metadata)


Was dabei herauskommt ist:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pi/scripts/dropbox_test.py", line 46, in <module>
    shared_link_metadata = db.sharing_create_shared_link_with_settings('/session_test/fb_1707160202581.JPG', settings=desired_shared_link_settings)
  File "/usr/local/lib/python3.4/dist-packages/dropbox/base.py", line 2120, in sharing_create_shared_link_with_settings
    None,
  File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 256, in request
    user_message_locale)
dropbox.exceptions.ApiError: ApiError('f31a2e416bfd2c8252f2f492aca0f4f8', CreateSharedLinkWithSettingsError('settings_error', SharedLinkSettingsError('not_authorized', None)))
Den Code hab ich selbst im Netz gefunden und versuche seitdem ihn für meine Zwecke anzupassen... Ich bekomme es aber einfach nicht hin. Aktuell hätte ich einfach gern nur ein einziges Foto als Public Link. Von da aus würde ich weitermachen. Aber irgendwas ist falsch.

Kann jemand helfen?

Vielen Dank im Voraus!
Zuletzt geändert von Anonymous am Donnerstag 20. Juli 2017, 23:11, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
daniel_e
User
Beiträge: 2
Registriert: Donnerstag 20. Juli 2017, 18:30

Ich habe die Nacht über noch weiter rumprobiert und die Lösung selbst gefunden. Hier meine Lösung für alle diejenigen, die auch mal am gleichen Problem hängen:

Code: Alles auswählen

import dropbox
db = dropbox.Dropbox('IVZIetRqJ9oAAAAAAAAH0NCzSLPHB0qXOcv-Uo1KcNAkpcj9kgThfB1EgrVsf2yy')
response = db.files_list_folder('/test')
for file in response.entries:
	print (file.path_lower)
shared_link_metadata = db.sharing_create_shared_link_with_settings(file.path_lower)
print (shared_link_metadata.url)
Nach dem Import von dropbox wird in der zweiten Zeile nur der API-Key in die Variable db geschrieben. Anschließend werden alle Dateien im Ordner "test" gelesen und aufgelistet, mit komplettem Pfad (Nur Dateiname wäre file.name). Dieser Pfad kann anschließend verwendet werden, um einen shared link zu erstellen, der danach ausgegeben wird.
Antworten