From 6b6f77dbffeb5af7af9fae98d4a1478c07ef5e86 Mon Sep 17 00:00:00 2001
From: im85288 <ianmalcolmmclaughlin@gmail.com>
Date: Thu, 2 Apr 2015 20:47:06 +0100
Subject: [PATCH] added reset settings - still needs a bit of work

---
 default.py             |  18 +++--
 resources/lib/Utils.py | 177 ++++++++++++++++++++++++++++++++++++++++-
 resources/settings.xml |  35 +++-----
 3 files changed, 197 insertions(+), 33 deletions(-)

diff --git a/default.py b/default.py
index ea062d05..300619d7 100644
--- a/default.py
+++ b/default.py
@@ -17,15 +17,19 @@ WINDOW = xbmcgui.Window( 10000 )
 import Utils as utils
 from PlaybackUtils import PlaybackUtils
 
-# get the actions... 
-params=utils.get_params(sys.argv[2])
+try:
+    params=utils.get_params(sys.argv[2])
+    mode = params.get('mode',"")
+    id = params.get('id',"")
+except:
+    params={}
+    mode=None
+    id=None
 
-mode = params.get('mode',"")
-id = params.get('id',"")
-
-if mode == "play":
+if  mode != None and mode == "play":
     PlaybackUtils().PLAY(id)
-    
+elif sys.argv[1] == "reset":
+    utils.reset()
 else:
     xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)')
 
diff --git a/resources/lib/Utils.py b/resources/lib/Utils.py
index 0ad9acad..727c311e 100644
--- a/resources/lib/Utils.py
+++ b/resources/lib/Utils.py
@@ -72,7 +72,7 @@ def checkAuthentication():
         try:
             downloadUtils.authenticate()
         except Exception, e:
-            logMsg("MB3 Syncer authentication failed",e)
+            logMsg("Emby authentication failed",e)
             pass
     
 def prettifyXml(elem):
@@ -148,3 +148,178 @@ def removeDirectory(path):
             xbmcvfs.delete(os.path.join(path,file))
         
         xbmcvfs.rmdir(path)
+        
+def reset():
+    # clear video database
+    connection = KodiSQL()
+    cursor = connection.cursor()
+    try:
+        cursor.execute("DROP TABLE episode;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE movie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE tvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE actors;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE actorlinkepisode;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE actorlinkmovie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE actorlinktvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE art;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE artistlinkmusicvideo;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE countrylinkmovie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE directorlinkepisode;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE directorlinkmovie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE directorlinkmusicvideo;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE directorlinktvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE files;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE genre;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE genrelinkmovie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE genrelinkmusicvideo;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE genrelinktvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE movielinktvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE musicvideo;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE path;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE seasons;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE sets;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE stacktimes;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE streamdetails;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE studio;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE studiolinkmovie;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE studiolinkmusicvideo;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE studiolinktvshow;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE tag;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE taglinks;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE tvshowlinkepisode;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE tvshowlinkpath;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE version;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE writerlinkepisode;")
+    except:
+        pass
+    try:
+        cursor.execute("DROP TABLE writerlinkmovie;")  
+    except:
+        pass
+    
+    try:
+        connection.commit()
+        logMsg("Emby","Removed tables from kodi database")
+    finally:
+        cursor.close()
+        
+    # check for old library folder and delete if present
+    addon = xbmcaddon.Addon(id='plugin.video.emby')
+    addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
+    dataPath = os.path.join(addondir,"library" + os.sep)
+    removeDirectory(dataPath)
+    
+    # remove old entries from sources.xml
+    
+    # reset addon settings values
+    addon.setSetting("SyncInstallRunDone", "false") 
+    addon.setSetting("SyncFirstCountsRunDone", "false")
+    
+    dialog = xbmcgui.Dialog()
+    dialog.ok('Emby Reset', 'Reset of Emby has completed, please restart.')
+     
diff --git a/resources/settings.xml b/resources/settings.xml
index ffd37be1..611237bb 100644
--- a/resources/settings.xml
+++ b/resources/settings.xml
@@ -1,47 +1,32 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <settings>
-
 	<category label="30014"> <!-- Emby -->
 		<setting id="ipaddress" type="text" label="30000" default="" visible="true" enable="true" />
 		<setting id="port" type="text" label="30030" default="8096" visible="true" enable="true" />
 		<setting id="https" type="bool" label="Enable HTTPS" visible="true" enable="true" />
 		<setting type="sep" />
 		<setting id="username" type="text" label="30024" />
-        <setting type="sep" />
-        <setting id="deviceName" type="text" label="30016" default="Kodi"/>
+		<setting type="sep" />
+		<setting id="deviceName" type="text" label="30016" default="Kodi" />
 	</category>
-
-	<!--
-	<category label="Manual sync">
-		<setting label="Run manual full sync now" type="action" action="RunScript(plugin.video.mbsync, fullsync)" />
-		<setting label="Run manual incremental sync now" type="action" action="RunScript(plugin.video.mbsync, incrementalsync)" />
-		<setting label="Reset entire local library" type="action" action="RunScript(plugin.video.mbsync, reset)" />
-	</category>
-	-->
-	
+	<!-- <category label="Manual sync"> <setting label="Run manual full sync now" type="action" action="RunScript(plugin.video.mbsync, fullsync)" /> <setting label="Run manual incremental sync now" type="action" action="RunScript(plugin.video.mbsync, incrementalsync)" /> <setting label="Reset entire local library" type="action" action="RunScript(plugin.video.mbsync, reset)" /> </category> -->
 	<category label="Sync Options">
-	
 		<!-- thememusic and extrafanart sync no longer needed when we use the native playback -->
 		<setting id="syncThemeMusic" type="bool" label="30236" default="false" visible="false" enable="true" />
 		<setting id="syncExtraFanart" type="bool" label="30237" default="false" visible="false" enable="true" />
-		
-		<setting id="syncMovieBoxSets" type="bool" label="30238" default="false" visible="true" enable="true" />	
+		<setting id="syncMovieBoxSets" type="bool" label="30238" default="false" visible="true" enable="true" />
 		<setting id="enablePlayCountSync" type="bool" label="Enable watched/resume status sync" default="true" visible="true" enable="true" />
-        <setting id="dbSyncIndication" type="labelenum" label="DB Sync Indication:" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
-        <setting id="playCountSyncIndication" type="labelenum" label="Play Count Sync Indication:" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
+		<setting id="dbSyncIndication" type="labelenum" label="DB Sync Indication:" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
+		<setting id="playCountSyncIndication" type="labelenum" label="Play Count Sync Indication:" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
 	</category>
-	
 	<category label="Playback"> <!-- Extra Sync options -->
-		
 		<!-- addExtraPlaybackArt no longer needed when we use the native playback -->
 		<setting id="addExtraPlaybackArt" type="bool" label="Add extra playback art" default="true" visible="false" enable="true" />
-		
 		<setting id="smbusername" type="text" label="30007" default="" visible="true" enable="true" />
 		<setting id="smbpassword" type="text" label="30008" default="" option="hidden" visible="true" enable="true" />
 	</category>
-
-	<category label="30022"> 
-		<setting id="logLevel" type="enum" label="30004" values="None|Info|Debug" default="0" />       
+	<category label="30022">
+		<setting id="logLevel" type="enum" label="30004" values="None|Info|Debug" default="0" />
+		<setting label="Reset entire local library" type="action" action="RunScript(plugin.video.emby, reset)" />
 	</category>
-
-</settings>
+</settings>
\ No newline at end of file