|
|
|
@ -116,7 +116,7 @@ class drive_api(API): |
|
|
|
self.root = drive_folder.from_id('root',self,None) |
|
|
|
root |
|
|
|
|
|
|
|
def get_file_by_path(self,path,ret_file = True,no_parent = True): |
|
|
|
def get_file_by_path(self,path,ret_file = True): |
|
|
|
if path == '/': |
|
|
|
return self.root |
|
|
|
'''gets a file or folder by remote path''' |
|
|
|
@ -138,18 +138,13 @@ class drive_api(API): |
|
|
|
raise FileNotFoundError |
|
|
|
try: |
|
|
|
if ret_file: |
|
|
|
if not 'files' in parent.keys(): |
|
|
|
self.__fill_in__(parent) |
|
|
|
ret = parent['files'][end] |
|
|
|
if no_parent: |
|
|
|
ret = without(ret,'parent') |
|
|
|
|
|
|
|
if not parent.files: |
|
|
|
parent.refresh() |
|
|
|
ret = parent.files[end] |
|
|
|
else: |
|
|
|
if not 'folders' in parent.keys(): |
|
|
|
self.__fill_in__(parent) |
|
|
|
ret = parent['folders'][end] |
|
|
|
if no_parent: |
|
|
|
ret[0] = without(ret[0],'parent') |
|
|
|
if not parent.folders: |
|
|
|
parent.refresh() |
|
|
|
ret = parent.folders[end] |
|
|
|
return ret |
|
|
|
except KeyError: |
|
|
|
raise FileNotFoundError |
|
|
|
@ -163,21 +158,13 @@ class drive_api(API): |
|
|
|
missing = [] |
|
|
|
for i in range(len(path),-1,-1): |
|
|
|
try: |
|
|
|
parent = self.get_file_by_path(path[:i],False,no_parent = False) |
|
|
|
parent = self.get_file_by_path(path[:i],False) |
|
|
|
break |
|
|
|
except FileNotFoundError: |
|
|
|
missing.append(path[i-1]) |
|
|
|
while len(missing) > 0: |
|
|
|
|
|
|
|
new_folder = {'folders':{},'files':{}} |
|
|
|
new_folder['parent'] = parent |
|
|
|
name = missing.pop() |
|
|
|
new_meta = self.__create_remote_folder__(name,parent) |
|
|
|
del new_meta['name'] |
|
|
|
del new_meta['kind'] |
|
|
|
new_folder[0] = new_meta |
|
|
|
parent['folders'][name] = new_folder |
|
|
|
parent = new_folder |
|
|
|
parent = parent.folders[name] |
|
|
|
return parent |
|
|
|
def upload(self,local_path,remote_path): |
|
|
|
if not isinstance(remote_path,str): |
|
|
|
@ -223,14 +210,6 @@ class drive_api(API): |
|
|
|
parent['files'][end] = new_f_meta |
|
|
|
return new_f_meta |
|
|
|
|
|
|
|
def __create_remote_folder__(self,name,parent): |
|
|
|
|
|
|
|
|
|
|
|
def __fill_in__(self,parent): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
my_api = drive_api(APPLICATION_NAME,r'..\test\drive\client_secret.json',r'..\test\drive') |
|
|
|
service = my_api.service |