cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Tell us what you want to see on the Community here!
Close

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Re: Dropbox API not returning all files

Highlighted

Re: Dropbox API not returning all files

Explorer | Level 3

Hey Greg,

 

I've tried to adapt this code in order to get a bunch of files that begin with the letters 'zas', but I found the script just ran for hours without any luck, so I stripped it back to see what was happening.

 

I define my root and result:

root_path = '/MarketingCreative/External/Bidalgo_Zynga_CSR2/'

result = dbx.files_list_folder(root_path, recursive=True)

And then I'm just printing the file name if its a file, and the folder name if it's a folder:

 

def process_entries(entries):
  for entry in entries:
    if isinstance(entry, dropbox.files.FileMetadata):
      file = entry.path_display.rsplit('/', 1)[1]
      print(file)
    else:
      print("Folder "+entry.path_display)

process_entries(result.entries)

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

Again, this is just to see why the script is taking so long with no results.

 

It seems that after the first few files, the script just keeps repeating the root folder, and not progressing the the subfolders (and files) within (see photos).

 

Screenshot 2020-05-11 at 16.08.57.pngScreenshot 2020-05-11 at 16.09.04.png

 

If I specific a sub folder in the root path, eg:

root_path = '/MarketingCreative/External/Bidalgo_Zynga_CSR2/C2_112118_2.1_FormulaItalia3_Trailer_VS_AlfaRomeo_[LOC]/'

result = dbx.files_list_folder(root_path, recursive=True)

The script does what I need it to, but at this one level up, it seems to be an infinite loop.

 

How could I go about debugging this? Is it a cursor issue do you think?

 

Thanks

 

10 Replies 10
Highlighted

Re: Dropbox API not returning all files

Dropboxer

Nothing looks clearly wrong in the code. Can you add some extra logging to see:

  • how many calls are being made to files_list_folder and files_list_folder_continue, and when? e.g., how many of that repeated folder entry do you see per call?
  • what the value of result.cursor is each time to make sure it is changing each time?

Alternatively, you can step through with a debugger to inspect this interactively.

Highlighted

Re: Dropbox API not returning all files

Explorer | Level 3

The cursor is definitely changing:

 

