Dropbox API не возвращает все файлы в списке - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь получить полный список файлов из моей учетной записи Dropbox с помощью API-интерфейса Dropbox Python, чтобы позже сравнить локальные и удаленные папки и загрузить только измененные файлы на моем Raspberry PI.Так что сейчас мне нужен текущий список файлов в моей учетной записи.Я пытаюсь добиться этого с помощью этого кода:

client = dropbox.Dropbox("ACCESS_TOKEN")
metadata = client.files_list_folder("", recursive=True, include_deleted=False, include_media_info=False)
flist = []
if metadata.has_more == True:
    m1 = metadata.entries
    cur = metadata.cursor
    for i in m1:
        if isinstance(i, dropbox.files.FileMetadata):
            flist.append([i.name])
    # flist now has 2000 items
    m2 = client.files_list_folder_continue(cur)
    while m2.has_more == True:
        for i in m2.entries:
            if isinstance(i, dropbox.files.FileMetadata):
                flist.append([i.name])
        cur = m2.cursor
        m2 = client.files_list_folder_continue(cur)

, что дает мне в общей сложности 4971 файлов.Но в разных папках 5252 файла (вероятно).Я получаю много разных номеров.Windows дает мне 5252 файла, используя консоль, а через проводник - 2344 файла.Unix дает мне 5260 файлов с помощью консоли и 5288 файлов с помощью файлового менеджера ...
Я заметил, что не хватает многих файлов, которые я добавил / отредактировал недавно (несколько дней назад).После этого я попробовал немного другой код:

dbx = dropbox.Dropbox("ACCESS_TOKEN")
result = dbx.files_list_folder("", recursive=True, include_deleted=False, include_media_info=False)
file_list = []

def process_entries(entries):
    for entry in entries:
        if isinstance(entry, dropbox.files.FileMetadata):
            file_list.append([entry.name])

process_entries(result.entries)

while result.has_more:
    result = dbx.files_list_folder_continue(result.cursor)
    process_entries(result.entries)

print(len(file_list))

Этот код дает мне только файлы 1997 года, но список содержит новые файлы.Я не понимаю, почему это происходит, поскольку оба кода работают одинаково, но ни один из них не может дать мне правильный список файлов.

Редактировать: Второй код изменен в соответствии с комментарием Грегса.Доступ ко многим файлам теперь по сравнению с синхронизированной папкой локали Dropbox.

...