2015-09-17 2 views
1

Я использую клиентскую библиотеку API Google Диска для Python.API Google Диска - извлечение метаданных только для «Моего диска»

Я хочу извлечь метаданные только для текущих файлов в «Мой диск». Однако, используя service.files(). List(), execute() выводит список не только файлов, которые в настоящее время отображаются в «Мой диск», но также и ранее удаленные файлы, а также файлы, хранящиеся в «Google Фото» и «Недавние», ,

Как я могу отфильтровать список полученных файлов для извлечения только тех файлов, которые будут загружены на клиент с установленной синхронизацией на Google Диске?

ответ

1

Обновлено

Я нашел лучший способ получить список элементов, в разделе «Мой диск». Вместо file.list, change.list подходит лучше в нашем случае использования.

Устанавливая includeDeleted и includeSubscribed как false, change.list возвращает список изменений, которые хранят файлы, которые строго расположены в диске пользователя (нет и недавних приложений поделились со мной). Однако он включает в себя разбитые предметы.

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

Оригинал ответа

Ближайший путь, который я нашел это query для 'me' in owners and trashed = false. Этот запрос вернет все файлы в «Мой диск» и (к сожалению) некоторые файлы в «Shared With Me». Затем вы можете построить дерево из папки root и опустить те, которые остались сиротами.

С другой стороны, самый чистый способ - запросить 'root' in parents и пересечь дерево по слоям. Однако это не так эффективно.

Примечание: запрос not sharedWithMe или sharedWithMe = false результатов в 400, в противном случае это будет лучшим решением.

0

Вы можете использовать ресурсы родителя и ребенка, чтобы четко определить, что содержит содержимое «Моего диска» в папке. Кроме того, вы можете использовать метод files.list, в том числе запрос, чтобы исключить помеченные элементы. Просто включите параметр «Q», и список запроса в виде строки:

param = {} 
if page_token: 
    param['pageToken'] = page_token 
param['q'] = 'trashed = false' 
files = service.files().list(**param).execute() 

Вы можете найти более подробную информацию о доступных значениях для запроса here.

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