/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAE0hozJExL3S0MSePeqiKCWxFrYSYHlKaVrjL587setM0OKa4pyMp363SxU-HkSHEqgiOcrqKrvzc_LNfxuLMCzqnJBhdZlFdiywbVrO1LtvaZQ8_K-YDSCvZhEGXE4WLubSEivzHFm8BzLTzLJGWbIi2Qd8EBibzeVpJB_1DtqqOPJ0Wz-SUaMHnGsisFikWW5Gbtl6FBjHHFcuhPClt9adQobe0JxtU5doi8Mw-gu-QmiUd_UyNl-_XlItsPjWg11psAhW-F1_HmkWl8-CEOb3EkXzwEwtf-TNiScpgtzrLf2NGxmDyQ6smjrIwqxVbJsEmzsfuTonlOdlz7_PtGusXpcrDlqzXSi4XWqS4x47haSKyC9te0OkhpZu3XKJvIdTaiet96q6aB7q9PigxZYnZ6NuXPgChUQByeiqp0Jn5fn5bBr9zkKEhUM79uKWfO-yXHjthbk-WFMVh9a7cS_pNI1LmE6tYmGvvSsDuMEFWqf0ociMs5TSWrbjxtv0BlGdq9UlUNiWAhr_n1LljsRjKlj-m-W4oc8guyw_GRhYQ
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAFiWZcpPkiqoVEmJeEbko1CcKgixZTulhCZWqw-H_M6XyBJ6ajzNcERE6nCtgQFbk7ve5Cv8wwRuWSuXyV6eNfaq-SIAudJtZNnPJSKrvU_4efEXJL4j_SJonn8YMMnCwVU7NL73Be2BSqY9sNVub_siDt6hwz-7738zfSDDmkpQ3D01_HmOgfqxx9igwQ9S-PQBnOhh0UKK17dhtpw2Oh0BZOam20ss_ZCyJ5tdSjs05qgTR5yNZPQD_2BZA-bA709MBU6ca1szjRUgAVkFM4GK622uUmtpHxNGE-WMHm8jPN-sKQqqe1fI1j56d5EHERdxnKpmjI6zORoGQC2g6qhni4z9VHq6EiGNLaD3oLsZV2dl5ysQxBkc58MXeNSuqHQ0ddfX3WyXGI974JYq3ntJl4__5PFvPeacX3Iv9Xk3pQ9aso-SW7-OEETnlPNMN_vRU1qYhQmHcC4yJ-K1KK7ivMCpoHfQ0wI7O4f8-JeYV2EtyOdtS7d6vQf0i8520QgdFf1L92xZvCaXIprL65dP7y8khGg40mArGDE3ubhfw
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAHOafBCzEArLBqdMJgftkMA569bX7IkSVOV2V0If9_yQZgEDMy05naPaonoosRVkPlMNL9xfXw98d6lm2PQ5Kz7vsNX4orStx1o4oVqJfNR6zF41yuB5IC8RGa1_7gnfJUv9zKkDYxAtSNTv8pzgLG5aNl7yUifQt6KtPTAdqcIUXSJHo7lBQMjosHOpUjiXnflf-Lz51HR0EWM9vmaLy6f6VKnU_4u9iiwifWnE2DrZlXvvjDMvKmJ9tx5L_yqCJ-Ybc8ZCuI3WxbnVdwQXJkKT-cKXLXKOCnScDVBZDMU2EEAudT1wDEtTYmY9wAnOCO3keU4cF9pxYnQMpgWkWdjcZ2lGi5aGb4bgaGJ5i2981rb0X1ajdfBVt6-48amwM8kepBKsoQuhp-vw-IFe6BSZhUeBk4kB1lfkGR8yMwFaHNTuIhD0v-rwCdMzs83XdIrLS3csoKg2rSoKGijXO-9hIGb5thQGfKH-jsxc6zLvd4ogOJDIofYzDZDE2142psEQy9NbhITeim46Ts-ZjW5wdDoZ0ceBCYRbQAr1X_8kg
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAFuVVTjXZdm1hzaN3XqyesuicqXo8kvKkLAdA_rqPsr9XJ6t-AtDw8bFzups3vNFK6iqo3e2cJzZnfQ0B-eUh6edxRY79EDFkf0SKCe1zuTgOfzCOe2yh4nSabe3Qvs2VSh0yuL9sgzp317QU9JwzDTcNlHj5xrb9u-vqket-4CjuQv_xlXdmLcCwAhDHIrY_L8WDsnNQy4S5Mai0NMxgXmjorGjhm-mz7GJndBCQj_pKskBm6-F9VVgV3_YoDvrGxXIFLMvzKzIWqNYVREGw5FCaWGb5Nk1Yn-3BLVh3y4UKIEtdbsXEBeqyeEoaRvuAFIeN-BcE1Fb34ZsfCJUKc7dCPKwvNVKVgvZcWp0CK8zoPYVuMh-1vKReWwUwFSiz1Exy1drEKPj3rf-vC61o6G4D3sZOk0Lo9ZNiiHJkt72zfuGAGmd4f_7ilrasgR8KVytHN0af6HL6IiGH8YHlITwBJJwG2Dq6GsU_cFO9qKz328NhvOGTFj5-CWMu9P4kr5JZdxuAZX45r9I-2j_Lp7LxaiDrbsL7xZ-lk48eNpNg
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAFDMBZSLW3NspymEotwvGV3AhYgpBju_cN-GLAHdWXs9gXtDZOiivkOap19ELrZ3bZSxWNx0RE-ZxsmVfahTQyHx-z0gs1LnEzarkC2vL0UM1tgUSkoo1ZpFzh3LnZx1Cee90QfxCY2x6fjWNBCxv_5gjv4-2wAibpf9tWfy2JfOVoDYg2DzyvyUEMExiCnFoR2VSPC-POk11NJOuZI2bDCOFqyW9qu2zQv6w9FIkGlZCR9751erkfIErO8Ho8WrWhYf1PiqlnHG7KmM7EY_kkGXWbPyCmZWqeNsLmS9bj4uuO8nKRPOkjyjs_U5-o31FrnssLKaOAnmhnCv25BIfmkFll76TXb3ZDV_H1-049u1SD-4SWTZEQbG2Xy5vonNqlgpcDNJi0phbjMYpoQLcq52KbmcJXsPmffVcST4KB7UTUM2FkfHD2u0qwy68RJ-w6G7nhNs0b8FQ7LLda2Rgy8qcIEWemnquqw1bu3aMfdPqTIXEmEk9ICMG7TARsJ-Oj9StHXVMGXCOzJsvMDfYXjaDLjAG9qO2EZDovNqVEdpw
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAF1kRHSusb9bNO6BvgAuPxPWISkGl46eWyCv_RJuMiEXGsc6On94JEpC97INNYpxo6e2sNaaQxxqCrbBr8anGbj8-erf5KDDsDXCm5Wfh3aDD7A7vWxrTPKB33oPwtLb5hKUQQTpIOjja8s5D1QRewD0OrrAPjnqIpQD7ik48r9BwMBcRd8PkCg2aRRLxQaS4NHk04l9JsHB10JarYJbyOlltVQ3lWq0BwRMVaRtSCgOW1NQZbpoYnrXMHOxyhcWev4NlvTso1OXBUmrZfwiZxvtO0qTyprDRdhjxYNcc29A_KpAuad-SebhNef3ISWCLB2URC5vBoy3sZZMe4UL9_9IGjxxNjQKO0TCME2WN1J4qPLkknmbzz5sgjL155JBTo8WWXfb2BoCtOLBPbUHVimAQkPd60iNdPjdwKmRCkg_MQrvP2XXXWwK2duOE4NMZRcBIbUv-FeY53GFec2skndu6bP5-NMNOhP2snYWW_EnirExR64xWiVLypZhJv0YDJO3cFA6wd6d8cxzvM2u4rWQXIUcy4pRNSDJsLRlG28jA
/MarketingCreative/External/Bidalgo_Zynga_CSR2
AAG4CVIxqMGl_h1RMvaaCWvnCwrob8GlthSZsXeHHrP9y9Eyp_eHdJvO7XBsOHEh4Fhg-31UaHYCaDYz8pd91eyJZUcIpTc4YP1-wxHRrxewVds_Fyk0NUzeXEAMIApUweRbybG-IDCugHirdEJLuQdLX0fBHihXPDOOSnekCR6pWDmzKiP0lFjHMA6bPUy1A-jaw2zg_ven5_oAXixbdpE7ka5y308LPSD4UM-w6a5eSsHcVHFz1fQlNDtcBG3r1zO2v3hsi-lpS7MhpWe7ti8dT1seujZPrw9axDO50wvEPFHvkvi7nFa09M7qXUal3GWNOcwP1dfKiLey1fo__JVFQTMqyGKriR84pR6wyXkAGQqjhr_qkRnZ3Rf60fvuKH2fwXP5KpP_-7jWy7BSt92QDnZpIcK_PaEJBEvjN798-rNwf_J9wgeMzN2jcavhURKapPE5y9pA4R4TzeCLdnXnaQ6I24gYGX9KSYnLKnDrNnxP9tvsZo04Zir5cqWYEe7TmCg4uB-sXQjy-qWbBCwJKTui0zSDg_tLaJ3jCFDAjQ

