Если папка, на которую вы ссылаетесь, имеет уникальное имя, вы можете попробовать что-то вроде следующего:
def get_folder(name):
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)
results = service.files().list(
pageSize=10,
q=("name = '{0}'".format(name) +
" and mimeType = 'application/vnd.google-apps.folder'"),
corpora="user",
fields="nextPageToken, files(id, name, webContentLink, " +
"createdTime, modifiedTime)").execute()
items = results.get('files', [])
if not items:
return None
return items[0]
Эта функция указывает тип mime, соответствующий папке на диске, и возвращает первый результат, который соответствуетсобственное имя.Если имя вашей папки не является уникальным, вы можете изменить его, чтобы оно возвращало каждый соответствующий результат.
def get_folder_contents(folder_id):
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)
results = service.files().list(
q=("'{0}' in parents".format(folder_id)),
corpora="user",
fields="nextPageToken, files(id, name, webContentLink, " +
"createdTime, modifiedTime)").execute()
items = results.get('files', [])
if not items:
print('No files found.')
return items
Как только вы узнаете id
папки Drive, вы можете запросить все элементы, которые имеют id
в parents
.С этими двумя функциями вы можете сделать что-то вроде:
folder = get_folder('my_folder_name')
folder_items = get_folder_contents(folder['id'])
for item in folder_items:
# decide if you should download
my_download_function(url=item['webContentLink'])