Verzeichnisbaum von der Dropbox-API erstellen
Was ich tun möchte, ist, einen Baum aus der Dropbox-API für einen bestimmten Pfad mit Freigabe-Links für jeden Pfad unter Verwendung der Python-Bindungen zu erstellen.
Meine vorgeschlagene Struktur sieht ungefähr so aus:
[
{
'path': '/a',
'is_dir': True,
'contents': [
{
'path': '/a/b',
'is_dir': True,
'contents': [etc]
},
{
'path': '/a/readme.txt',
'is_dir': False,
'share_link': 'http://etc'
}
]
},
etc.
]
Ich habe etwas, das hauptsächlich mit @ funktioniemetadata()
aber es ist schrecklich langsam, da es einen API-Aufruf pro durchlaufenem Verzeichnis ausführen muss.
Was ich stattdessen verwenden möchte, istdelta()
, wodurch ich jede Datei in einer Anfrage bekomme und sie dann in einen Baum baue, aber ich habe Probleme, genau herauszufinden, wie, insbesondere, wie die Pfade in einen Baum geparst werden.
Edit: Und ich habe festgestellt, dass es für jeden Share-Link einen Aufruf gibt. Daher werde ich diese weglassen und sie nur erhalten, wenn ich dazu aufgefordert werde.
Hier ist ein Code, den ich benötige, um die Daten zu erhalten:
paths = []
for path, metadata in client.delta(path_prefix='/whatever')['entries']:
paths.append({
'path': path,
'is_dir': metadata['is_dir']
})
So habe ich wohl Probleme herauszufinden, wie ich diese Pfade verschachteln kann. Ich bin mir ziemlich sicher, dass ich hier eine rekursive Funktion brauche, kann sie aber nicht ganz herausfinden.