How would I go about finding how many calls are being made to files_list_folder and files_list_folder_continue (other than what already exists)?

 

It seems like the script just resorts to /MarketingCreative/External/Bidalgo_Zynga_CSR2 and stays there.

 

I've let it run for 10k+ iterations a couple of times and the same situation.

 

Thanks

Highlighted

Re: Dropbox API not returning all files

Dropboxer

Thanks! Can you share the updated code with this extra logging too? That would help illustrate what exactly is producing this output.

 

As for the number of calls being made, you don't need an actual counter; I just meant to illustrate each call to files_list_folder and files_list_folder_continue, which your logging appears to be doing now. That is, there are apparently an unbounded number of calls, with each one returning a list with just one entry. That can happen, but it shouldn't repeat, as long as you pass the returned cursor back into files_list_folder_continue. You appear to be doing so, so we'll need to debug that further. Seeing where your logging occurs may help. 

Highlighted

Re: Dropbox API not returning all files

Explorer | Level 3

Sure thing, code is here:

 

root_path = '/MarketingCreative/External/Bidalgo_Zynga_CSR2/'

result = dbx.files_list_folder(root_path, recursive=True)


def process_entries(entries):
    for entry in entries:
      print(entry.path_display)
      print(result.cursor)
      if isinstance(entry, dropbox.files.FileMetadata):
        file = entry.path_display.rsplit('/', 1)[1]
        if file.startswith('zas'):
          print(file)

process_entries(result.entries)

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

 

Thing is, I'm trying to get all the files that start with 'zas', and I can do this, if I specify the root folder one level below what I currently have, but that's no good to me as I need all the files within the current root folder.

 

But again, it just seems to be looping infinitely. :/

 

Thanks again for your help

Highlighted

Re: Dropbox API not returning all files

Dropboxer

Thanks, that's helpful. That confirms you're getting one identical entry per page, and a different cursor for each page. 

 

This doesn't reproduce for me, so we'll need to investigate further on the server-side to find out why this is happening for you. I'll follow up here once I have an update for you.

Highlighted

Re: Dropbox API not returning all files

Explorer | Level 3

Hey Greg Any luck on this?

Highlighted

Re: Dropbox API not returning all files

Dropboxer

This is currently open with engineering, but I don't have an update on it yet. I'll follow up here once I do.

Highlighted

Re: Dropbox API not returning all files

Dropboxer

Engineering let me know they're looking into it, but unfortunately we don't have a timeline for a fix right now.

 

That being the case, you may want to use files_search_v2/files_search_continue_v2 as a workaround for now. 

Highlighted

Re: Dropbox API not returning all files

New member | Level 2

Hi where are you with this issue, as we backup our files to dropbox business, and we can no longer do an integrity check to verify our backup from synology.  If you cannot resolve this issue, we will have to go else where as we cannot verify that our files are being backed up, and we cannot afford to loose any data if we have to restore from backup.

Work Smarter with Dropbox

The way we work is changing. Share and discover new ways to work smarter with Dropbox in our community.

Sound good? Let's get started.
Who's talking

Top contributors to this post

What do Dropbox user levels mean?
Need more support?