mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 02:06:09 +00:00
add Special TV Show mapping to Season 100 and use Delete from table for DB reset
This commit is contained in:
parent
ff437bc439
commit
9d2d2788b2
6 changed files with 56 additions and 33 deletions
|
@ -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>
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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")))
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue