Merge branch 'fix/cast-not-available-mediaType-scrapper-parentTrail'

This commit is contained in:
GrégoireDruant 2023-05-07 13:29:22 +02:00
commit dd66f50299
5 changed files with 56 additions and 7 deletions

View file

@ -71,6 +71,15 @@ class JellyfinDatabase():
except TypeError: except TypeError:
return return
def get_episode_kodi_parent_path_id(self, *args):
try:
self.cursor.execute(QU.get_episode_kodi_parent_path_id, args)
return self.cursor.fetchone()[0]
except TypeError:
return
def get_full_item_by_kodi_id(self, *args): def get_full_item_by_kodi_id(self, *args):
try: try:

View file

@ -166,3 +166,17 @@ WHERE jellyfin_parent_id = ?
delete_version = """ delete_version = """
DELETE FROM version DELETE FROM version
""" """
get_episode_kodi_parent_path_id = """
SELECT sh.kodi_pathid
FROM jellyfin e
JOIN jellyfin s
ON e.parent_id = s.kodi_id
JOIN jellyfin sh
ON s.parent_id = sh.kodi_id
WHERE e.media_type = ?
AND s.media_type = ?
AND sh.media_type = ?
AND e.jellyfin_id = ?;
"""
get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"]

View file

@ -77,6 +77,9 @@ class Kodi(object):
except TypeError: except TypeError:
return return
def update_path_parent_id(self, path_id, parent_path_id):
self.cursor.execute(QU.update_path_parent_id, (parent_path_id, path_id))
def update_path(self, *args): def update_path(self, *args):
self.cursor.execute(QU.update_path, args) self.cursor.execute(QU.update_path, args)

View file

@ -334,17 +334,22 @@ VALUES (?, ?, ?)
""" """
add_episode = """ add_episode = """
INSERT INTO episode(idEpisode, idFile, c00, c01, c03, c04, c05, c09, c10, c12, c13, c14, INSERT INTO episode(idEpisode, idFile, c00, c01, c03, c04, c05, c09, c10, c12, c13, c14,
idShow, c15, c16, idSeason) idShow, c15, c16, idSeason, c18, c19, c20)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""" """
add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}",
"{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}", "{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}",
"{AirsBeforeEpisode}", "{SeasonId}"] "{AirsBeforeEpisode}", "{SeasonId}", "{FullFilePath}", "{PathId}", "{Unique}"]
add_art = """ add_art = """
INSERT INTO art(media_id, media_type, type, url) INSERT INTO art(media_id, media_type, type, url)
VALUES (?, ?, ?, ?) VALUES (?, ?, ?, ?)
""" """
update_path_parent_id = """
UPDATE path
SET idParentPath = ?
where idPath = ?
"""
update_path = """ update_path = """
UPDATE path UPDATE path
@ -353,8 +358,8 @@ WHERE idPath = ?
""" """
update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"]
update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"]
update_path_tvshow_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"]
update_path_episode_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"]
update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"] update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"]
update_file = """ update_file = """
@ -469,12 +474,13 @@ WHERE idSeason = ?
update_episode = """ update_episode = """
UPDATE episode UPDATE episode
SET c00 = ?, c01 = ?, c03 = ?, c04 = ?, c05 = ?, c09 = ?, c10 = ?, SET c00 = ?, c01 = ?, c03 = ?, c04 = ?, c05 = ?, c09 = ?, c10 = ?,
c12 = ?, c13 = ?, c14 = ?, c15 = ?, c16 = ?, idSeason = ?, idShow = ? c12 = ?, c13 = ?, c14 = ?, c15 = ?, c16 = ?, idSeason = ?, idShow = ?,
c18 = ?, c19 = ?, c20 = ?
WHERE idEpisode = ? WHERE idEpisode = ?
""" """
update_episode_obj = ["{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}", update_episode_obj = ["{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}",
"{Season}", "{Index}", "{Title}", "{AirsBeforeSeason}", "{AirsBeforeEpisode}", "{SeasonId}", "{Season}", "{Index}", "{Title}", "{AirsBeforeSeason}", "{AirsBeforeEpisode}", "{SeasonId}",
"{ShowId}", "{EpisodeId}"] "{ShowId}", "{FullFilePath}", "{PathId}", "{Unique}", "{EpisodeId}"]
delete_path = """ delete_path = """

View file

