2015-10-26 3 views
1

Кому-то, кого я знаю, была нужна программа, в которой перечислены все идентификаторы файлов google файлов в определенной папке. Поэтому я просмотрел веб-сайт google, немного узнал о том, как это сделать на python, и придумал программу. Проблема заключается в том, что, кажется, предел, но один я не могу понять:Ограничения с помощью API Google Диска

Если я использую этот код:

credentials = get_credentials() 
http = credentials.authorize(httplib2.Http()) 
service = discovery.build('drive', 'v2', http=http) 

par = {'maxResults':1000} 
results = service.files().list(**par).execute() 
items = results.get('items', []) 
folders = {} 
if not items: 
    print('No files found.') 
else: 
    print("There is "+str(len(items))+" items") 

Где я взял get_credentials() на образце сайте developper Google , дело в том, что я точно знаю, что диск, который у меня есть, имеет более 1000 файлов, но программа говорит мне There is 460 items, есть ли способ, которым это логично, что он ограничивается 460?

ответ

2

Я не занимаюсь Python, но думаю, что вам не хватает логики nextPage. Смотри, (по крайней мере, в Java) список возвращает одну «страницу» результатов, в то время, так что должен быть другой цикл, который извлекает следующую страницу (если таковая имеется), как:

void list(String prnId) { 
     String qryClause = "'me' in owners and '" + prnId + "' in parents"; 
     Drive.Files.List qry = mGOOSvc.files().list() 
      .setQ("'me' in owners and '" + prnId + "' in parents") 
      .setFields("items, nextPageToken"); 
     String npTok = null; 
     do { 
     FileList gLst = qry.execute(); 
     if (gLst != null) { 
      // BINGO - file list, but only one page worth 
      npTok = gLst.getNextPageToken(); //GET POINTER TO THE NEXT PAGE 
      qry.setPageToken(npTok); 
     } 
     } while (npTok != null && npTok.length() > 0); 
    } 

См. 'do while()' петля и 'BINGO' комментарий? Попытайтесь внедрить его в свой PY-код (и не забудьте попросить «nextPageToken» получить его).

Также есть отличный инструмент, TryIt! в нижней части this page, где вы можете протестировать всевозможные вещи.

Good Luck

+0

Если это что-то вроде IOS SDK, размер страницы по умолчанию 100 файлов с максимумом 1000 без подкачки. –

1

У меня такая же проблема, я продолжаю получать 460 результаты, даже если я устанавливаю maxResults 1000 ...

Согласно документации: «maxResults: Максимальное количество файлов для возврата. Допустимые значения от 0 до 1000 включительно (по умолчанию: 100).»

https://developers.google.com/drive/v2/reference/files/list

+0

У меня также есть эта проблема, и я использую собственный пример кода Google для обработки nextPageTokens. Могли ли вы решить эту проблему для своего кода? Как ты сделал это? – deltaray

+0

У меня тоже такая же проблема –

+0

У меня такая же проблема – bvstone

Смежные вопросы