From be7aea90bbb62aded97f6c284027a2e92cf77adb Mon Sep 17 00:00:00 2001 From: robweber Date: Tue, 6 Nov 2012 11:37:39 -0600 Subject: [PATCH] added "restore" to Dropbox functions --- resources/lib/backup.py | 7 ++++++- resources/lib/vfs.py | 22 +++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/resources/lib/backup.py b/resources/lib/backup.py index 986f893..c57f018 100644 --- a/resources/lib/backup.py +++ b/resources/lib/backup.py @@ -225,7 +225,12 @@ class XbmcBackup: if (aFile.startswith("-")): dest.mkdir(dest.root_path + aFile[1:]) else: - dest.copy(source.root_path + aFile,dest.root_path + aFile) + if(isinstance(source,DropboxFileSystem)): + #if copying from dropbox we need the file handle, use get_file + source.get_file(source.root_path + aFile,dest.root_path + aFile) + else: + #copy using normal method + dest.put(source.root_path + aFile,dest.root_path + aFile) def updateProgress(self,message=''): self.filesLeft = self.filesLeft - 1 diff --git a/resources/lib/vfs.py b/resources/lib/vfs.py index b1aa497..89c6159 100644 --- a/resources/lib/vfs.py +++ b/resources/lib/vfs.py @@ -31,9 +31,12 @@ class Vfs: def mkdir(self,directory): return True - def copy(self,source,dest): + def put(self,source,dest): return True + def getFile(self,source): + return True + def rmdir(self,directory): return True @@ -48,9 +51,9 @@ class XBMCFileSystem(Vfs): def mkdir(self,directory): return xbmcvfs.mkdir(directory) - def copy(self,source,dest): + def put(self,source,dest): return xbmcvfs.copy(source,dest) - + def rmdir(self,directory): return xbmcvfs.rmdir(directory,True) @@ -125,7 +128,7 @@ class DropboxFileSystem(Vfs): else: return False - def copy(self,source,dest): + def put(self,source,dest): if(self.client != None): f = open(source,'rb') try: @@ -137,7 +140,16 @@ class DropboxFileSystem(Vfs): return self.copy(source,dest) else: return False - + + def get_file(self,source,dest): + if(self.client != None): + #write the file locally + out = open(dest,'wb') + f = self.client.get_file(source).read() + out.write(f) + out.close() + else: + return False def setToken(self,key,secret): #write the token files token_file = open(xbmc.translatePath(utils.data_dir() + "tokens.txt"),'w')