@ -177,6 +177,8 @@ class TVShows(KodiDb):
self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_tvshow_obj)) self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_tvshow_obj))
LOG.debug("ADD tvshow [%s/%s/%s] %s: %s", obj['TopPathId'], obj['PathId'], obj['ShowId'], obj['Title'], obj['Id']) LOG.debug("ADD tvshow [%s/%s/%s] %s: %s", obj['TopPathId'], obj['PathId'], obj['ShowId'], obj['Title'], obj['Id'])
self.update_path_parent_id(obj['PathId'], obj['TopPathId'])
def tvshow_update(self, obj): def tvshow_update(self, obj):
''' Update object to kodi. ''' Update object to kodi.
@ -187,10 +189,14 @@ class TVShows(KodiDb):
obj['Unique'] = self.get_unique_id(*values(obj, QU.get_unique_id_tvshow_obj)) obj['Unique'] = self.get_unique_id(*values(obj, QU.get_unique_id_tvshow_obj))
self.update_unique_id(*values(obj, QU.update_unique_id_tvshow_obj)) self.update_unique_id(*values(obj, QU.update_unique_id_tvshow_obj))
obj['TopPathId'] = self.get_path(obj['TopLevel'])
self.update(*values(obj, QU.update_tvshow_obj)) self.update(*values(obj, QU.update_tvshow_obj))
self.jellyfin_db.update_reference(*values(obj, QUEM.update_reference_obj)) self.jellyfin_db.update_reference(*values(obj, QUEM.update_reference_obj))
LOG.debug("UPDATE tvshow [%s/%s] %s: %s", obj['PathId'], obj['ShowId'], obj['Title'], obj['Id']) LOG.debug("UPDATE tvshow [%s/%s] %s: %s", obj['PathId'], obj['ShowId'], obj['Title'], obj['Id'])
self.update_path_parent_id(obj['PathId'], obj['TopPathId'])
def get_path_filename(self, obj): def get_path_filename(self, obj):
''' Get the path and build it into protocol://path ''' Get the path and build it into protocol://path
@ -200,6 +206,9 @@ class TVShows(KodiDb):
if '\\' in obj['Path']: if '\\' in obj['Path']:
obj['Path'] = "%s\\" % obj['Path'] obj['Path'] = "%s\\" % obj['Path']
obj['TopLevel'] = "%s\\" % dirname(dirname(obj['Path'])) obj['TopLevel'] = "%s\\" % dirname(dirname(obj['Path']))
elif 'smb://' in obj['Path'] or 'nfs://' in obj['Path']:
obj['Path'] = "%s/" % obj['Path']
obj['TopLevel'] = "%s/" % dirname(dirname(obj['Path']))
else: else:
obj['Path'] = "%s/" % obj['Path'] obj['Path'] = "%s/" % obj['Path']
obj['TopLevel'] = "plugin://plugin.video.jellyfin/" obj['TopLevel'] = "plugin://plugin.video.jellyfin/"
@ -377,6 +386,11 @@ class TVShows(KodiDb):
return self.episode_add(obj) return self.episode_add(obj)
self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj)) self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj))
parentPathId = self.jellyfin_db.get_episode_kodi_parent_path_id(*values(obj, QUEM.get_episode_kodi_parent_path_id_obj))
LOG.debug("Setting episode pathParentId, episode %s, title %s, pathId %s, pathParentId %s", obj['Id'], obj['Title'], obj['PathId'], parentPathId)
self.update_path_parent_id(obj['PathId'], parentPathId)
LOG.debug("ADD episode [%s/%s] %s: %s", obj['PathId'], obj['FileId'], obj['Id'], obj['Title']) LOG.debug("ADD episode [%s/%s] %s: %s", obj['PathId'], obj['FileId'], obj['Id'], obj['Title'])
def episode_update(self, obj): def episode_update(self, obj):
@ -423,6 +437,8 @@ class TVShows(KodiDb):
obj['Filename'] = 'index.bdmv' obj['Filename'] = 'index.bdmv'
LOG.debug("Bluray directory %s", obj['Path']) LOG.debug("Bluray directory %s", obj['Path'])
obj['FullFilePath'] = obj['Path'] + obj['Filename']
else: else:
obj['Path'] = "plugin://plugin.video.jellyfin/%s/" % obj['SeriesId'] obj['Path'] = "plugin://plugin.video.jellyfin/%s/" % obj['SeriesId']
params = { params = {
@ -432,6 +448,7 @@ class TVShows(KodiDb):
'mode': "play" 'mode': "play"
} }
obj['Filename'] = "%s?%s" % (obj['Path'], urlencode(params)) obj['Filename'] = "%s?%s" % (obj['Path'], urlencode(params))
obj['FullFilePath'] = obj['Filename']
def get_show_id(self, obj): def get_show_id(self, obj):
obj['ShowId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj)) obj['ShowId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj))