Construir árbol de directorios desde la API de Dropbox

Lo que me gustaría hacer es construir un árbol desde la API de Dropbox, para una ruta determinada, con enlaces compartidos para cada ruta, utilizando los enlaces de Python.

Mi estructura propuesta se parece a esto:

[
    {
        '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.
]

Tengo algo que funciona principalmente usandometadata() pero es horriblemente lento ya que necesita hacer una llamada a la API por directorio atravesado.

Lo que me gustaría usar en su lugar esdelta(), lo que me dará cada archivo en una solicitud, luego lo construirá en un árbol, pero tengo problemas para descubrir exactamente cómo, en particular cómo analizar las rutas en un árbol.

Editar: Y me di cuenta de que hay una llamada para cada enlace compartido, así que voy a omitirlos y solo recibirlos cuando lo solicite.

Aquí hay un código que tengo para obtener los datos que necesito hasta ahora:

paths = []

for path, metadata in client.delta(path_prefix='/whatever')['entries']:
    paths.append({
        'path': path,
        'is_dir': metadata['is_dir']
    })

Así que supongo que tengo problemas para descubrir cómo anidar esos caminos. Estoy bastante seguro de que necesito una función recursiva aquí, pero no puedo entenderlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta