From 4c0ef2fe7ab44169338fe5a7ad121807853ef119 Mon Sep 17 00:00:00 2001 From: angelblue05 Date: Sun, 18 Sep 2016 02:53:52 -0500 Subject: [PATCH] Add backup option --- default.py | 3 +- resources/language/English/strings.xml | 5 +++ resources/lib/entrypoint.py | 48 ++++++++++++++++++++++++++ resources/lib/utils.py | 4 +-- resources/settings.xml | 2 ++ 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/default.py b/default.py index ba611fe6..a2fc79bc 100644 --- a/default.py +++ b/default.py @@ -95,7 +95,8 @@ class Main(object): 'refreshplaylist': entrypoint.refreshPlaylist, 'deviceid': entrypoint.resetDeviceId, 'delete': entrypoint.deleteItem, - 'connect': entrypoint.emby_connect + 'connect': entrypoint.emby_connect, + 'backup': entrypoint.emby_backup } if mode in modes: # Simple functions diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml index d15ccde0..80bb6e13 100644 --- a/resources/language/English/strings.xml +++ b/resources/language/English/strings.xml @@ -342,5 +342,10 @@ Remove all cached artwork? Reset all Emby add-on settings? Database reset has completed, Kodi will now restart to apply the changes. + Enter folder name for backup + Replace existing backup? + Create backup at: + Create a backup + Backup folder \ No newline at end of file diff --git a/resources/lib/entrypoint.py b/resources/lib/entrypoint.py index 839e19de..6a14a008 100644 --- a/resources/lib/entrypoint.py +++ b/resources/lib/entrypoint.py @@ -5,6 +5,7 @@ import json import logging import os +import shutil import sys import urlparse @@ -112,6 +113,9 @@ def doMainListing(): addDirectoryItem(lang(33058), "plugin://plugin.video.emby/?mode=reset") addDirectoryItem(lang(33059), "plugin://plugin.video.emby/?mode=texturecache") addDirectoryItem(lang(33060), "plugin://plugin.video.emby/?mode=thememedia") + + if settings('backupPath'): + addDirectoryItem(lang(33092), "plugin://plugin.video.emby/?mode=backup") xbmcplugin.endOfDirectory(int(sys.argv[1])) @@ -135,6 +139,50 @@ def emby_connect(): settings('connectUsername', value=username) +def emby_backup(): + # Create a backup at specified location + path = settings('backupPath') + + # filename + default_value = "Kodi%s.%s" % (xbmc.getInfoLabel('System.BuildVersion')[:2], + xbmc.getInfoLabel('System.Date(dd-mm-yy)')) + filename = dialog(type_="input", + heading=lang(33089), + defaultt=default_value) + if not filename: + return + + backup = os.path.join(path, filename) + log.info("Backup: %s", backup) + + # Create directory + if xbmcvfs.exists(backup+"\\"): + log.info("Existing directory!") + if not dialog(type_="yesno", + heading="{emby}", + line1=lang(33090)): + return emby_backup() + shutil.rmtree(backup) + + # Addon_data + shutil.copytree(src=xbmc.translatePath( + "special://profile/addon_data/plugin.video.emby").decode('utf-8'), + dst=os.path.join(backup, "addon_data", "plugin.video.emby")) + + # Database files + xbmcvfs.mkdir(os.path.join(backup, "Database")) + + shutil.copy(src=utils.getKodiVideoDBPath(), + dst=os.path.join(backup, "Database")) + + if settings('enableMusic') == "true": + shutil.copy(src=utils.getKodiMusicDBPath(), + dst=os.path.join(backup, "Database")) + + dialog(type_="ok", + heading="{emby}", + line1="%s: %s" % (lang(33091), backup)) + ##### Generate a new deviceId def resetDeviceId(): diff --git a/resources/lib/utils.py b/resources/lib/utils.py index 7a975ea7..b1850682 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -50,7 +50,7 @@ def language(string_id): # Central string retrieval - unicode return xbmcaddon.Addon(id='plugin.video.emby').getLocalizedString(string_id) -def dialog(type_, **kwargs): +def dialog(type_, *args, **kwargs): d = xbmcgui.Dialog() @@ -68,7 +68,7 @@ def dialog(type_, **kwargs): 'select': d.select, 'numeric': d.numeric } - return types[type_](**kwargs) + return types[type_](*args, **kwargs) class JSONRPC(object): diff --git a/resources/settings.xml b/resources/settings.xml index 7eae30e8..61d3a542 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -80,5 +80,7 @@ + +