mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-06-18 06:06:14 +00:00
fixed the plugin path for playback
This commit is contained in:
parent
cf2c5ef701
commit
b4dd9f58bd
5 changed files with 119 additions and 582 deletions
|
@ -16,229 +16,28 @@ import Utils as utils
|
|||
sleepVal = 15
|
||||
|
||||
class ReadKodiDB():
|
||||
|
||||
def getKodiMovie(self, id):
|
||||
#returns a single movie from Kodi db selected on MB item ID
|
||||
xbmc.sleep(sleepVal)
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": { "properties" : ["art", "rating", "thumbnail", "fanart", "resume", "runtime", "year", "genre", "cast", "trailer", "country", "studio", "set", "imdbnumber", "mpaa", "tagline", "plotoutline","plot", "sorttitle", "director", "lastplayed", "writer", "playcount", "tag", "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libMovies"}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
movie = None
|
||||
|
||||
if(jsonobject.has_key('result')):
|
||||
result = jsonobject['result']
|
||||
if(result.has_key('movies')):
|
||||
movies = result['movies']
|
||||
movie = movies[0]
|
||||
for item in movies:
|
||||
if id in item["file"]:
|
||||
movie = item
|
||||
break
|
||||
return movie
|
||||
|
||||
def getEmbyIdByKodiId(self, kodiid, type):
|
||||
embyId = None
|
||||
connection = utils.KodiSQL()
|
||||
cursor = connection.cursor()
|
||||
|
||||
if type == "movie":
|
||||
cursor.execute("SELECT embyId as embyId FROM movie WHERE idMovie = ?",(kodiid,))
|
||||
if type == "episode":
|
||||
cursor.execute("SELECT embyId as embyId FROM episode WHERE idEpisode = ?",(kodiid,))
|
||||
if type == "musicvideo":
|
||||
cursor.execute("SELECT embyId as embyId FROM musicvideo WHERE idMVideo = ?",(kodiid,))
|
||||
if type == "tvshow":
|
||||
cursor.execute("SELECT embyId as embyId FROM tvshow WHERE idShow = ?",(kodiid,))
|
||||
|
||||
result = cursor.fetchone()
|
||||
cursor.close()
|
||||
if result != None:
|
||||
embyId = result[0]
|
||||
|
||||
return embyId
|
||||
|
||||
|
||||
def getKodiMovies(self, connection, cursor):
|
||||
#returns all movies in Kodi db
|
||||
cursor.execute("SELECT idMovie, embyId, c00 FROM movie")
|
||||
cursor.execute("SELECT kodi_id, emby_id, checksum FROM emby WHERE media_type='movie'")
|
||||
allmovies = cursor.fetchall()
|
||||
#this will return a list with tuples of all items returned from the database
|
||||
return allmovies
|
||||
|
||||
def getKodiMoviesIds(self,returnMB3Ids = False):
|
||||
# returns a list of movieIds or MB3 Id's from all movies currently in the Kodi library
|
||||
allKodiMovies = self.getKodiMovies(False)
|
||||
|
||||
if(allKodiMovies == None):
|
||||
return list()
|
||||
|
||||
if(returnMB3Ids):
|
||||
allKodiMovieIds = list(allKodiMovies.keys())
|
||||
return allKodiMovieIds
|
||||
else:
|
||||
allKodiMovieIds = list()
|
||||
for kodimovie in allKodiMovies.values():
|
||||
id = str(kodimovie["movieid"])
|
||||
allKodiMovieIds.append(id)
|
||||
|
||||
return allKodiMovieIds
|
||||
|
||||
def getKodiTvShowsIds(self,returnMB3Ids = False):
|
||||
# returns a list of tvshowIds or MB3 Id's from all tvshows currently in the Kodi library
|
||||
allKodiTvShows = self.getKodiTvShows(False)
|
||||
|
||||
if allKodiTvShows == None:
|
||||
return list()
|
||||
|
||||
if(returnMB3Ids):
|
||||
allKodiTvShowsIds = list(allKodiTvShows.keys())
|
||||
return allKodiTvShowsIds
|
||||
else:
|
||||
allKodiTvShowsIds = list()
|
||||
for kodishow in allKodiTvShows.values():
|
||||
id = str(kodishow["tvshowid"])
|
||||
allKodiTvShowsIds.append(id)
|
||||
|
||||
return allKodiTvShowsIds
|
||||
|
||||
def getKodiTvShows(self, connection, cursor):
|
||||
cursor.execute("SELECT idShow, embyId, c00 FROM tvshow")
|
||||
cursor.execute("SELECT kodi_id, emby_id, checksum FROM emby WHERE media_type='tvshow'")
|
||||
allshows = cursor.fetchall()
|
||||
#this will return a list with tuples of all items returned from the database
|
||||
return allshows
|
||||
|
||||
def getKodiTVShow(self, id):
|
||||
xbmc.sleep(sleepVal)
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "properties": ["art", "genre", "plot", "mpaa", "cast", "studio", "sorttitle", "title", "originaltitle", "imdbnumber", "year", "lastplayed", "premiered", "rating", "thumbnail", "playcount", "file", "fanart", "tag"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libTvShows"}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
tvshow = None
|
||||
if(jsonobject.has_key('result')):
|
||||
result = jsonobject['result']
|
||||
if(result.has_key('tvshows')):
|
||||
tvshows = result['tvshows']
|
||||
for show in tvshows:
|
||||
if show["imdbnumber"] == id:
|
||||
tvshow = show
|
||||
break
|
||||
return tvshow
|
||||
|
||||
def getKodiEpisodes(self, connection, cursor, showid):
|
||||
cursor.execute("SELECT idEpisode, embyId, c00 FROM episode WHERE idShow = ?", (showid,))
|
||||
|
||||
def getKodiEpisodes(self, connection, cursor, showid=None):
|
||||
|
||||
if showid == None:
|
||||
cursor.execute("SELECT kodi_id, emby_id, checksum FROM emby WHERE media_type=?",("episode",))
|
||||
else:
|
||||
cursor.execute("SELECT kodi_id, emby_id, checksum FROM emby WHERE media_type=? AND parent_id=?",("episode", showid))
|
||||
allepisodes = cursor.fetchall()
|
||||
#this will return a list with tuples of all items returned from the database
|
||||
return allepisodes
|
||||
|
||||
def getKodiEpisodeByMbItem(self, episodeid, tvshowid):
|
||||
episode = None
|
||||
tvshow = self.getKodiTVShow(tvshowid)
|
||||
|
||||
if tvshow != None:
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": ' + str(tvshow['tvshowid']) + ', "properties": ["playcount","season", "resume", "episode", "lastplayed", "uniqueid", "file"], "sort": {"method": "episode"}}, "id": 1}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
if(jsonobject.has_key('result')):
|
||||
result = jsonobject['result']
|
||||
if(result.has_key('episodes')):
|
||||
episodes = result['episodes']
|
||||
for ep in episodes:
|
||||
if ep["uniqueid"]["unknown"] == episodeid:
|
||||
episode = ep
|
||||
break
|
||||
|
||||
return episode
|
||||
|
||||
def getKodiEpisodeByMbItemEx(self, id):
|
||||
connection = utils.KodiSQL()
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("SELECT idEpisode FROM episode WHERE c20 = ?", (id,))
|
||||
result = cursor.fetchone()
|
||||
kodiId = None
|
||||
if result != None:
|
||||
kodiId = result[0]
|
||||
cursor.close()
|
||||
|
||||
episode = None
|
||||
if(kodiId != None):
|
||||
print "Kodi Episode ID : " + str(kodiId)
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"episodeid": %d, "properties": ["playcount", "season", "resume", "episode", "lastplayed", "uniqueid", "file"]}, "id": 1}' %kodiId)
|
||||
#json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"episodeid": ' + str(kodiId) + ', "properties": ["playcount", "season", "resume", "episode", "lastplayed", "uniqueid", "file"], "sort": {"method": "episode"}}, "id": 1}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
print "Kodi_Item: " + str(jsonobject)
|
||||
if(jsonobject.has_key("result")):
|
||||
result = jsonobject["result"]
|
||||
if(result.has_key("episodedetails")):
|
||||
episode = result["episodedetails"]
|
||||
|
||||
return episode
|
||||
|
||||
def getKodiMusicVideo(self, id):
|
||||
#returns a single musicvideo from Kodi db selected on MB item ID
|
||||
xbmc.sleep(sleepVal)
|
||||
#get the mediabrowser ID from DB
|
||||
connection = utils.KodiSQL()
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("SELECT idMVideo as musicvideoid FROM musicvideo WHERE c23 = ?",(id,))
|
||||
result = cursor.fetchone()
|
||||
musicvideoid = None
|
||||
if result != None:
|
||||
musicvideoid = result[0]
|
||||
cursor.close()
|
||||
|
||||
musicvideo = None
|
||||
|
||||
if musicvideoid != None:
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideosDetails", "params": { "musicvideoid": ' + musicvideoid + ', "properties" : ["art", "thumbnail", "fanart", "resume", "runtime", "year", "genre", "studio", "artist", "album", "track","plot", "director", "playcount", "lastplayed", "tag", "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libMusicVideos"}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
musicvideo = None
|
||||
|
||||
if(jsonobject.has_key('result')):
|
||||
result = jsonobject['result']
|
||||
if(result.has_key('musicvideodetails')):
|
||||
musicvideo = result['musicvideodetails']
|
||||
|
||||
return musicvideo
|
||||
|
||||
def getKodiMusicVideos(self,fullInfo = False):
|
||||
#returns all musicvideos in Kodi db inserted by MB
|
||||
xbmc.sleep(sleepVal)
|
||||
if fullInfo:
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": { "properties" : ["art", "thumbnail", "fanart", "resume", "runtime", "year", "genre", "studio", "artist", "album", "track", "lastplayed", "plot", "director", "playcount", "tag", "file"] }, "id": "libMusicVideos"}')
|
||||
else:
|
||||
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": { "properties" : ["resume", "playcount", "lastplayed", "file", "track"] }, "id": "libMusicVideos"}')
|
||||
jsonobject = json.loads(json_response.decode('utf-8','replace'))
|
||||
musicvideos = None
|
||||
if(jsonobject.has_key('result')):
|
||||
result = jsonobject['result']
|
||||
if(result.has_key('musicvideos')):
|
||||
musicvideos = result['musicvideos']
|
||||
|
||||
kodiMusicVideoMap = None
|
||||
if(musicvideos != None and len(musicvideos) > 0):
|
||||
kodiMusicVideoMap = {}
|
||||
connection = utils.KodiSQL()
|
||||
cursor = connection.cursor()
|
||||
for kodivideo in musicvideos:
|
||||
cursor.execute("SELECT c23 as MBid FROM musicvideo WHERE idMVideo = ?",(kodivideo["musicvideoid"],))
|
||||
result = cursor.fetchone()
|
||||
if result != None:
|
||||
key = result[0]
|
||||
kodiMusicVideoMap[key] = kodivideo
|
||||
|
||||
cursor.close()
|
||||
return kodiMusicVideoMap
|
||||
|
||||
def getKodiMusicVideoIds(self,returnMB3Ids = False):
|
||||
# returns a list of movieIds or MB3 Id's from all movies currently in the Kodi library
|
||||
allKodiMusicVideos = self.getKodiMusicVideos(False)
|
||||
|
||||
if(allKodiMusicVideos == None):
|
||||
return list()
|
||||
|
||||
if(returnMB3Ids):
|
||||
allKodiMusicVideoIds = list(allKodiMusicVideos.keys())
|
||||
return allKodiMusicVideoIds
|
||||
else:
|
||||
allKodiMusicVideoIds = list()
|
||||
for kodivideo in allKodiMusicVideos.values():
|
||||
id = str(kodivideo["musicvideoid"])
|
||||
allKodiMusicVideoIds.append(id)
|
||||
|
||||
return allKodiMusicVideoIds
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue