add Special TV Show mapping to Season 100 and use Delete from table for DB reset

This commit is contained in:
shaun 2015-04-12 18:34:00 +10:00
parent ff437bc439
commit 9d2d2788b2
6 changed files with 56 additions and 33 deletions

View file

@ -238,12 +238,12 @@
<string id="30237">Sync Extra Fanart</string>
<string id="30238">Sync Movie BoxSets</string>
<string id="30239">Reset</string>
<string id="30239">Reset Local Kodi DB</string>
<string id="30240">Enable watched/resume status sync</string>
<string id="30241">DB Sync Indication:</string>
<string id="30242">Play Count Sync Indication:</string>
<string id="30243">Enable HTTPS</string>
<string id="30244">Use Season 100 for TV Show Specials (Requires Reset)</string>
<!-- Default views -->
<string id="30300">Active</string>

View file

@ -129,15 +129,19 @@ class ConnectionManager():
xbmc.executebuiltin('Addon.OpenSettings(%s)' % self.addonId)
return
#TV Show specual as season 100
setSpecialAction = xbmcgui.Dialog().yesno("TV Show Specials Handling", "Use season 100 for TV Show Specials?")
if setSpecialAction == 1:
self.logMsg("TV Show Specials will be assigned season 100", 0)
addon.setSetting("useSeason100ForSpecials", "true")
# Option to play from http
setPlayback = xbmcgui.Dialog().yesno("Playback option", "Play your files using HTTP?")
if setPlayback == 1:
self.logMsg("Playback will be set using HTTP.", 1)
addon.setSetting("playFromStream", "true")
return
else:
self.logMsg("Playback will be set using SMB.", 1)
return
def getServerDetails(self):

View file

@ -164,9 +164,30 @@ class ReadEmbyDB():
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
result = self.changeSeasonSpecialToSeason100(result)
return result
def changeSeasonSpecialToSeason100(self, result):
addon = xbmcaddon.Addon(id='plugin.video.emby')
if(addon.getSetting("useSeason100ForSpecials") != "true"):
return result
for item in result:
if(item != None and item.get("IndexNumber") != None and item.get("IndexNumber") == 0):
item["IndexNumber"] = 100
return result
def changeEpisodeSpecialToSeason100(self, result):
addon = xbmcaddon.Addon(id='plugin.video.emby')
if(addon.getSetting("useSeason100ForSpecials") != "true"):
return result
for item in result:
if(item != None and item.get("ParentIndexNumber") != None and item.get("ParentIndexNumber") == 0):
item["ParentIndexNumber"] = 100
return result
def getEpisodes(self, showId, fullinfo = False):
result = None
@ -189,6 +210,8 @@ class ReadEmbyDB():
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
result = self.changeEpisodeSpecialToSeason100(result)
return result
def getLatestEpisodes(self, fullinfo = False, itemList = []):
@ -217,6 +240,8 @@ class ReadEmbyDB():
result = json.loads(jsonData)
if(result.has_key('Items')):
result = result['Items']
result = self.changeEpisodeSpecialToSeason100(result)
return result
def getCollections(self, type):

View file

@ -170,37 +170,26 @@ def reset():
dialog.ok('Warning', 'Could not stop DB sync, you should try again.')
return
xbmc.sleep(1000)
# delete db table data
print "Doing DB Reset"
connection = KodiSQL()
cursor = connection.cursor( )
cursor.execute('SELECT tbl_name FROM sqlite_master WHERE type="table"')
rows = cursor.fetchall()
for row in rows:
tableName = row[0]
print tableName
if(tableName != "version"):
cursor.execute("DELETE FROM " + tableName)
connection.commit()
cursor.close()
# remove from addon data directory
# reset the install run flag
addon = xbmcaddon.Addon(id='plugin.video.emby')
addondir = xbmc.translatePath(addon.getAddonInfo('profile'))
dataPath = os.path.join(addondir + os.sep)
removeDirectory(dataPath)
# delete db
deletecount = 0
deleted = False
while(deleted == False):
try:
xbmcvfs.delete(getKodiDBPath())
deleted = True
except:
deletecount += 1
if(deletecount > 10):
dialog = xbmcgui.Dialog()
dialog.ok('Warning', 'Could not delete Database, please try again later')
return
xbmc.sleep(1000)
# extra check on the database to see it has been removed
if xbmcvfs.exists(getKodiDBPath()):
dialog = xbmcgui.Dialog()
dialog.ok('Error', 'The video database could not be deleted, this will need to be done manually. Remove: '+getKodiDBPath() + ' then restart Kodi')
return
# remove old entries from sources.xml
addon.setSetting("SyncInstallRunDone", "false") # this is not working for some reason
dialog = xbmcgui.Dialog()
dialog.ok('Emby Reset', 'Reset of Emby has completed, kodi will now restart to apply the changes.')
dialog.ok('Emby Reset', 'Database reset has completed, kodi will now restart to apply the changes.')
xbmc.executebuiltin("RestartApp")

View file

@ -1087,6 +1087,10 @@ class WriteKodiDB():
seasonid = seasonid + 1
cursor.execute("INSERT into seasons(idSeason, idShow, season) values(?, ?, ?)", (seasonid, tvshowid, season["IndexNumber"]))
# this is for handling specials as season 100, it allows art to be correctly set form the season 0 Emby data
if(season["IndexNumber"] == 100):
season["IndexNumber"] = 0
#insert artwork
if API().getArtwork(season, "Thumb") != "":
cursor.execute("INSERT into art(media_id, media_type, type, url) values(?, ?, ?, ?)", (seasonid,"season","landscape",API().getArtwork(season, "Thumb")))

View file

@ -13,6 +13,7 @@
<category label="Sync Options">
<!-- <setting id="syncMovieBoxSets" type="bool" label="30238" default="true" visible="true" enable="true" /> -->
<setting id="enablePlayCountSync" type="bool" label="30240" default="true" visible="true" enable="true" />
<setting id="useSeason100ForSpecials" type="bool" label="30244" default="false" visible="true" enable="true" />
<setting id="dbSyncIndication" type="labelenum" label="30241" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
<setting id="playCountSyncIndication" type="labelenum" label="30242" values="None|Notify OnChange|Notify OnFinish|BG Progress|Dialog Progress" default="None" />
</category>