Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
I am using Django and trying to get the list of all files. My dropbox contains 4149 files but it only returns 3998. Upon checking it seems that the most recent files uploaded to Dropbox isn't showing up in the list. Here is my code.
dbx = dropbox.Dropbox(oauth_result.access_token) metadata = dbx.files_list_folder("", recursive=True) 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]) m2 = dbx.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 = dbx.files_list_folder_continue(cur)
I tried running the code you posted and was able to reproduce the issue of it dropping the last page. Here's a fixed version:
dbx = dropbox.Dropbox(oauth_result.access_token) result = dbx.files_list_folder("", recursive=True) 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))
I am getting 4149 from dropbox web gui. I only have one folder called "/Camera". I selected all files and it shows that there are 4149 files in that folder. Even if I try to use the code
metadata = dbx.files_list_folder("/Camera", recursive=True)
It still shows 3998 files.
Hi Greg,
files_list_folders_continue() is already outside of the while loop.
m2 = dbx.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 = dbx.files_list_folder_continue(cur)
Even putting it outside of while loop didn't make any difference.
m2 = dbx.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 = dbx.files_list_folder_continue(cur) return render(request, 'accounts/dropbox.html', {'flist': flist})
I even changed that to outside of loop but same results. It doesn't seem to be getting to the while loop at all.
I tried running the code you posted and was able to reproduce the issue of it dropping the last page. Here's a fixed version:
dbx = dropbox.Dropbox(oauth_result.access_token) result = dbx.files_list_folder("", recursive=True) 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))
Thank you!! It works.
Hi there!
If you need more help you can view your support options (expected response time for a ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!