|
|
|
@ -60,31 +60,33 @@ class drive_api(API): |
|
|
|
else: |
|
|
|
if not 'folders' in parent.keys(): |
|
|
|
self.__fill_in__(parent) |
|
|
|
ret = parent['folders'][end][0] |
|
|
|
ret = parent['folders'][end] |
|
|
|
if no_parent: |
|
|
|
ret = without(ret,'parent') |
|
|
|
ret[0] = without(ret[0],'parent') |
|
|
|
return ret |
|
|
|
except KeyError: |
|
|
|
raise FileNotFoundError() |
|
|
|
|
|
|
|
def upload(self,local_path,remote_path): |
|
|
|
isdir = os.path.isdir(local_path) |
|
|
|
try: |
|
|
|
fid = get_file_by_path(remote_path) |
|
|
|
except FileNotFoundError: |
|
|
|
pass |
|
|
|
|
|
|
|
def mkdirs(self,path): |
|
|
|
'''makes directories if they do not exist already''' |
|
|
|
if isinstance(path,str): |
|
|
|
path = split_path(path) |
|
|
|
missing = [] |
|
|
|
for i in range(len(path),-1,-1): |
|
|
|
try: |
|
|
|
parent = self.get_file_by_path(path[:i],True) |
|
|
|
parent = self.get_file_by_path(path[:i],False,no_parent = False) |
|
|
|
break |
|
|
|
except FileNotFoundError: |
|
|
|
missing.append(path[i-1]) |
|
|
|
while len(missing) > 0: |
|
|
|
new_folder = {} |
|
|
|
|
|
|
|
new_folder = {'folders':{}} |
|
|
|
name = missing.pop() |
|
|
|
new_meta = self.__create_remote_folder__(name,parent) |
|
|
|
del new_meta['name'] |
|
|
|
@ -92,14 +94,14 @@ class drive_api(API): |
|
|
|
new_folder[0] = new_meta |
|
|
|
parent['folders'][name] = new_folder |
|
|
|
parent = new_folder |
|
|
|
|
|
|
|
return parent |
|
|
|
def __create_remote_folder__(self,name,parent): |
|
|
|
meta = { |
|
|
|
'name':name, |
|
|
|
'mimeType':'application/vnd.google-apps.folder', |
|
|
|
'parents' : [parent[0]['id']] |
|
|
|
} |
|
|
|
return self.files().create(body = meta).execute() |
|
|
|
return self.service.files().create(body = meta).execute() |
|
|
|
|
|
|
|
# finds all files and folders from a parent |
|
|
|
def __fill_in__(self,parent): |
|
|
|
@ -122,7 +124,7 @@ class drive_api(API): |
|
|
|
first = True |
|
|
|
while page_token or first: |
|
|
|
first = False |
|
|
|
response = self.service.files().list(q = "'{}' in parents".format(parent_id),pageToken=page_token).execute() |
|
|
|
response = self.service.files().list(q = "'{}' in parents and trashed = false".format(parent_id),pageToken=page_token).execute() |
|
|
|
page_token = response.get('nextPageToken',None) |
|
|
|
for file in response['files']: |
|
|
|
yield file |
|
|
|
|