From 437df7724623d7975485fa63e52ddc8277c9b21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Wed, 3 May 2023 00:00:11 +0200 Subject: [PATCH 01/70] WIP --- jellyfin_kodi/objects/kodi/queries.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index f35f333b..1e652381 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -334,12 +334,12 @@ VALUES (?, ?, ?) """ add_episode = """ INSERT INTO episode(idEpisode, idFile, c00, c01, c03, c04, c05, c09, c10, c12, c13, c14, - idShow, c15, c16, idSeason) -VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + idShow, c15, c16, idSeason, c18, c20) +VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """ add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}", - "{AirsBeforeEpisode}", "{SeasonId}"] + "{AirsBeforeEpisode}", "{SeasonId}", "{Filename}", "{Unique}"] add_art = """ INSERT INTO art(media_id, media_type, type, url) VALUES (?, ?, ?, ?) From fcda2ec04318d38529aa6beb7a40e988c209f77d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Thu, 4 May 2023 20:07:33 +0200 Subject: [PATCH 02/70] Feat: added idParentPath to tvshows --- jellyfin_kodi/objects/kodi/queries.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 1e652381..f80bc7c3 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -348,14 +348,14 @@ VALUES (?, ?, ?, ?) update_path = """ UPDATE path -SET strPath = ?, strContent = ?, strScraper = ?, noUpdate = ? +SET strPath = ?, strContent = ?, strScraper = ?, noUpdate = ?, idParentPath = ? WHERE idPath = ? """ -update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] -update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] -update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"] -update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"] -update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, "{PathId}"] +update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, None, "{PathId}"] +update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, None, "{TopPathId}"] +update_path_tvshow_obj = ["{Path}", None, None, 1, "{TopPathId}", "{PathId}"] +update_path_episode_obj = ["{Path}", None, None, 1, None, "{PathId}"] +update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, None, "{PathId}"] update_file = """ UPDATE files SET idPath = ?, strFilename = ?, dateAdded = ? From 5b0fecf50c05ea0720f06fb5755f4b85efac2734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Fri, 5 May 2023 13:18:37 +0200 Subject: [PATCH 03/70] WIP: other path update approach Use jellyfin db to determine parent path id --- jellyfin_kodi/database/jellyfin_db.py | 18 ++++++++++++++++++ jellyfin_kodi/database/queries.py | 23 +++++++++++++++++++++++ jellyfin_kodi/objects/tvshows.py | 6 ++++++ 3 files changed, 47 insertions(+) diff --git a/jellyfin_kodi/database/jellyfin_db.py b/jellyfin_kodi/database/jellyfin_db.py index a518b830..c7a0ba36 100644 --- a/jellyfin_kodi/database/jellyfin_db.py +++ b/jellyfin_kodi/database/jellyfin_db.py @@ -71,6 +71,24 @@ class JellyfinDatabase(): except TypeError: return + def get_season_kodi_parent_path_id(self, *args): + + try: + self.cursor.execute(QU.get_season_kodi_parent_path_id_obj, args) + + return self.cursor.fetchone()[0] + except TypeError: + return + + def get_episode_kodi_parent_path_id(self, *args): + + try: + self.cursor.execute(QU.get_episode_kodi_parent_path_id_obj, args) + + return self.cursor.fetchone()[0] + except TypeError: + return + def get_full_item_by_kodi_id(self, *args): try: diff --git a/jellyfin_kodi/database/queries.py b/jellyfin_kodi/database/queries.py index e1c3eb69..36dc50ba 100644 --- a/jellyfin_kodi/database/queries.py +++ b/jellyfin_kodi/database/queries.py @@ -166,3 +166,26 @@ WHERE jellyfin_parent_id = ? delete_version = """ DELETE FROM version """ +get_season_kodi_parent_path_id = """ +SELECT sh.kodi_pathid +FROM jellyfin s +JOIN jellyfin sh +ON s.parent_id = sh.kodi_id +WHERE s.media_type = ? +AND sh.media_type = ? +AND s.id = ? +""" +get_season_kodi_parent_path_id_obj = ["season", "tvshow", "{SeasonId}"] +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 = "episode" +AND s.media_type = "season" +AND sh.media_type = "tvshow" +AND e.kodi_fileid = 698; +""" +get_episode_kodi_parent_path_id = ["episode", "season", "tvshow", "{EpisodeId}"] \ No newline at end of file diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index 3b169e1b..33f06b75 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -116,6 +116,7 @@ class TVShows(KodiDb): self.tvshow_add(obj) self.link(*values(obj, QU.update_tvshow_link_obj)) + # Ne marche pas en mode update... self.update_path(*values(obj, QU.update_path_tvshow_obj)) self.add_tags(*values(obj, QU.add_tags_tvshow_obj)) self.add_people(*values(obj, QU.add_people_tvshow_obj)) @@ -152,6 +153,8 @@ class TVShows(KodiDb): season_id = self.get_season(*values(obj, QU.get_season_special_obj)) self.artwork.add(obj['Artwork'], season_id, "season") +# verifier ici + for season in season_episodes: for episodes in server.get_episode_by_season(season_episodes[season], season): @@ -259,6 +262,9 @@ class TVShows(KodiDb): obj = self.objects.map(item, 'Episode') update = True + LOG.debug("EPISODE item: [%s]", item) + LOG.debug("EPISODE e_item: [%s]", e_item) + if obj['Location'] == "Virtual": LOG.info("Skipping virtual episode %s: %s", obj['Title'], obj['Id']) From 0473c1eb7790209dd88c18f52f63b8ef6305ba81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Thu, 4 May 2023 20:07:33 +0200 Subject: [PATCH 04/70] Revert "Feat: added idParentPath to tvshows" This reverts commit 63d40810e85850642ad0b48e196b9a07cd379b7d. --- jellyfin_kodi/objects/kodi/queries.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index f80bc7c3..1e652381 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -348,14 +348,14 @@ VALUES (?, ?, ?, ?) update_path = """ UPDATE path -SET strPath = ?, strContent = ?, strScraper = ?, noUpdate = ?, idParentPath = ? +SET strPath = ?, strContent = ?, strScraper = ?, noUpdate = ? WHERE idPath = ? """ -update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, None, "{PathId}"] -update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, None, "{TopPathId}"] -update_path_tvshow_obj = ["{Path}", None, None, 1, "{TopPathId}", "{PathId}"] -update_path_episode_obj = ["{Path}", None, None, 1, None, "{PathId}"] -update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, None, "{PathId}"] +update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] +update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] +update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"] +update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"] +update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, "{PathId}"] update_file = """ UPDATE files SET idPath = ?, strFilename = ?, dateAdded = ? From 1a3f3120577077ead334fdb1bba697bc59df283f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Fri, 5 May 2023 18:24:10 +0200 Subject: [PATCH 05/70] WIP: parent path id --- jellyfin_kodi/database/jellyfin_db.py | 11 +---------- jellyfin_kodi/database/queries.py | 21 ++++++--------------- jellyfin_kodi/objects/kodi/kodi.py | 3 +++ jellyfin_kodi/objects/kodi/queries.py | 5 +++++ jellyfin_kodi/objects/tvshows.py | 17 ++++++++++++++--- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/jellyfin_kodi/database/jellyfin_db.py b/jellyfin_kodi/database/jellyfin_db.py index c7a0ba36..0cbe9dd6 100644 --- a/jellyfin_kodi/database/jellyfin_db.py +++ b/jellyfin_kodi/database/jellyfin_db.py @@ -71,19 +71,10 @@ class JellyfinDatabase(): except TypeError: return - def get_season_kodi_parent_path_id(self, *args): - - try: - self.cursor.execute(QU.get_season_kodi_parent_path_id_obj, args) - - return self.cursor.fetchone()[0] - except TypeError: - return - def get_episode_kodi_parent_path_id(self, *args): try: - self.cursor.execute(QU.get_episode_kodi_parent_path_id_obj, args) + self.cursor.execute(QU.get_episode_kodi_parent_path_id, args) return self.cursor.fetchone()[0] except TypeError: diff --git a/jellyfin_kodi/database/queries.py b/jellyfin_kodi/database/queries.py index 36dc50ba..6136a50e 100644 --- a/jellyfin_kodi/database/queries.py +++ b/jellyfin_kodi/database/queries.py @@ -166,16 +166,7 @@ WHERE jellyfin_parent_id = ? delete_version = """ DELETE FROM version """ -get_season_kodi_parent_path_id = """ -SELECT sh.kodi_pathid -FROM jellyfin s -JOIN jellyfin sh -ON s.parent_id = sh.kodi_id -WHERE s.media_type = ? -AND sh.media_type = ? -AND s.id = ? -""" -get_season_kodi_parent_path_id_obj = ["season", "tvshow", "{SeasonId}"] + get_episode_kodi_parent_path_id = """ SELECT sh.kodi_pathid FROM jellyfin e @@ -183,9 +174,9 @@ JOIN jellyfin s ON e.parent_id = s.kodi_id JOIN jellyfin sh ON s.parent_id = sh.kodi_id -WHERE e.media_type = "episode" -AND s.media_type = "season" -AND sh.media_type = "tvshow" -AND e.kodi_fileid = 698; +WHERE e.media_type = ? +AND s.media_type = ? +AND sh.media_type = ? +AND e.jellyfin_id = ?; """ -get_episode_kodi_parent_path_id = ["episode", "season", "tvshow", "{EpisodeId}"] \ No newline at end of file +get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"] \ No newline at end of file diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py index b9650149..09909a50 100644 --- a/jellyfin_kodi/objects/kodi/kodi.py +++ b/jellyfin_kodi/objects/kodi/kodi.py @@ -77,6 +77,9 @@ class Kodi(object): except TypeError: 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): self.cursor.execute(QU.update_path, args) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 1e652381..e73a6bf3 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -345,6 +345,11 @@ INSERT INTO art(media_id, media_type, type, url) VALUES (?, ?, ?, ?) """ +update_path_parent_id = """ +UPDATE path +SET idParentPath = ? +where idPath = ? +""" update_path = """ UPDATE path diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index 33f06b75..36237f4b 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -116,7 +116,6 @@ class TVShows(KodiDb): self.tvshow_add(obj) self.link(*values(obj, QU.update_tvshow_link_obj)) - # Ne marche pas en mode update... self.update_path(*values(obj, QU.update_path_tvshow_obj)) self.add_tags(*values(obj, QU.add_tags_tvshow_obj)) self.add_people(*values(obj, QU.add_people_tvshow_obj)) @@ -153,8 +152,6 @@ class TVShows(KodiDb): season_id = self.get_season(*values(obj, QU.get_season_special_obj)) self.artwork.add(obj['Artwork'], season_id, "season") -# verifier ici - for season in season_episodes: for episodes in server.get_episode_by_season(season_episodes[season], season): @@ -180,6 +177,9 @@ class TVShows(KodiDb): 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']) + # TODO: Greg + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + def tvshow_update(self, obj): ''' Update object to kodi. @@ -190,10 +190,15 @@ class TVShows(KodiDb): 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)) + obj['TopPathId'] = self.get_path(obj['TopLevel']) + self.update(*values(obj, QU.update_tvshow_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']) + # TODO: Greg + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + def get_path_filename(self, obj): ''' Get the path and build it into protocol://path @@ -383,6 +388,12 @@ class TVShows(KodiDb): return self.episode_add(obj) self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj)) + + # TODO Greg + 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']) def episode_update(self, obj): From 8de0a022b6a89d75526d317ebd7f45fff4bc4a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sat, 6 May 2023 09:59:09 +0200 Subject: [PATCH 06/70] Feat: Set mediaType and scrapper to all paths for movies and tvshows --- jellyfin_kodi/objects/kodi/queries.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index f35f333b..8764a963 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -353,9 +353,10 @@ WHERE idPath = ? """ update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] -update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"] -update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"] -update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, "{PathId}"] +update_path_tvshow_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] +update_path_episode_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] +update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"] + update_file = """ UPDATE files SET idPath = ?, strFilename = ?, dateAdded = ? From da6a725b4d4b2aca4eb4b5baf50240b34abbc25b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 01:51:21 +0200 Subject: [PATCH 07/70] Remove TODO tags --- jellyfin_kodi/objects/tvshows.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index 36237f4b..fbcbc295 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -177,7 +177,6 @@ class TVShows(KodiDb): 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']) - # TODO: Greg self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def tvshow_update(self, obj): @@ -196,7 +195,6 @@ class TVShows(KodiDb): 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']) - # TODO: Greg self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def get_path_filename(self, obj): @@ -389,7 +387,6 @@ class TVShows(KodiDb): self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj)) - # TODO Greg 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) From 5b14abb53f4cd4401fa38ccc1c0a7b226c68b94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 02:04:58 +0200 Subject: [PATCH 08/70] Set pathId to the episode --- jellyfin_kodi/objects/kodi/queries.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 817576a8..1be45489 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -334,12 +334,12 @@ VALUES (?, ?, ?) """ add_episode = """ INSERT INTO episode(idEpisode, idFile, c00, c01, c03, c04, c05, c09, c10, c12, c13, c14, - idShow, c15, c16, idSeason, c18, c20) -VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + idShow, c15, c16, idSeason, c18, c19, c20) +VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """ add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}", - "{AirsBeforeEpisode}", "{SeasonId}", "{Filename}", "{Unique}"] + "{AirsBeforeEpisode}", "{SeasonId}", "{Filename}", "{PathId}", "{Unique}"] add_art = """ INSERT INTO art(media_id, media_type, type, url) VALUES (?, ?, ?, ?) From ff95157315a160bb9b6cef452a8012fb5026daae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 12:28:18 +0200 Subject: [PATCH 09/70] Set parent pathId only when in native mode Also do not set content and scrapper from path not being top paths --- jellyfin_kodi/objects/kodi/queries.py | 4 ++-- jellyfin_kodi/objects/tvshows.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 1be45489..1216c17b 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -358,8 +358,8 @@ WHERE idPath = ? """ update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] -update_path_tvshow_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] -update_path_episode_obj = ["{Path}", "tvshows", "metadata.local", 1, "{PathId}"] +update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"] +update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"] update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"] update_file = """ diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index fbcbc295..29706469 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -177,7 +177,8 @@ class TVShows(KodiDb): 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']) - self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + if self.direct_path: + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def tvshow_update(self, obj): @@ -195,7 +196,8 @@ class TVShows(KodiDb): 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']) - self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + if self.direct_path: + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def get_path_filename(self, obj): @@ -206,6 +208,9 @@ class TVShows(KodiDb): if '\\' in obj['Path']: obj['Path'] = "%s\\" % 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: obj['Path'] = "%s/" % obj['Path'] obj['TopLevel'] = "plugin://plugin.video.jellyfin/" @@ -387,9 +392,10 @@ class TVShows(KodiDb): 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) + if self.direct_path: + 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']) From e28a04128796ab91f027b723e8504e6836d2368b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 12:51:38 +0200 Subject: [PATCH 10/70] Set full path in episode --- jellyfin_kodi/objects/kodi/queries.py | 7 ++++--- jellyfin_kodi/objects/tvshows.py | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 1216c17b..e9f1f7c9 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -339,7 +339,7 @@ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """ add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}", - "{AirsBeforeEpisode}", "{SeasonId}", "{Filename}", "{PathId}", "{Unique}"] + "{AirsBeforeEpisode}", "{SeasonId}", "{FullFilePath}", "{PathId}", "{Unique}"] add_art = """ INSERT INTO art(media_id, media_type, type, url) VALUES (?, ?, ?, ?) @@ -474,12 +474,13 @@ WHERE idSeason = ? update_episode = """ UPDATE episode 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 = ? """ update_episode_obj = ["{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}", "{Season}", "{Index}", "{Title}", "{AirsBeforeSeason}", "{AirsBeforeEpisode}", "{SeasonId}", - "{ShowId}", "{EpisodeId}"] + "{ShowId}", "{FullFilePath}", "{PathId}", "{Unique}", "{EpisodeId}"] delete_path = """ diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index 29706469..aeb3b9e0 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -443,6 +443,8 @@ class TVShows(KodiDb): obj['Filename'] = 'index.bdmv' LOG.debug("Bluray directory %s", obj['Path']) + obj['FullFilePath'] = obj['Path'] + obj['Filename'] + else: obj['Path'] = "plugin://plugin.video.jellyfin/%s/" % obj['SeriesId'] params = { @@ -452,6 +454,7 @@ class TVShows(KodiDb): 'mode': "play" } obj['Filename'] = "%s?%s" % (obj['Path'], urlencode(params)) + obj['FullFilePath'] = obj['Filename'] def get_show_id(self, obj): obj['ShowId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj)) From 435ad781322e5ca569090dc10a6b0d03842f9a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 13:02:54 +0200 Subject: [PATCH 11/70] Set idParentPath even in add-on mode Does not seem to harm anything even if it does not fix the infos --- jellyfin_kodi/objects/tvshows.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index aeb3b9e0..e71e1379 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -177,8 +177,7 @@ class TVShows(KodiDb): 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']) - if self.direct_path: - self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def tvshow_update(self, obj): @@ -196,8 +195,7 @@ class TVShows(KodiDb): 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']) - if self.direct_path: - self.update_path_parent_id(obj['PathId'], obj['TopPathId']) + self.update_path_parent_id(obj['PathId'], obj['TopPathId']) def get_path_filename(self, obj): @@ -392,10 +390,9 @@ class TVShows(KodiDb): self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj)) - if self.direct_path: - 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) + 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']) From e8188cacb141b2f1b045522993356554997d6160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 16:31:14 +0200 Subject: [PATCH 12/70] WIP add-on mode Context menus are working again Still no cast information Issue with idParentPath to fix tvshow path to check --- jellyfin_kodi/objects/tvshows.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index ac445df0..fcef66fa 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -201,6 +201,8 @@ class TVShows(KodiDb): ''' Get the path and build it into protocol://path ''' + LOG.debug("get_path_filename: path is [%s]", obj['Path']) + if self.direct_path: if '\\' in obj['Path']: @@ -217,7 +219,11 @@ class TVShows(KodiDb): raise PathValidationException("Failed to validate path. User stopped.") else: obj['TopLevel'] = "plugin://plugin.video.jellyfin/%s/" % obj['LibraryId'] - obj['Path'] = "%s%s/" % (obj['TopLevel'], obj['Id']) + # TV Show path is not containing the collection id aka toplevel + # obj['Path'] = "%s%s/" % (obj['TopLevel'], obj['Id']) + obj['Path'] = "plugin://plugin.video.jellyfin/%s/" % obj['Id'] + + LOG.debug("get_path_filename AFTER: path is [%s]", obj['Path']) @stop def season(self, item, show_id=None): From a7e2060c5c681998c058a6047c5e82e26c60350f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 16:44:36 +0200 Subject: [PATCH 13/70] Fix idParentPath addon mode --- jellyfin_kodi/objects/tvshows.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index fcef66fa..ecd34a14 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -394,8 +394,9 @@ class TVShows(KodiDb): 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) + if obj['PathId'] != parentPathId: + 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']) From a8f2935790649dc7f6dce81037d7fcec52f83ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 7 May 2023 20:18:20 +0200 Subject: [PATCH 14/70] Fix add-on mode. Hacky, to be tested --- jellyfin_kodi/objects/kodi/queries.py | 1 + jellyfin_kodi/objects/tvshows.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index e9f1f7c9..940b07bd 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -358,6 +358,7 @@ WHERE idPath = ? """ update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"] update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"] +update_path_toptvshow_addon_obj = ["{TopLevel}", None, None, 1, "{TopPathId}"] update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"] update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"] update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"] diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py index ecd34a14..99a7ead6 100644 --- a/jellyfin_kodi/objects/tvshows.py +++ b/jellyfin_kodi/objects/tvshows.py @@ -169,7 +169,19 @@ class TVShows(KodiDb): self.add_unique_id(*values(obj, QU.add_unique_id_tvshow_obj)) obj['TopPathId'] = self.add_path(obj['TopLevel']) - self.update_path(*values(obj, QU.update_path_toptvshow_obj)) + + if self.direct_path: + # Normal way, we use the actual top path + self.update_path(*values(obj, QU.update_path_toptvshow_obj)) + else: + # Hack to allow cast information in add-on mode + # We create a path on top of all others that holds mediaType and scrapper + self.update_path(*values(obj, QU.update_path_toptvshow_addon_obj)) + temp_obj = dict() + temp_obj['TopLevel'] = 'plugin://plugin.video.jellyfin/' + temp_obj['TopPathId'] = self.add_path(temp_obj['TopLevel']) + self.update_path(*values(temp_obj, QU.update_path_toptvshow_obj)) + self.update_path_parent_id(obj['TopPathId'], temp_obj['TopPathId']) obj['PathId'] = self.add_path(*values(obj, QU.get_path_obj)) From 7f11de708fa1ccdad5f66220320aead95304bc8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Tue, 13 Jun 2023 13:44:23 +0200 Subject: [PATCH 15/70] Fix duplicate artist links INSERT OR REPLACE does not work when null values are provided as part of the unique index --- jellyfin_kodi/objects/kodi/kodi.py | 4 ++-- jellyfin_kodi/objects/kodi/queries.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py index 09909a50..9f7c9dad 100644 --- a/jellyfin_kodi/objects/kodi/kodi.py +++ b/jellyfin_kodi/objects/kodi/kodi.py @@ -150,8 +150,8 @@ class Kodi(object): bulk_updates.setdefault(sql, []).append((person_id,) + args) elif person['Type'] == 'Artist': - sql = QU.update_link.replace("{LinkType}", 'actor_link') - bulk_updates.setdefault(sql, []).append((person_id,) + args) + sql = QU.insert_link_if_not_exists.replace("{LinkType}", 'actor_link') + bulk_updates.setdefault(sql, []).append((person_id,) + args + (person_id,) + args) add_thumbnail(person_id, person, person['Type']) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 940b07bd..905edbce 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -402,6 +402,13 @@ update_link = """ INSERT OR REPLACE INTO {LinkType}(actor_id, media_id, media_type) VALUES (?, ?, ?) """ +# update_link does not work for actor_link as not all values from unique index are provided +# Resulting in duplicates +insert_link_if_not_exists = """ +INSERT INTO {LinkType}(actor_id, media_id, media_type) +SELECT ?, ?, ? +WHERE NOT EXISTS(SELECT 1 FROM {LinkType} WHERE actor_id = ? AND media_id = ? AND media_type = ?) +""" update_movie = """ UPDATE movie SET c00 = ?, c01 = ?, c02 = ?, c03 = ?, c04 = ?, c05 = ?, c06 = ?, From d1fab6cf39e9abc8705cd69974cffc1f1e3aafc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Tue, 13 Jun 2023 14:31:46 +0200 Subject: [PATCH 16/70] Fix: remove override of previously set libraryId and name Which caused new videos not to be added to library on automatic update --- jellyfin_kodi/objects/musicvideos.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/jellyfin_kodi/objects/musicvideos.py b/jellyfin_kodi/objects/musicvideos.py index 32f76967..93cc7b60 100644 --- a/jellyfin_kodi/objects/musicvideos.py +++ b/jellyfin_kodi/objects/musicvideos.py @@ -86,8 +86,6 @@ class MusicVideos(KodiDb): obj['Year'] = int(str(obj['Year'])[:4]) obj['Path'] = API.get_file_path(obj['Path']) - obj['LibraryId'] = self.library['Id'] - obj['LibraryName'] = self.library['Name'] obj['Genres'] = obj['Genres'] or [] obj['ArtistItems'] = obj['ArtistItems'] or [] obj['Studios'] = [API.validate_studio(studio) for studio in (obj['Studios'] or [])] From 748683024dbf1416bfc8d531cde99956b196229f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Tue, 13 Jun 2023 13:44:23 +0200 Subject: [PATCH 17/70] Revert "Fix duplicate artist links" This reverts commit 7f11de708fa1ccdad5f66220320aead95304bc8d. --- jellyfin_kodi/objects/kodi/kodi.py | 4 ++-- jellyfin_kodi/objects/kodi/queries.py | 7 ------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py index 9f7c9dad..09909a50 100644 --- a/jellyfin_kodi/objects/kodi/kodi.py +++ b/jellyfin_kodi/objects/kodi/kodi.py @@ -150,8 +150,8 @@ class Kodi(object): bulk_updates.setdefault(sql, []).append((person_id,) + args) elif person['Type'] == 'Artist': - sql = QU.insert_link_if_not_exists.replace("{LinkType}", 'actor_link') - bulk_updates.setdefault(sql, []).append((person_id,) + args + (person_id,) + args) + sql = QU.update_link.replace("{LinkType}", 'actor_link') + bulk_updates.setdefault(sql, []).append((person_id,) + args) add_thumbnail(person_id, person, person['Type']) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 905edbce..940b07bd 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -402,13 +402,6 @@ update_link = """ INSERT OR REPLACE INTO {LinkType}(actor_id, media_id, media_type) VALUES (?, ?, ?) """ -# update_link does not work for actor_link as not all values from unique index are provided -# Resulting in duplicates -insert_link_if_not_exists = """ -INSERT INTO {LinkType}(actor_id, media_id, media_type) -SELECT ?, ?, ? -WHERE NOT EXISTS(SELECT 1 FROM {LinkType} WHERE actor_id = ? AND media_id = ? AND media_type = ?) -""" update_movie = """ UPDATE movie SET c00 = ?, c01 = ?, c02 = ?, c03 = ?, c04 = ?, c05 = ?, c06 = ?, From 628debe984990ce183f0a583909ebf831142950b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Tue, 13 Jun 2023 14:31:46 +0200 Subject: [PATCH 18/70] Revert "Fix: remove override of previously set libraryId and name" This reverts commit d1fab6cf39e9abc8705cd69974cffc1f1e3aafc6. --- jellyfin_kodi/objects/musicvideos.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jellyfin_kodi/objects/musicvideos.py b/jellyfin_kodi/objects/musicvideos.py index 93cc7b60..32f76967 100644 --- a/jellyfin_kodi/objects/musicvideos.py +++ b/jellyfin_kodi/objects/musicvideos.py @@ -86,6 +86,8 @@ class MusicVideos(KodiDb): obj['Year'] = int(str(obj['Year'])[:4]) obj['Path'] = API.get_file_path(obj['Path']) + obj['LibraryId'] = self.library['Id'] + obj['LibraryName'] = self.library['Name'] obj['Genres'] = obj['Genres'] or [] obj['ArtistItems'] = obj['ArtistItems'] or [] obj['Studios'] = [API.validate_studio(studio) for studio in (obj['Studios'] or [])] From 5b45d5293cdac20eac362ee6a52188d0caa7f59f Mon Sep 17 00:00:00 2001 From: sonofsky2010 Date: Sun, 9 Jul 2023 15:36:33 +0800 Subject: [PATCH 19/70] Fix: Some TV library sync failed, if the TV library was mixed. --- jellyfin_kodi/helper/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jellyfin_kodi/helper/utils.py b/jellyfin_kodi/helper/utils.py index 38ce9155..3cb054be 100644 --- a/jellyfin_kodi/helper/utils.py +++ b/jellyfin_kodi/helper/utils.py @@ -548,10 +548,10 @@ def find_library(server, item): from ..database import get_sync sync = get_sync() - + whitelist = [x.replace('Mixed:', "") for x in sync['Whitelist']] ancestors = server.jellyfin.get_ancestors(item['Id']) for ancestor in ancestors: - if ancestor['Id'] in sync['Whitelist']: + if ancestor['Id'] in whitelist: return ancestor LOG.error('No ancestor found, not syncing item with ID: {}'.format(item['Id'])) From abda9754c8d32167753ff0ecd4af51f69d4d4866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goireDruant?= Date: Sun, 27 Aug 2023 17:08:26 +0200 Subject: [PATCH 20/70] Chore: added new line at the end of file --- jellyfin_kodi/database/queries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jellyfin_kodi/database/queries.py b/jellyfin_kodi/database/queries.py index 6136a50e..52d68846 100644 --- a/jellyfin_kodi/database/queries.py +++ b/jellyfin_kodi/database/queries.py @@ -179,4 +179,4 @@ AND s.media_type = ? AND sh.media_type = ? AND e.jellyfin_id = ?; """ -get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"] \ No newline at end of file +get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"] From db91d57b94b23b55508819d64d64abe84e81bded Mon Sep 17 00:00:00 2001 From: Nicolas Viviani Date: Sun, 2 Jul 2023 17:29:12 +0000 Subject: [PATCH 21/70] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/fr/ --- .../resource.language.fr_fr/strings.po | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/language/resource.language.fr_fr/strings.po b/resources/language/resource.language.fr_fr/strings.po index a0d200bb..26b50dbc 100644 --- a/resources/language/resource.language.fr_fr/strings.po +++ b/resources/language/resource.language.fr_fr/strings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-10-21 02:50+0000\n" -"Last-Translator: bobthebignose \n" +"PO-Revision-Date: 2023-07-03 17:41+0000\n" +"Last-Translator: Nicolas Viviani \n" "Language-Team: French \n" "Language: fr_fr\n" @@ -194,7 +194,7 @@ msgstr "Options Jellyfin" msgctxt "#30402" msgid "Jellyfin transcode" -msgstr "Transcoder Jellyfin" +msgstr "Transcodage Jellyfin" msgctxt "#30405" msgid "Add to favorites" @@ -279,7 +279,7 @@ msgstr "Retour arrière à la reprise de la lecture (en secondes)" msgctxt "#30522" msgid "Transcode H265/HEVC" -msgstr "Transcoder H.265/HEVC" +msgstr "Transcoder le H.265/HEVC" msgctxt "#30527" msgid "Ignore specials in next episodes" @@ -323,7 +323,7 @@ msgstr "Autoriser l'économiseur d'écran pendant les synchronisations" msgctxt "#30537" msgid "Transcode Hi10P" -msgstr "Transcoder Hi10P" +msgstr "Transcoder le Hi10P" msgctxt "#30539" msgid "Login" @@ -1037,11 +1037,11 @@ msgstr "Options de transcodage" msgctxt "#30524" msgid "Transcode VC-1" -msgstr "Transcoder VC-1" +msgstr "Transcoder le VC-1" msgctxt "#30523" msgid "Transcode MPEG2" -msgstr "Transcoder MPEG2" +msgstr "Transcoder le MPEG2" msgctxt "#30165" msgid "Allow burned subtitles" @@ -1069,11 +1069,11 @@ msgstr "Débit maximal du flux" msgctxt "#30525" msgid "Transcode VP9" -msgstr "Transcoder VP9" +msgstr "Transcoder le VP9" msgctxt "#30526" msgid "Transcode AV1" -msgstr "Transcoder AV1" +msgstr "Transcoder l'AV1" msgctxt "#33163" msgid "Disabled/Media default" @@ -1081,7 +1081,7 @@ msgstr "Désactivé/Média par défaut" msgctxt "#33202" msgid "Transcode H265/HEVC RExt" -msgstr "Transcodage H265/HEVC RExt" +msgstr "Transcoder le H265/HEVC RExt" msgctxt "#33125" msgid "Enable remote control" From 230dd7670a79e538ba19a270509ed430fc5a1f23 Mon Sep 17 00:00:00 2001 From: Bas Date: Sun, 2 Jul 2023 13:14:32 +0000 Subject: [PATCH 22/70] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/nl/ --- .../language/resource.language.nl_nl/strings.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/language/resource.language.nl_nl/strings.po b/resources/language/resource.language.nl_nl/strings.po index 109c71f4..8e999c62 100644 --- a/resources/language/resource.language.nl_nl/strings.po +++ b/resources/language/resource.language.nl_nl/strings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-11-10 13:50+0000\n" -"Last-Translator: Daan Vankerkom \n" +"PO-Revision-Date: 2023-07-03 17:41+0000\n" +"Last-Translator: Bas \n" "Language-Team: Dutch \n" "Language: nl_nl\n" @@ -26,11 +26,11 @@ msgstr "Jellyfin voor Kodi" msgctxt "#30000" msgid "Server address" -msgstr "Server adres" +msgstr "Serveradres" msgctxt "#30001" msgid "Server name" -msgstr "Server naam" +msgstr "Servernaam" msgctxt "#30002" msgid "Force HTTP playback" @@ -38,15 +38,15 @@ msgstr "Afspelen via HTTP forceren" msgctxt "#30003" msgid "Login method" -msgstr "Login methode" +msgstr "Aanmeldmethode" msgctxt "#30004" msgid "Log level" -msgstr "Log niveau" +msgstr "Logniveau" msgctxt "#30016" msgid "Device name" -msgstr "Apparaat naam" +msgstr "Apparaatnaam" msgctxt "#30022" msgid "Advanced" @@ -74,7 +74,7 @@ msgstr "Voor films" msgctxt "#30157" msgid "Enable enhanced artwork (i.e. cover art)" -msgstr "Geevanceerde artwork inschakelen (bv cover art)" +msgstr "Geavanceerde artwork inschakelen (bijv. cover art)" msgctxt "#30160" msgid "Video quality" From 064a02ad3c890414d8e86b858fe3b8244dad165c Mon Sep 17 00:00:00 2001 From: Peter Fern Date: Tue, 21 Nov 2023 17:07:36 +1100 Subject: [PATCH 23/70] Fix uncaught exception in Player.report_playback() --- jellyfin_kodi/player.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/player.py b/jellyfin_kodi/player.py index e8a92985..104f3901 100644 --- a/jellyfin_kodi/player.py +++ b/jellyfin_kodi/player.py @@ -326,7 +326,11 @@ class Player(xbmc.Player): if not report: previous = item['CurrentPosition'] - item['CurrentPosition'] = int(self.getTime()) + + try: + item['CurrentPosition'] = int(self.getTime()) + except Exception: # at this point we should be playing and if not then bail out + return if int(item['CurrentPosition']) == 1: return From 94b98a45aad1fe5937246ea936875499581616b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 17:14:20 +0000 Subject: [PATCH 24/70] chore(deps): update github/codeql-action action to v3 --- .github/workflows/codeql.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 21253920..08d6a1a0 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-and-quality @@ -47,7 +47,7 @@ jobs: sudo chown -R $USER /usr/local/lib/python2.7 - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 From a2e3158d6ac04d3dfbdf1d4c68fc401660c30311 Mon Sep 17 00:00:00 2001 From: queeup Date: Sun, 24 Dec 2023 10:30:29 +0000 Subject: [PATCH 25/70] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/tr/ --- resources/language/resource.language.tr_tr/strings.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/language/resource.language.tr_tr/strings.po b/resources/language/resource.language.tr_tr/strings.po index 2a19dbe3..3655ad04 100644 --- a/resources/language/resource.language.tr_tr/strings.po +++ b/resources/language/resource.language.tr_tr/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-06-28 21:41+0000\n" -"Last-Translator: Murat Hasar \n" +"PO-Revision-Date: 2023-12-25 11:30+0000\n" +"Last-Translator: queeup \n" "Language-Team: Turkish \n" "Language: tr_tr\n" @@ -429,7 +429,7 @@ msgstr "H.265/HEVC kod dönüştürme" msgctxt "#30521" msgid "Jump back on resume (in seconds)" -msgstr "Devam ettirmeden geri atlayın (saniye olarak)" +msgstr "Devam ettirmeden önce geri atlayın (saniye olarak)" msgctxt "#30520" msgid "Skip the delete confirmation (use at your own risk)" From 1233e29f815a12d4e249db777fa4e8130d04d311 Mon Sep 17 00:00:00 2001 From: Xanadu Cosmobullion Date: Mon, 25 Dec 2023 19:47:40 +0000 Subject: [PATCH 26/70] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/he/ --- .../language/resource.language.he/strings.po | 289 ++++++++++++++++-- 1 file changed, 271 insertions(+), 18 deletions(-) diff --git a/resources/language/resource.language.he/strings.po b/resources/language/resource.language.he/strings.po index 2c2b5bf2..3e494020 100644 --- a/resources/language/resource.language.he/strings.po +++ b/resources/language/resource.language.he/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-01-27 08:51+0000\n" -"Last-Translator: moshiko kar \n" +"PO-Revision-Date: 2023-12-26 20:30+0000\n" +"Last-Translator: Xanadu Cosmobullion \n" "Language-Team: Hebrew \n" "Language: he\n" @@ -14,7 +14,7 @@ msgstr "" msgctxt "#30157" msgid "Enable enhanced artwork (i.e. cover art)" -msgstr "הפעל יצירת אמנות מועשרת" +msgstr "הצג פוסטרים משופרים" msgctxt "#30116" msgid "For Movies" @@ -26,7 +26,7 @@ msgstr "לפרקים" msgctxt "#30114" msgid "Offer delete after playback" -msgstr "הצע מחיקה לאחר ניגון" +msgstr "הצג אפשרות מחיקה לאחר ניגון" msgctxt "#30091" msgid "Confirm file deletion" @@ -66,7 +66,7 @@ msgstr "כתובת שרת" msgctxt "#29999" msgid "Jellyfin for Kodi" -msgstr "ג׳ליפין לקודי" +msgstr "ג׳ליפין עבור קודי" msgctxt "#30409" msgid "Delete from Jellyfin" @@ -78,7 +78,7 @@ msgstr "הפעל מצב קולנוע" msgctxt "#30519" msgid "Ask to play trailers" -msgstr "שאל אם להפעיל טריילר" +msgstr "שאל אם להפעיל טריילרים" msgctxt "#30506" msgid "Sync" @@ -126,7 +126,7 @@ msgstr "פריטים אקראיים" msgctxt "#30239" msgid "Reset local Kodi database" -msgstr "אפס את מסד הנתונים המקומי של Kodi" +msgstr "אפס את הנתונים המקומיים של קודי" msgctxt "#30302" msgid "Movies" @@ -134,7 +134,7 @@ msgstr "סרטים" msgctxt "#30305" msgid "TV Shows" -msgstr "טלוויזיה" +msgstr "תוכניות טלוויזיה" msgctxt "#30406" msgid "Remove from favorites" @@ -146,7 +146,7 @@ msgstr "אפשר כתוביות צרובות" msgctxt "#30171" msgid "In Progress TV Shows" -msgstr "טלוויזיה" +msgstr "תוכניות טלוויזיה שהתחלת לצפות בהן" msgctxt "#30174" msgid "Recently Added Movies" @@ -154,7 +154,7 @@ msgstr "סרטים שנוספו לאחרונה" msgctxt "#30170" msgid "Recently Added TV Shows" -msgstr "טלוויזיה" +msgstr "תוכניות טלוויזיה שנוספו לאחרונה" msgctxt "#30179" msgid "Next Episodes" @@ -178,11 +178,11 @@ msgstr "תמונות שנוספו לאחרונה" msgctxt "#30256" msgid "Recently added Music videos" -msgstr "סרטוני מוזיקה שנוספו לאחרונה" +msgstr "קליפים מוזיקליים שנוספו לאחרונה" msgctxt "#30258" msgid "Unwatched Music videos" -msgstr "סרטוני מוזיקה שלא נצפו" +msgstr "קליפים מוזיקליים שלא נצפו" msgctxt "#30405" msgid "Add to favorites" @@ -200,10 +200,9 @@ msgctxt "#30527" msgid "Ignore specials in next episodes" msgstr "התעלם מספיישלים בפרקים הבאים" -#, fuzzy msgctxt "#30529" msgid "Startup delay (in seconds)" -msgstr "עיכוב בזמן הפעלה (בשניות)" +msgstr "השהייה לאחר הפעלה ראשונית (בשניות)" msgctxt "#30530" msgid "Enable server restart message" @@ -216,7 +215,7 @@ msgstr "הפעל הודעת ברוך הבא" msgctxt "#30401" msgid "Jellyfin options" -msgstr "אפשרויות jellyfin" +msgstr "אפשרויות ג'ליפין" msgctxt "#33193" msgid "Restarting..." @@ -224,15 +223,15 @@ msgstr "מאתחל…" msgctxt "#30522" msgid "Transcode H265/HEVC" -msgstr "Transcode H.265/HEVC" +msgstr "המרת קידוד H.265/HEVC" msgctxt "#30160" msgid "Max stream bitrate" -msgstr "מקסימום קצב העברה" +msgstr "קצב נתונים מקסימלי" msgctxt "#30163" msgid "Audio bitrate" -msgstr "קצב שמע" +msgstr "איכות שמע" msgctxt "#30504" msgid "Use alternate device name" @@ -241,3 +240,257 @@ msgstr "השתמש בשם מכשיר אחר" msgctxt "#30511" msgid "Playback mode" msgstr "מצב ניגון" + +msgctxt "#30164" +msgid "Audio max channels" +msgstr "מספר ערוצי שמע מקסימלי" + +msgctxt "#30177" +msgid "In Progress Movies" +msgstr "סרטים שהתחלת לצפות בהם" + +msgctxt "#30178" +msgid "In Progress Episodes" +msgstr "פרקים שהתחלת לצפות בהם" + +msgctxt "#30185" +msgid "Boxsets" +msgstr "מארזי מדיה" + +msgctxt "#30251" +msgid "Recently added Home Videos" +msgstr "סרטים ביתיים שנוספו לאחרונה" + +msgctxt "#30253" +msgid "Favourite Home Videos" +msgstr "סרטים ביתיים מועדפים" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "קליפים מוזיקליים שהתחלת לצפות בהם" + +msgctxt "#30507" +msgid "Enable notification if update count is greater than" +msgstr "הפעל נוטיפיקציה אם מספר העדכונים גדול מ-" + +msgctxt "#30520" +msgid "Skip the delete confirmation (use at your own risk)" +msgstr "דלג על אישור מחיקה (זהירות: מסוכן)" + +msgctxt "#30524" +msgid "Transcode VC-1" +msgstr "המרת קידוד VC-1" + +msgctxt "#30525" +msgid "Transcode VP9" +msgstr "המרת קידוד VP9" + +msgctxt "#30532" +msgid "Duration of the video library pop up" +msgstr "משך זמן הצגת חלון קופץ של ספריית הוידאו" + +msgctxt "#30534" +msgid "Notifications (in seconds)" +msgstr "התראות (בשניות)" + +msgctxt "#30535" +msgid "Generate a new device Id" +msgstr "צור מזהה חדש למכשיר" + +msgctxt "#30543" +msgid "Username or email" +msgstr "שם משתמש או סיסמה" + +msgctxt "#30609" +msgid "Unable to connect to the selected server" +msgstr "לא ניתן להתחבר לשרת המבוקש" + +msgctxt "#30617" +msgid "Server or port cannot be empty" +msgstr "שרת או פורט אינם יכולים להיות ריקים" + +msgctxt "#33006" +msgid "Server is restarting" +msgstr "השרת מבצע איתחול" + +msgctxt "#33033" +msgid "A new device Id has been generated. Kodi will now restart." +msgstr "מזהה חדש למכשיר נוצר. קודי יבצע אתחול כעת." + +msgctxt "#33035" +msgid "Caution! If you choose Native mode, certain Jellyfin features will be missing, such as: Jellyfin cinema mode, direct stream/transcode options and parental access schedule." +msgstr "" +"זהירות! אם תבחר במצב Native, אפשרויות מסוימות של ג'ליפין לא יפעלו, כגון מצב " +"קולנוע, אפשרויות להמרת קידוד ישירה או הזרמה ישירה, וגישת ילדים מתוזמנת." + +msgctxt "#30402" +msgid "Jellyfin transcode" +msgstr "המרת קידוד ג'ליפין" + +msgctxt "#30412" +msgid "Transcode" +msgstr "המרת קידוד" + +msgctxt "#30509" +msgid "Enable music library" +msgstr "אפשר ספריית מוזיקה" + +msgctxt "#30512" +msgid "Enable artwork caching" +msgstr "אפשר שמירה מקומית של עטיפות מדיה" + +msgctxt "#30515" +msgid "Paging - max items requested (default: 15)" +msgstr "חלוקה למנות - מספר בקשות מקסימלי של פריטים (ברירת מחדל: 15)" + +msgctxt "#30516" +msgid "Playback" +msgstr "ניגון" + +msgctxt "#30517" +msgid "Network credentials" +msgstr "שם משתמש וסיסמה עבור רשת" + +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "דילוג אחורה לאחר השהיית ניגון (בשניות)" + +msgctxt "#30523" +msgid "Transcode MPEG2" +msgstr "המרת קידוד MPEG2" + +msgctxt "#30526" +msgid "Transcode AV1" +msgstr "המרת קידוד AV1" + +msgctxt "#30528" +msgid "Permanent users" +msgstr "משתמשים קבועים" + +msgctxt "#30531" +msgid "Enable new content" +msgstr "אפשר תוכן חדש" + +msgctxt "#30533" +msgid "Duration of the music library pop up" +msgstr "משך זמן הצגת חלון קופץ של ספריית המוזיקה" + +msgctxt "#30536" +msgid "Allow the screensaver during syncs" +msgstr "אפשר שומר מסך בזמן סנכרונים" + +msgctxt "#30537" +msgid "Transcode Hi10P" +msgstr "המרת קידוד Hi10P" + +msgctxt "#30539" +msgid "Login" +msgstr "התחברות" + +msgctxt "#30540" +msgid "Manual login" +msgstr "התחברות ידנית" + +msgctxt "#30545" +msgid "Enable server offline" +msgstr "אפשר שרת במצב לא מקוון" + +msgctxt "#30547" +msgid "Display message" +msgstr "הצג הודעות" + +msgctxt "#30602" +msgid "Password" +msgstr "סיסמה" + +msgctxt "#30605" +msgid "Sign in" +msgstr "כניסה" + +msgctxt "#30606" +msgid "Cancel" +msgstr "ביטול" + +msgctxt "#30607" +msgid "Select main server" +msgstr "בחר שרת ראשי" + +msgctxt "#30608" +msgid "Username or password cannot be empty" +msgstr "שם משתמש או סיסמה לא יכולים להיות ריקים" + +msgctxt "#30610" +msgid "Connect to" +msgstr "התחבר אל" + +msgctxt "#30611" +msgid "Manually add server" +msgstr "הוסף שרת באופן ידני" + +msgctxt "#30612" +msgid "Please sign in" +msgstr "אנא התחבר" + +msgctxt "#30613" +msgid "Change Jellyfin Connect user" +msgstr "שנה את המשתמש בחיבור לג'ליפין" + +msgctxt "#30614" +msgid "Connect to server" +msgstr "התחבר לשרת" + +msgctxt "#30615" +msgid "Host" +msgstr "שרת" + +msgctxt "#30616" +msgid "Connect" +msgstr "התחבר" + +msgctxt "#33000" +msgid "Welcome" +msgstr "ברוכים הבאים" + +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "שם משתמש או סיסמה שגויים" + +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "בחר ערוץ שמע" + +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "בחר ערוץ כתוביות" + +msgctxt "#33015" +msgid "Delete file from Jellyfin?" +msgstr "למחוק קובץ מג'ליפין?" + +msgctxt "#33016" +msgid "Play trailers?" +msgstr "לנגן טריילרים?" + +msgctxt "#33018" +msgid "Gathering boxsets" +msgstr "מאתר מארזי מדיה" + +msgctxt "#33021" +msgid "Gathering:" +msgstr "מאתר:" + +msgctxt "#33025" +msgid "Completed in:" +msgstr "הושלם ב:" + +msgctxt "#33036" +msgid "Add-on (default)" +msgstr "תוסף (ברירת מחדל)" + +msgctxt "#33039" +msgid "Enable music library?" +msgstr "אפשר ספריית מוזיקה?" + +msgctxt "#33047" +msgid "Kodi can't locate file:" +msgstr "קודי לא יכול לאתר את הקובץ:" From 1caa69f83171fa134c1f67562053ebf2638cd89f Mon Sep 17 00:00:00 2001 From: bene toffix Date: Sun, 31 Dec 2023 18:15:47 +0000 Subject: [PATCH 27/70] Translated using Weblate (Catalan) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/ca/ --- .../language/resource.language.ca/strings.po | 988 +++++++++++++++++- 1 file changed, 986 insertions(+), 2 deletions(-) diff --git a/resources/language/resource.language.ca/strings.po b/resources/language/resource.language.ca/strings.po index 062e3ac8..08378dcf 100644 --- a/resources/language/resource.language.ca/strings.po +++ b/resources/language/resource.language.ca/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-02-08 12:51+0000\n" -"Last-Translator: Roger Macaya \n" +"PO-Revision-Date: 2024-01-01 21:30+0000\n" +"Last-Translator: bene toffix \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -26,3 +26,987 @@ msgstr "Nom del servidor" msgctxt "#30002" msgid "Force HTTP playback" msgstr "Forçar reproducció per HTTP" + +msgctxt "#30022" +msgid "Advanced" +msgstr "Avançat" + +msgctxt "#30024" +msgid "Username" +msgstr "Nom d'usuari" + +msgctxt "#30162" +msgid "Preferred audio codec" +msgstr "Còdec d'àudio preferit" + +msgctxt "#30164" +msgid "Audio max channels" +msgstr "Límit de canals d'àudio" + +msgctxt "#30165" +msgid "Allow burned subtitles" +msgstr "Permetre subtítols permanents" + +msgctxt "#30171" +msgid "In Progress TV Shows" +msgstr "Emisions de TV en progrés" + +msgctxt "#30174" +msgid "Recently Added Movies" +msgstr "Pel·lícules afegides recentment" + +msgctxt "#30175" +msgid "Recently Added Episodes" +msgstr "Episodis afegits recentment" + +msgctxt "#30178" +msgid "In Progress Episodes" +msgstr "Episodis en progrés" + +msgctxt "#30180" +msgid "Favorite Movies" +msgstr "Pel·lícules preferides" + +msgctxt "#30181" +msgid "Favorite Shows" +msgstr "Emsions de TV preferides" + +msgctxt "#30182" +msgid "Favorite Episodes" +msgstr "Episodis preferits" + +msgctxt "#30185" +msgid "Boxsets" +msgstr "Coleccions" + +msgctxt "#30189" +msgid "Unwatched Movies" +msgstr "Pel·lícules no vistes" + +msgctxt "#30229" +msgid "Random Items" +msgstr "Elements aleatoris" + +msgctxt "#30249" +msgid "Enable welcome message" +msgstr "Habilitar missatge de benvinguda" + +msgctxt "#30251" +msgid "Recently added Home Videos" +msgstr "Vídeos familiars afegits recentment" + +msgctxt "#30253" +msgid "Favourite Home Videos" +msgstr "Vídeos familiars preferits" + +msgctxt "#30254" +msgid "Favourite Photos" +msgstr "Fotografies preferides" + +msgctxt "#30255" +msgid "Favourite Albums" +msgstr "Àlbums preferits" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "Videoclips en progrés" + +msgctxt "#30258" +msgid "Unwatched Music videos" +msgstr "Videoclips no vistos" + +msgctxt "#30302" +msgid "Movies" +msgstr "Pel·lícules" + +msgctxt "#30305" +msgid "TV Shows" +msgstr "Emsions de TV" + +msgctxt "#30401" +msgid "Jellyfin options" +msgstr "Opcions de Jellyfin" + +msgctxt "#30402" +msgid "Jellyfin transcode" +msgstr "Transcodificació de Jellyfin" + +msgctxt "#30405" +msgid "Add to favorites" +msgstr "Afegir a preferits" + +msgctxt "#30406" +msgid "Remove from favorites" +msgstr "Esborrar de preferits" + +msgctxt "#30408" +msgid "Settings" +msgstr "Ajustaments" + +msgctxt "#30409" +msgid "Delete from Jellyfin" +msgstr "Esborrar de Jellyfin" + +msgctxt "#30410" +msgid "Refresh this item" +msgstr "Actualitzar aquest element" + +msgctxt "#30412" +msgid "Transcode" +msgstr "Transcodificar" + +msgctxt "#30500" +msgid "Verify connection" +msgstr "Verificar connexió" + +msgctxt "#30504" +msgid "Use alternate device name" +msgstr "Utilitzi un nom de dispositiu alternatiu" + +msgctxt "#30506" +msgid "Sync" +msgstr "Sincronitzar" + +msgctxt "#30509" +msgid "Enable music library" +msgstr "Habilitar biblioteca de música" + +msgctxt "#30511" +msgid "Playback mode" +msgstr "Mode de reproducció" + +msgctxt "#30512" +msgid "Enable artwork caching" +msgstr "Habilitar memòria cau d'imatges" + +msgctxt "#30515" +msgid "Paging - max items requested (default: 15)" +msgstr "Paginació - elements solicitats màxims (per defecte: 15)" + +msgctxt "#30516" +msgid "Playback" +msgstr "Reproducció" + +msgctxt "#30517" +msgid "Network credentials" +msgstr "Credencials de xarxa" + +msgctxt "#30518" +msgid "Enable cinema mode" +msgstr "Habilitar mode cinèma" + +msgctxt "#30519" +msgid "Ask to play trailers" +msgstr "Preguntar per reproduir tràilers" + +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "Retrocedir en reprendre (en segons)" + +msgctxt "#30522" +msgid "Transcode H265/HEVC" +msgstr "Transcodificar H.256/HEVC" + +msgctxt "#30523" +msgid "Transcode MPEG2" +msgstr "Transcodificar MPEG2" + +msgctxt "#30524" +msgid "Transcode VC-1" +msgstr "Transcodificar VC-1" + +msgctxt "#30525" +msgid "Transcode VP9" +msgstr "Transcodificar VP9" + +msgctxt "#30526" +msgid "Transcode AV1" +msgstr "Transcodificar AV1" + +msgctxt "#30528" +msgid "Permanent users" +msgstr "Usuaris permanents" + +msgctxt "#30529" +msgid "Startup delay (in seconds)" +msgstr "Retard d'inici (en segons)" + +msgctxt "#30530" +msgid "Enable server restart message" +msgstr "Habilitar missatge al reiniciar el servidor" + +msgctxt "#30531" +msgid "Enable new content" +msgstr "Habilitar nou contingut" + +msgctxt "#30532" +msgid "Duration of the video library pop up" +msgstr "Avís emergent de la duarció de la biblioteca de vídeo" + +msgctxt "#30537" +msgid "Transcode Hi10P" +msgstr "Transcodificar Hi10P" + +msgctxt "#30539" +msgid "Login" +msgstr "Inici de sesió" + +msgctxt "#30540" +msgid "Manual login" +msgstr "Inici de sesió manual" + +msgctxt "#30545" +msgid "Enable server offline" +msgstr "Habilitar servidor offline" + +msgctxt "#30547" +msgid "Display message" +msgstr "Mostrar missatge" + +msgctxt "#30602" +msgid "Password" +msgstr "Contrasenya" + +msgctxt "#30605" +msgid "Sign in" +msgstr "Iniciar sesió" + +msgctxt "#30606" +msgid "Cancel" +msgstr "Cancel·lar" + +msgctxt "#30607" +msgid "Select main server" +msgstr "Seleccionar servidor principal" + +msgctxt "#30609" +msgid "Unable to connect to the selected server" +msgstr "No es pot connectar al servidor seleccionat" + +msgctxt "#30610" +msgid "Connect to" +msgstr "Connectar amb" + +msgctxt "#30611" +msgid "Manually add server" +msgstr "Afegir servidor manualment" + +msgctxt "#30612" +msgid "Please sign in" +msgstr "Si us plau, inici sesió" + +msgctxt "#30613" +msgid "Change Jellyfin Connect user" +msgstr "Canviar usuari de connexió de Jellyfin" + +msgctxt "#30614" +msgid "Connect to server" +msgstr "Connectar amb el servidor" + +msgctxt "#30615" +msgid "Host" +msgstr "Host" + +msgctxt "#30616" +msgid "Connect" +msgstr "Connectar" + +msgctxt "#30617" +msgid "Server or port cannot be empty" +msgstr "El servidor o el port no poden estar buits" + +msgctxt "#33000" +msgid "Welcome" +msgstr "Benvingut" + +msgctxt "#33006" +msgid "Server is restarting" +msgstr "El servidor s'està reiniciant" + +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "Usuari o contrasenya incorrectes" + +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "Seleccioni stream de subtítols" + +msgctxt "#33015" +msgid "Delete file from Jellyfin?" +msgstr "Esborrar fitxer de Jellyfin?" + +msgctxt "#33016" +msgid "Play trailers?" +msgstr "Reproduir tràilers?" + +msgctxt "#33018" +msgid "Gathering boxsets" +msgstr "Recopilant boxsets" + +msgctxt "#33021" +msgid "Gathering:" +msgstr "Recopilant:" + +msgctxt "#33025" +msgid "Completed in:" +msgstr "Completat en:" + +msgctxt "#33037" +msgid "Native (direct paths)" +msgstr "Natiu (camins directes)" + +msgctxt "#33039" +msgid "Enable music library?" +msgstr "Habilitar biblioteca de música?" + +msgctxt "#33058" +msgid "Perform local database reset" +msgstr "Restablir la base de dades local" + +msgctxt "#33060" +msgid "Sync theme media" +msgstr "Sincronitzar el tema dels mitjans" + +msgctxt "#33061" +msgid "Add/Remove user from the session" +msgstr "Afegir/Eliminar usuari de la sessió" + +msgctxt "#33062" +msgid "Add user" +msgstr "Afegir usuari" + +msgctxt "#33063" +msgid "Remove user" +msgstr "Eliminar usuari" + +msgctxt "#33086" +msgid "Remove all cached artwork?" +msgstr "Esborrar la memòria cau d'imatges?" + +msgctxt "#33088" +msgid "Database reset has completed, Kodi will now restart to apply the changes." +msgstr "" +"El restabliment de la base de dades s'ha completat, Kodi es reiniciarà per " +"aplicar els canvis." + +msgctxt "#33091" +msgid "Created backup at:" +msgstr "Còpia de seguretat creada al:" + +msgctxt "#33092" +msgid "Create a backup" +msgstr "Crear una còpia de seguretat" + +msgctxt "#33093" +msgid "Backup folder" +msgstr "Carpeta de la còpia de seguretat" + +msgctxt "#33098" +msgid "Refresh boxsets" +msgstr "Actualitzar boxsets" + +msgctxt "#33106" +msgid "Enable the option to transcode" +msgstr "Habilitar opció de transcodificar" + +msgctxt "#33109" +msgid "Plugin" +msgstr "Complement" + +msgctxt "#33110" +msgid "Restart Kodi to take effect." +msgstr "Reiniciar Kodi perquè faci efecte." + +msgctxt "#33114" +msgid "Enable external subtitles" +msgstr "Habilitar subtítols externs" + +msgctxt "#33120" +msgid "Select the libraries to add" +msgstr "Selecciona les biblioteques per a afegir" + +msgctxt "#33123" +msgid "Sync library to Kodi" +msgstr "Sincronitzar biblioteca amb Kodi" + +msgctxt "#33125" +msgid "Enable remote control" +msgstr "Habilitar control remot" + +msgctxt "#33130" +msgid "Select the source" +msgstr "Selecciona l'origen" + +msgctxt "#33131" +msgid "Refreshing boxsets" +msgstr "Actualitzar boxsets" + +msgctxt "#33132" +msgid "Repair library" +msgstr "Reparar biblioteca" + +msgctxt "#33133" +msgid "Remove library from Kodi" +msgstr "Esborrar biblioteca de Kodi" + +msgctxt "#33134" +msgid "Add server" +msgstr "Afegir servidor" + +msgctxt "#33136" +msgid "Update library" +msgstr "Actualitzar biblioteca" + +msgctxt "#33140" +msgid "Repair libraries" +msgstr "Reparar biblioteques" + +msgctxt "#33148" +msgid "Your access to this server is restricted." +msgstr "El teu accés a aquest servidor està restringit." + +msgctxt "#33150" +msgid "Update server information" +msgstr "Actualitzar la informació del servidor" + +msgctxt "#33152" +msgid "Unable to locate TV Tunes in Kodi." +msgstr "No s'ha pogut localitzar TV Tunes a Kodi." + +msgctxt "#33153" +msgid "Your Jellyfin theme media has been synced to Kodi" +msgstr "Els teus temes de Jellyfin han sigut sincronitzats amb Kodi" + +msgctxt "#33154" +msgid "Add libraries" +msgstr "Afegir biblioteques" + +msgctxt "#33156" +msgid "A patch has been applied!" +msgstr "S'ha aplicat un pedaç!" + +msgctxt "#33157" +msgid "Audio only" +msgstr "Només àudio" + +msgctxt "#33158" +msgid "Subtitles only" +msgstr "Només subtítols" + +msgctxt "#33163" +msgid "Disabled/Media default" +msgstr "Deshabilitat/Mitjans predeterminat" + +msgctxt "#33160" +msgid "To avoid errors, please update Jellyfin for Kodi to version: " +msgstr "Per a evitar errors, actualitzi Jellyfin for Kodi a la versió: " + +msgctxt "#33161" +msgid "Update password" +msgstr "Actualitzar contrasenya" + +msgctxt "#33166" +msgid "(dynamic)" +msgstr "(dinàmic)" + +msgctxt "#33167" +msgid "Recently added" +msgstr "Afegits recentment" + +msgctxt "#33168" +msgid "Favourites" +msgstr "Preferits" + +msgctxt "#33169" +msgid "In Progress" +msgstr "En progrès" + +msgctxt "#33170" +msgid "Unwatched" +msgstr "Pendents de veure" + +msgctxt "#33171" +msgid "By first letter" +msgstr "Per la inicial" + +msgctxt "#33174" +msgid "Paging - download threads (default: 3)" +msgstr "Paginació - processos de descarrega (predeterminat: 3)" + +msgctxt "#33176" +msgid "Update or repair your libraries to apply the changes below." +msgstr "" +"Actualitzar o reparar les biblioteques per aplicar els canvis a continuació." + +msgctxt "#33178" +msgid "Processing updates" +msgstr "Processant canvis" + +msgctxt "#33179" +msgid "Force transcode" +msgstr "Forçar la transcodificació" + +msgctxt "#33180" +msgid "Restart Jellyfin for Kodi" +msgstr "Reiniciar Jellyfin for Kodi" + +msgctxt "#33181" +msgid "Restarting to apply the patch" +msgstr "Reiniciar per a aplicar el pedaç" + +msgctxt "#33182" +msgid "Play with cinema mode" +msgstr "Reproduir en mode cinema" + +msgctxt "#33183" +msgid "Enable the option to play with cinema mode" +msgstr "Habilitar l'opció per reproduir en mode cinema" + +msgctxt "#33184" +msgid "Remove libraries" +msgstr "Esborrar biblioteques" + +msgctxt "#33185" +msgid "Enable sync during playback (may cause some lag)" +msgstr "" +"Habilitar sincronització durant la reproducció (pot provocar algun " +"endarreriment)" + +msgctxt "#33191" +msgid "Restart Jellyfin for Kodi to apply this change?" +msgstr "Reiniciar Jellyfin for Kodi per a aplicar aquest canvi?" + +msgctxt "#33193" +msgid "Restarting..." +msgstr "Reiniciant…" + +msgctxt "#33194" +msgid "Manage libraries" +msgstr "Administrar biblioteques" + +msgctxt "#33195" +msgid "Enable Jellyfin for Kodi" +msgstr "Habilitar Jellyfin for Kodi" + +msgctxt "#33196" +msgid "Advanced options" +msgstr "Opcions avançades" + +msgctxt "#33198" +msgid "Select the libraries to update" +msgstr "Seleccioni les biblioteques per a actualitzar" + +msgctxt "#33199" +msgid "Select the libraries to repair" +msgstr "Seleccioni les biblioteques per a reparar" + +msgctxt "#33200" +msgid "Select the libraries to remove" +msgstr "Seleccioni les biblioteques per a esborrar" + +msgctxt "#33202" +msgid "Transcode H265/HEVC RExt" +msgstr "Transcodificar H265/HEVC RExt" + +msgctxt "#33128" +msgid "Failed to retrieve latest content updates. No content updates will be applied until Kodi is restarted. If this issue persists, please report on the Jellyfin for Kodi forums, with your Kodi log." +msgstr "" +"No s'han pogut recuperar les actualitzacions de contingut més recents. No " +"s'aplicaran actualitzacions de contingut fins que es reiniciï Kodi. Si " +"aquest problema persisteix, si us plau notifica-ho al fòrum de Jellyfin for " +"Kodi, amb el seu registre (log) de Kodi." + +msgctxt "#33129" +msgid "You can sync libraries by launching the Jellyfin add-on > Add libraries." +msgstr "" +"Pot sincronitzar les biblioteques iniciant el Add-on Jellyfin > Afegir " +"biblioteques." + +msgctxt "#33135" +msgid "Kodi will now restart to apply a small patch for your Kodi version." +msgstr "" +"Es reiniciarà Kodi per aplicar un petit pedaç per la vostra versió de Kodi." + +msgctxt "#33137" +msgid "Enable Kodi Sync Queue" +msgstr "Habilitar Kodi Sync Queue" + +msgctxt "#33138" +msgid "You can update your library manually rather than rely on the server plugin Kodi Sync Queue. Launch the add-on and update libraries (or per library). To remove content, you'll need to repair the library." +msgstr "" +"Pot actualitzar la seva biblioteca manualment en contres de confiar amb el " +"complement del servidor Kodi Sync Queue. Iniciï el complement i actualitzi " +"les biblioteques (o per biblioteca). Per suprimir el contingut, haurà de " +"reparar la biblioteca." + +msgctxt "#33139" +msgid "Update libraries" +msgstr "Actualitzar biblioteques" + +msgctxt "#33141" +msgid "Remove server" +msgstr "Esborrar servidor" + +msgctxt "#33142" +msgid "Something went wrong. Try again later." +msgstr "Alguna cosa ha sortit malament. Prova-ho de nou més tard." + +msgctxt "#33143" +msgid "Enable the option to delete" +msgstr "Habilitar opció d'esborrat" + +msgctxt "#33144" +msgid "Removing library" +msgstr "Suprimint biblioteca" + +msgctxt "#33145" +msgid "Please make sure your Samba (smb) share of your Jellyfin server is accessible to your Kodi installation and that you have path substitution configured on your server. Otherwise, Kodi may fail to locate your files." +msgstr "" +"Si us plau, asseguris que l'accés compartit Samba (smb) del vostre servidor " +"Jellyfin sigui accessible des de la instal·lació de Kodi i que tingui la " +"substitució de ruta configurada al vostre servidor. Altrament, Kodi podria " +"no localitzar els vostres fitxers." + +msgctxt "#33146" +msgid "Unable to connect to Jellyfin." +msgstr "No s'ha pogut connectar amb Jellyfin." + +msgctxt "#33147" +msgid "Your access to Jellyfin is restricted." +msgstr "El teu accés amb Jellyfin està restringit." + +msgctxt "#33149" +msgid "Unable to connect to this server." +msgstr "No s'ha pogut connectar amb aquest servidor." + +msgctxt "#33151" +msgid "Reconnect to the same server that was previously loaded. If you want to use a different server, reset your local database, including your user information." +msgstr "" +"Tornar a connectar al mateix servidor connectar anteriorment. Si desitja " +"utilitzar un servidor diferent, restableix la base de dades local, incloent " +"la informació d'usuari." + +msgctxt "#33155" +msgid "The currently applied patch for Jellyfin for Kodi is corrupted! Please post to the Jellyfin for Kodi forums if this issue persists. This will need to be fixed as soon as possible." +msgstr "" +"El pedaç aplicat actualment de Jellyfin per a Kodi està danyat. Si us plau, " +"comunica-ho en el fòrum Jellyfin for Kodi si aquest problema persisteix. El " +"problema serà solucionat tan aviat com sigui possible." + +msgctxt "#30003" +msgid "Login method" +msgstr "Mètode d'identificació" + +msgctxt "#30004" +msgid "Log level" +msgstr "Nivell de registre (log)" + +msgctxt "#30016" +msgid "Device name" +msgstr "Nom del dispositiu" + +msgctxt "#30091" +msgid "Confirm file deletion" +msgstr "Confirmi l'esborrat del fitxer" + +msgctxt "#30114" +msgid "Offer delete after playback" +msgstr "Ofereix l'esborrat després de la reproducció" + +msgctxt "#30115" +msgid "For Episodes" +msgstr "Per a Episodis" + +msgctxt "#30116" +msgid "For Movies" +msgstr "Per a Pel·lícules" + +msgctxt "#30157" +msgid "Enable enhanced artwork (i.e. cover art)" +msgstr "Activa il·lustracions millorades (ex. portada)" + +msgctxt "#30160" +msgid "Max stream bitrate" +msgstr "Taxa de bits màxima" + +msgctxt "#30161" +msgid "Preferred video codec" +msgstr "Còdec de vídeo preferit" + +msgctxt "#30163" +msgid "Audio bitrate" +msgstr "Taxa de bits d'àudio" + +msgctxt "#30170" +msgid "Recently Added TV Shows" +msgstr "Emisions de TV afegides recentment" + +msgctxt "#30177" +msgid "In Progress Movies" +msgstr "Pel·lícules en progrés" + +msgctxt "#30179" +msgid "Next Episodes" +msgstr "Següents episodis" + +msgctxt "#30230" +msgid "Recommended Items" +msgstr "Elements recomenats" + +msgctxt "#30235" +msgid "Interface" +msgstr "Interfície" + +msgctxt "#30239" +msgid "Reset local Kodi database" +msgstr "Restablir les bases de dades local de Kodi" + +msgctxt "#30252" +msgid "Recently added Photos" +msgstr "Fotografies afegides recentment" + +msgctxt "#30256" +msgid "Recently added Music videos" +msgstr "Videoclips afegits recentment" + +msgctxt "#30507" +msgid "Enable notification if update count is greater than" +msgstr "Activi notificacions si el comptador d'actualitzacions és major a" + +msgctxt "#30520" +msgid "Skip the delete confirmation (use at your own risk)" +msgstr "Ometre confirmació d'esborrat (utilitzi sota la vostra responsabilitat)" + +msgctxt "#30527" +msgid "Ignore specials in next episodes" +msgstr "Ignorar especials en els següents episodis" + +msgctxt "#33159" +msgid "Enable audio/subtitles selection" +msgstr "Habilitar la selecció àudio/subtítols" + +msgctxt "#30533" +msgid "Duration of the music library pop up" +msgstr "Avís emergent de la duració de la biblioteca de música" + +msgctxt "#30534" +msgid "Notifications (in seconds)" +msgstr "Notificacions (en segons)" + +msgctxt "#30535" +msgid "Generate a new device Id" +msgstr "Generar un nou identificador de dispositiu" + +msgctxt "#33162" +msgid "Reset the music library?" +msgstr "Restablir la biblioteca de música?" + +msgctxt "#30536" +msgid "Allow the screensaver during syncs" +msgstr "Permetre el salvapantalles durant la sincronització" + +msgctxt "#30543" +msgid "Username or email" +msgstr "Nom d'usuari o email" + +msgctxt "#33164" +msgid "Mask sensitive information in log (does not apply to kodi logging)" +msgstr "" +"Emmascarar la informació sensible en el registre (log), no s'aplica al " +"registre Kodi" + +msgctxt "#33165" +msgid "Failed to create backup" +msgstr "No s'ha pogut crear la còpia de seguretat" + +msgctxt "#30608" +msgid "Username or password cannot be empty" +msgstr "El nom d'usuari i la contrasenya no poden estar buits" + +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "Seleccionar stream d'àudio" + +msgctxt "#33172" +msgid "You have {number} updates pending. This may take a little while before seeing new content. It might be faster to update your libraries via launching the Jellyfin add-on > update libraries. Proceed anyway?" +msgstr "" +"Tens {number} actualitzacions pendents. Això pot tardar una estona abans de " +"poder veure el nou contingut. Es possible que sigui més ràpid actualitzar " +"les biblioteques mitjançant add-on Jellyfin > actualitzar biblioteques. " +"Procedir de totes maneres?" + +msgctxt "#33173" +msgid "Forget about the previous sync? This is not recommended." +msgstr "Oblidar la sincronització anterior? Això no és recomanable." + +msgctxt "#33175" +msgid "Paging tip: Each download thread requests your max items value from Jellyfin at the same time." +msgstr "" +"Consell de paginació: cada procés de descarrega sol·licita el valor màxim " +"dels elements des de Jellyfin a la vegada." + +msgctxt "#33177" +msgid "Display the progress bar if update count greater than" +msgstr "Mostrar la barra de progrés si el número de canvis és superior a" + +msgctxt "#33186" +msgid "The Kodi Sync Queue speeds up the start up sync. Other syncs are triggered by server events." +msgstr "" +"Kodi Sync Queue accelera la sincronització inicial. Altres sincronitzacions " +"es desencadenen mitjançant esdeveniments del servidor." + +msgctxt "#33197" +msgid "A sync is already running, please wait until it completes and try again." +msgstr "" +"Una sincronització ja està en procés, si us plau, esperi fins que es " +"completi i intenta-ho de nou." + +msgctxt "#33201" +msgid "Max artwork resolution" +msgstr "Resolució màxima per a les caràtules" + +msgctxt "#33033" +msgid "A new device Id has been generated. Kodi will now restart." +msgstr "S'ha generat un nou identificador de dispositiu. Kodi es reiniciarà." + +msgctxt "#33048" +msgid "You may need to verify your network credentials in the add-on settings or use the Jellyfin path substitution to format your path correctly (Jellyfin dashboard > library). Stop syncing?" +msgstr "" +"Es possible que necessiti verificar les credencials de la xarxa a la " +"configuració del Add-on o utilitzar la substitució del camí de Jellyfin per " +"a formatejar el seu camí correctament (panell de Jellyfin > biblioteca). " +"Deixar de sincronitzar?" + +msgctxt "#33035" +msgid "Caution! If you choose Native mode, certain Jellyfin features will be missing, such as: Jellyfin cinema mode, direct stream/transcode options and parental access schedule." +msgstr "" +"Precaució: Si escull el mode Natiu, algunes funcions de Jellyfin no estaran " +"disponibles, com: mode cinema de Jellyfin, opcions de transmissió directa/" +"transcodificació i horari parental." + +msgctxt "#33036" +msgid "Add-on (default)" +msgstr "Add-on (predeterminat)" + +msgctxt "#33047" +msgid "Kodi can't locate file:" +msgstr "Kodi no pot localitzar el fitxer:" + +msgctxt "#33049" +msgid "New" +msgstr "Nou" + +msgctxt "#33054" +msgid "Add user to session" +msgstr "Afegir usuari a la sessió" + +msgctxt "#33064" +msgid "Remove user from the session" +msgstr "Eliminar usuari de la sessió" + +msgctxt "#33074" +msgid "Are you sure you want to reset your local Kodi database?" +msgstr "Està segur que vol restablir la base de dades local de Kodi?" + +msgctxt "#33087" +msgid "Reset all Jellyfin add-on settings?" +msgstr "Restablir tots els ajustaments del Add-on de Jellyfin?" + +msgctxt "#33089" +msgid "Enter folder name for backup" +msgstr "Introdueix el nom de la carpeta per la còpia de seguretat" + +msgctxt "#33090" +msgid "Replace existing backup?" +msgstr "Substituir la còpia de seguretat existent?" + +msgctxt "#33097" +msgid "Important, cleanonupdate was removed in your advanced settings to prevent conflict with Jellyfin for Kodi. Kodi will restart now." +msgstr "" +"Important, netejar al actualitzar (cleanonupdate) s'ha eliminat de la seva " +"configuració avançada per prevenir conflictes amb Jellyfin for Kodi. Kodi es " +"reiniciarà." + +msgctxt "#33099" +msgid "Install the server plugin Kodi Sync Queue to automatically apply Jellyfin library updates at startup. This setting can be found in the add-on settings > sync options > Enable Kodi Sync Queue." +msgstr "" +"Instal·lar el complement del servidor Kodi Sync Queue per aplicar " +"automàticament les actualitzacions de la biblioteca Jellyfin a la posada en " +"marxa. Aquesta configuració es pot trobar als ajustaments del add-on > " +"opcions de sincronització > Habilitar Kodi Sync Queue." + +msgctxt "#33101" +msgid "Since you are using native playback mode with music enabled, do you want to import music rating from files?" +msgstr "" +"Com que estàs utilitzant el mode de reproducció nativa amb música " +"habilitada, vol importar la classificació de música dels fitxers?" + +msgctxt "#33102" +msgid "Resume the previous sync?" +msgstr "Continuar la sincronització anterior?" + +msgctxt "#33104" +msgid "Find more info in the github wiki/Create-and-restore-from-backup." +msgstr "Trobarà més informació a GitHub wiki/Create-and-restore-from-backup." + +msgctxt "#33105" +msgid "Enable the context menu" +msgstr "Habilitar menú contextual" + +msgctxt "#33107" +msgid "Users added to the session (no space between users). (eg username,username2)" +msgstr "" +"Usuaris afegits a la sessió (sense espai entre usuaris). (ex: " +"usuari1,usuari2)" + +msgctxt "#33108" +msgid "Notifications are delayed during video playback (except live tv)." +msgstr "" +"Les notificacions es posposaran durant la reproducció de vídeo (excepte TV " +"en directe)." + +msgctxt "#33111" +msgid "Reset the local database to apply the playback mode change." +msgstr "" +"Restablir la base de dades local per aplicar el canvi de mode de reproducció." + +msgctxt "#33112" +msgid "Applies to Native and Add-on playback mode" +msgstr "Aplica el mode de reproducció Natiu i Add-on" + +msgctxt "#33113" +msgid "Applies to Add-on playback mode only" +msgstr "Aplica només al mode de reproducció d'Add-on" + +msgctxt "#33115" +msgid "Transcode options" +msgstr "Opcions de transcodificació" + +msgctxt "#33116" +msgid "Compress artwork (reduces quality)" +msgstr "Comprimir imatges (redueix la qualitat)" + +msgctxt "#33118" +msgid "You've change the playback mode. Kodi needs to be reset to apply the change, would you like to do this now?" +msgstr "" +"Has canviat el mode de reproducció. Kodi necessita reiniciar els ajustaments " +"per aplicar el canvi, ho vol fer ara?" + +msgctxt "#33119" +msgid "Something went wrong during the sync. You'll be able to restore progress when restarting Kodi. If the problem persists, please report on the Jellyfin for Kodi forums, with your Kodi log." +msgstr "" +"Alguna cosa ha sortit malament durant la sincronització. Podràs restaurar el " +"progrès després de reiniciar Kodi. Si el problema persisteix, si us plau " +"notifica-ho en el fòrum de Jellyfin for Kodi, amb el registre (log) de Kodi." + +msgctxt "#33121" +msgid "All" +msgstr "Tot" + +msgctxt "#33122" +msgid "Restart Kodi to resume where you left off." +msgstr "Reinicia Kodi per continuar des d'on ho vas deixar." + +msgctxt "#33124" +msgid "Include people (slow)" +msgstr "Incloure persones (lent)" From 0b168211bec80179f3d63e4647044ba7092fb331 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:32:25 +0000 Subject: [PATCH 28/70] chore(deps): update appleboy/ssh-action action to v1.0.3 --- .github/workflows/publish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 0721ae57..9b8ce7e7 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -53,7 +53,7 @@ jobs: remote_key: ${{ secrets.DEPLOY_KEY }} - name: Add to Kodi repo and clean up - uses: appleboy/ssh-action@v1.0.0 + uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.DEPLOY_HOST }} username: ${{ secrets.DEPLOY_USER }} From 98a7ace54103c27c0c56e74c60285aaa38e0bd20 Mon Sep 17 00:00:00 2001 From: fezster <97789007+fezster@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:39:51 +0000 Subject: [PATCH 29/70] Pass HDR library metadata to kodi to display logos Fix indentation error Update actions.py Update api.py --- jellyfin_kodi/helper/api.py | 13 +++++++++++++ jellyfin_kodi/objects/actions.py | 1 + jellyfin_kodi/objects/kodi/queries.py | 6 +++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/helper/api.py b/jellyfin_kodi/helper/api.py index ea8e9ee9..5ae68eda 100644 --- a/jellyfin_kodi/helper/api.py +++ b/jellyfin_kodi/helper/api.py @@ -73,7 +73,20 @@ class API(object): for track in tracks: + if "DvProfile" in track: + track['hdrtype'] = "dolbyvision" + + elif track['VideoRangeType'] in ["HDR10", "HDR10Plus"]: + track['hdrtype'] = "hdr10" + + elif "HLG" in track['VideoRangeType']: + track['hdrtype'] = "hlg" + + elif track['VideoRangeType'] in ["SDR", "Unknown"]: + track['hdrtype'] = "" + track.update({ + 'hdrtype': track.get('hdrtype', "").lower(), 'codec': track.get('Codec', "").lower(), 'profile': track.get('Profile', "").lower(), 'height': track.get('Height'), diff --git a/jellyfin_kodi/objects/actions.py b/jellyfin_kodi/objects/actions.py index 06a73d55..34760167 100644 --- a/jellyfin_kodi/objects/actions.py +++ b/jellyfin_kodi/objects/actions.py @@ -455,6 +455,7 @@ class Actions(object): for track in obj['Streams']['video']: listitem.addStreamInfo('video', { + 'hdrtype': track['hdrtype'], 'duration': obj['Runtime'], 'aspect': track['aspect'], 'codec': track['codec'], diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 71459e2c..e142f306 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -258,10 +258,10 @@ add_bookmark_obj = ["{FileId}", "{PlayCount}", "{DatePlayed}", "{Resume}", "{Run add_streams_obj = ["{FileId}", "{Streams}", "{Runtime}"] add_stream_video = """ INSERT INTO streamdetails(idFile, iStreamType, strVideoCodec, fVideoAspect, iVideoWidth, - iVideoHeight, iVideoDuration, strStereoMode) -VALUES (?, ?, ?, ?, ?, ?, ?, ?) + iVideoHeight, iVideoDuration, strStereoMode, strHdrType) +VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """ -add_stream_video_obj = ["{FileId}", 0, "{codec}", "{aspect}", "{width}", "{height}", "{Runtime}", "{3d}"] +add_stream_video_obj = ["{FileId}", 0, "{codec}", "{aspect}", "{width}", "{height}", "{Runtime}", "{3d}", "{hdrtype}"] add_stream_audio = """ INSERT INTO streamdetails(idFile, iStreamType, strAudioCodec, iAudioChannels, strAudioLanguage) VALUES (?, ?, ?, ?, ?) From 39a5bd2ddcddc6ea642ae596396ad7d0f4fe2720 Mon Sep 17 00:00:00 2001 From: F F Date: Fri, 12 Jan 2024 14:49:02 +0000 Subject: [PATCH 30/70] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/da/ --- resources/language/resource.language.da/strings.po | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/language/resource.language.da/strings.po b/resources/language/resource.language.da/strings.po index 379e37c3..56d8c754 100644 --- a/resources/language/resource.language.da/strings.po +++ b/resources/language/resource.language.da/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-03-30 09:39+0000\n" -"Last-Translator: heim3x \n" +"PO-Revision-Date: 2024-01-13 15:30+0000\n" +"Last-Translator: F F \n" "Language-Team: Danish \n" "Language: da\n" @@ -995,3 +995,7 @@ msgstr "" msgctxt "#33125" msgid "Enable remote control" msgstr "Aktiver fjernstyring" + +msgctxt "#30512" +msgid "Enable artwork caching" +msgstr "Aktiver kunstværks caching" From 9af244de0f93a4ebc724363cf54540a446d48db1 Mon Sep 17 00:00:00 2001 From: hulkhaugen Date: Fri, 19 Jan 2024 18:50:19 +0000 Subject: [PATCH 31/70] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Kodi=20Tra?= =?UTF-8?q?nslate-URL:=20https://translate.jellyfin.org/projects/jellyfin/?= =?UTF-8?q?jellyfin-kodi/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource.language.nb_no/strings.po | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/resources/language/resource.language.nb_no/strings.po b/resources/language/resource.language.nb_no/strings.po index 9005629a..bd545851 100644 --- a/resources/language/resource.language.nb_no/strings.po +++ b/resources/language/resource.language.nb_no/strings.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-12-01 07:24+0000\n" -"Last-Translator: Karo Sidal \n" +"PO-Revision-Date: 2024-01-20 19:30+0000\n" +"Last-Translator: hulkhaugen \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_no\n" @@ -23,11 +23,11 @@ msgstr "Jellyfin for Kodi" msgctxt "#30000" msgid "Server address" -msgstr "Tjeneradresse" +msgstr "Serveradresse" msgctxt "#30001" msgid "Server name" -msgstr "Tjenernavn" +msgstr "Servernavn" msgctxt "#30002" msgid "Force HTTP playback" @@ -275,7 +275,7 @@ msgstr "Hopp tilbake ved gjenopptakelse av avspilling (i sekunder)" msgctxt "#30522" msgid "Transcode H265/HEVC" -msgstr "Omkod H.265/HEVC" +msgstr "Omkode H.265/HEVC" msgctxt "#30527" msgid "Ignore specials in next episodes" @@ -291,7 +291,7 @@ msgstr "Oppstartsforsinkelse (i sekunder)" msgctxt "#30530" msgid "Enable server restart message" -msgstr "Aktiver melding ved omstart av tjener" +msgstr "Aktiver melding ved omstart av server" msgctxt "#30531" msgid "Enable new content" @@ -319,7 +319,7 @@ msgstr "Tillat skjermsparer under synkronisering" msgctxt "#30537" msgid "Transcode Hi10P" -msgstr "Omkod Hi10P" +msgstr "Omkode Hi10P" msgctxt "#30539" msgid "Login" @@ -355,15 +355,15 @@ msgstr "Avbryt" msgctxt "#30607" msgid "Select main server" -msgstr "Velg hovedtjener" +msgstr "Velg hovedserver" msgctxt "#30608" msgid "Username or password cannot be empty" -msgstr "Brukernavn og passord kan ikke stå tomt" +msgstr "Brukernavn og passord kan ikke være tomt" msgctxt "#30609" msgid "Unable to connect to the selected server" -msgstr "Kunne ikke koble til valgt tjener" +msgstr "Kunne ikke koble til valgt server" msgctxt "#30610" msgid "Connect to" @@ -371,7 +371,7 @@ msgstr "Koble til" msgctxt "#30611" msgid "Manually add server" -msgstr "Legg til tjener manuelt" +msgstr "Legg til server manuelt" msgctxt "#30612" msgid "Please sign in" @@ -383,11 +383,11 @@ msgstr "Endre Jellyfin Connect-bruker" msgctxt "#30614" msgid "Connect to server" -msgstr "Koble til tjener" +msgstr "Koble til server" msgctxt "#30615" msgid "Host" -msgstr "Tjener" +msgstr "Vert" msgctxt "#30616" msgid "Connect" @@ -395,7 +395,7 @@ msgstr "Koble til" msgctxt "#30617" msgid "Server or port cannot be empty" -msgstr "Tjeneradresse og portnummer kan ikke stå tomme" +msgstr "Server eller portnummer kan ikke være tomme" msgctxt "#33000" msgid "Welcome" @@ -403,7 +403,7 @@ msgstr "Velkommen" msgctxt "#33006" msgid "Server is restarting" -msgstr "Tjeneren starter på nytt" +msgstr "Serveren starter på nytt" msgctxt "#33009" msgid "Invalid username or password" @@ -431,7 +431,7 @@ msgstr "Henter samlebokser" msgctxt "#33021" msgid "Gathering:" -msgstr "Henter:" +msgstr "Samler:" msgctxt "#33025" msgid "Completed in:" @@ -444,7 +444,7 @@ msgstr "En ny enhets-ID ble generert. Kodi vil nå starte på nytt." msgctxt "#33035" msgid "Caution! If you choose Native mode, certain Jellyfin features will be missing, such as: Jellyfin cinema mode, direct stream/transcode options and parental access schedule." msgstr "" -"Advarsel! Hvis du velger innebygdmodus vil enkelte Jellyfin-funksjoner " +"Advarsel! Hvis du velger opprinnelig modus vil enkelte Jellyfin-funksjoner " "mangle, som f.eks. Jellyfin-kinomodus, direktestrømmings-/" "omkodingsinnstillinger og foreldrestyringsplan." @@ -469,7 +469,7 @@ msgid "You may need to verify your network credentials in the add-on settings or msgstr "" "Du må muligens bekrefte nettverkspåloggingen i tilleggsinnstillingene eller " "bruke Jellyfin-filbaneerstatning for å formatere filbanen riktig (Jellyfin-" -"dashbordet > bibliotek). Stopp synkronisering?" +"dashbord > bibliotek). Stopp synkronisering?" msgctxt "#33049" msgid "New" @@ -477,7 +477,7 @@ msgstr "Ny" msgctxt "#33054" msgid "Add user to session" -msgstr "Legg bruker til i sesjonen" +msgstr "Legg bruker til i sesjon" msgctxt "#33058" msgid "Perform local database reset" @@ -513,7 +513,7 @@ msgstr "Fjern alle mellomlagrede omslagsbilder?" msgctxt "#33087" msgid "Reset all Jellyfin add-on settings?" -msgstr "Tilbakestill alle innstillinger for Jellyfin-utvidelsen?" +msgstr "Tilbakestill alle Jellyfin-utvidelse innstillinger?" msgctxt "#33088" msgid "Database reset has completed, Kodi will now restart to apply the changes." @@ -554,7 +554,7 @@ msgstr "Oppdater samlebokser" msgctxt "#33099" msgid "Install the server plugin Kodi Sync Queue to automatically apply Jellyfin library updates at startup. This setting can be found in the add-on settings > sync options > Enable Kodi Sync Queue." msgstr "" -"Installer programtillegget Kodi Sync Queue på tjeneren for å oppdatere " +"Installer programtillegget Kodi Sync Queue på serveren for å oppdatere " "Jellyfin-bibliotekene automatisk ved oppstart. Aktiver også innstillingen i " "Kodi under Utvidelser > Jellyfin > Innstillinger > Synkronisering > Aktiver " "Kodi Sync Queue." @@ -689,13 +689,13 @@ msgstr "Fjern bibliotek fra Kodi" msgctxt "#33134" msgid "Add server" -msgstr "Legg til tjener" +msgstr "Legg til server" msgctxt "#33135" msgid "Kodi will now restart to apply a small patch for your Kodi version." msgstr "" -"Kodi vil nå starte på nytt for at en liten rettelse for Kodi-versjonen din " -"skal tre i kraft." +"Kodi vil nå starte på nytt for at en liten feilrettelse for Kodi-versjonen " +"din skal tre i kraft." msgctxt "#33136" msgid "Update library" @@ -709,7 +709,7 @@ msgctxt "#33138" msgid "You can update your library manually rather than rely on the server plugin Kodi Sync Queue. Launch the add-on and update libraries (or per library). To remove content, you'll need to repair the library." msgstr "" "Du kan oppdatere biblioteket manuelt i stedet for å være avhengig av " -"tjenertillegget Kodi Sync Queue. Start tillegget og oppdater bibliotekene (" +"servertillegget Kodi Sync Queue. Start tillegget og oppdater bibliotekene (" "eller per bibliotek). For å fjerne innhold må du reparere biblioteket." msgctxt "#33139" @@ -722,7 +722,7 @@ msgstr "Reparer bibliotek" msgctxt "#33141" msgid "Remove server" -msgstr "Fjern tjener" +msgstr "Fjern server" msgctxt "#33142" msgid "Something went wrong. Try again later." @@ -739,9 +739,9 @@ msgstr "Fjerner bibliotek" msgctxt "#33145" msgid "Please make sure your Samba (smb) share of your Jellyfin server is accessible to your Kodi installation and that you have path substitution configured on your server. Otherwise, Kodi may fail to locate your files." msgstr "" -"Vennligst påse at Samba (smb)-volumet på Jellyfin-tjeneren er tilgjengelig " -"for Kodi-installasjonen og at du har erstatning av filbaner satt opp på " -"tjeneren. Ellers kan det hende at Kodi ikke finner filene dine." +"Vennligst påse at Samba (smb)-volumet på Jellyfin-serveren din er " +"tilgjengelig for Kodi-installasjonen og at du har erstatning av filbaner " +"satt opp på serveren. Ellers kan det hende at Kodi ikke finner filene dine." msgctxt "#33146" msgid "Unable to connect to Jellyfin." @@ -753,20 +753,20 @@ msgstr "Tilgangen din til Jellyfin er begrenset." msgctxt "#33148" msgid "Your access to this server is restricted." -msgstr "Tilgangen din til denne tjeneren er begrenset." +msgstr "Tilgangen din til denne serveren er begrenset." msgctxt "#33149" msgid "Unable to connect to this server." -msgstr "Kunne ikke koble til denne tjeneren." +msgstr "Kunne ikke koble til denne serveren." msgctxt "#33150" msgid "Update server information" -msgstr "Oppdater tjenerinformasjon" +msgstr "Oppdater serverinformasjon" msgctxt "#33151" msgid "Reconnect to the same server that was previously loaded. If you want to use a different server, reset your local database, including your user information." msgstr "" -"Koble til samme tjener som tidligere. Hvis du vil bruke en annen tjener, " +"Koble til samme server som tidligere. Hvis du vil bruke en annen server, " "nullstill den lokale databasen, inkludert brukerinformasjon." msgctxt "#33152" @@ -790,7 +790,7 @@ msgstr "" msgctxt "#33156" msgid "A patch has been applied!" -msgstr "En rettelse har blitt tatt i bruk!" +msgstr "En feilrettelse har blitt tatt i bruk!" msgctxt "#33157" msgid "Audio only" @@ -932,7 +932,7 @@ msgstr "Aktiver Jellyfin for Kodi" msgctxt "#33196" msgid "Advanced options" -msgstr "Avanserte valg" +msgstr "Avanserte alternativer" msgctxt "#33197" msgid "A sync is already running, please wait until it completes and try again." @@ -954,7 +954,7 @@ msgstr "Velg bibliotekene du vil fjerne" msgctxt "#33161" msgid "Update password" -msgstr "Endre passord" +msgstr "Oppdater passord" msgctxt "#33201" msgid "Max artwork resolution" @@ -966,11 +966,11 @@ msgstr "Omkodingsinnstillinger" msgctxt "#30524" msgid "Transcode VC-1" -msgstr "Omkod VC-1" +msgstr "Omkode VC-1" msgctxt "#30523" msgid "Transcode MPEG2" -msgstr "Omkod MPEG2" +msgstr "Omkode MPEG2" msgctxt "#30165" msgid "Allow burned subtitles" @@ -1002,15 +1002,15 @@ msgstr "Deaktivert/Standard for media" msgctxt "#30526" msgid "Transcode AV1" -msgstr "Omkod AV1" +msgstr "Omkode AV1" msgctxt "#30525" msgid "Transcode VP9" -msgstr "Omkod VP9" +msgstr "Omkode VP9" msgctxt "#33202" msgid "Transcode H265/HEVC RExt" -msgstr "Omkod H265/HEVC RExt" +msgstr "Omkode H265/HEVC RExt" msgctxt "#33125" msgid "Enable remote control" From c0bc52e9faa22d54164985d98d9ab56306bbee88 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 22:32:15 +0000 Subject: [PATCH 32/70] chore(deps): update codecov/codecov-action action to v4 --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1c93d06c..90b6c5aa 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -66,7 +66,7 @@ jobs: coverage report - name: Upload coverage - uses: codecov/codecov-action@v3.1.4 + uses: codecov/codecov-action@v4.0.1 if: ${{ matrix.py_version == '3.11' }} - name: Publish Test Artifact From f25c8190a8f5fe720b65b0fd879663ce2ca4f8c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 08:07:10 +0000 Subject: [PATCH 33/70] chore(deps): update release-drafter/release-drafter action to v6 --- .github/workflows/create-prepare-release-pr.yaml | 2 +- .github/workflows/publish.yaml | 2 +- .github/workflows/release-drafter.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/create-prepare-release-pr.yaml b/.github/workflows/create-prepare-release-pr.yaml index cee06818..0cfbafc7 100644 --- a/.github/workflows/create-prepare-release-pr.yaml +++ b/.github/workflows/create-prepare-release-pr.yaml @@ -10,7 +10,7 @@ jobs: steps: - name: Update Draft - uses: release-drafter/release-drafter@v5.25.0 + uses: release-drafter/release-drafter@v6.0.0 id: draft env: GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }} diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 0721ae57..b8015c56 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -11,7 +11,7 @@ jobs: py_version: [ 'py2', 'py3' ] steps: - name: Update Draft - uses: release-drafter/release-drafter@v5.25.0 + uses: release-drafter/release-drafter@v6.0.0 if: ${{ matrix.py_version == 'py3' }} with: publish: true diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml index 1bcdc061..7357bfbc 100644 --- a/.github/workflows/release-drafter.yaml +++ b/.github/workflows/release-drafter.yaml @@ -11,6 +11,6 @@ jobs: runs-on: ubuntu-latest steps: - name: Update Release Draft - uses: release-drafter/release-drafter@v5.25.0 + uses: release-drafter/release-drafter@v6.0.0 env: GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }} From 37bee5984a4a3c50429c5fd50d71867c0c95d8ee Mon Sep 17 00:00:00 2001 From: jellyfin-bot Date: Sat, 3 Feb 2024 20:43:55 +0000 Subject: [PATCH 34/70] bump version to 0.7.12 --- release.yaml | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/release.yaml b/release.yaml index 97369bf3..a2f48c25 100644 --- a/release.yaml +++ b/release.yaml @@ -1,38 +1,24 @@ -version: '0.7.11' +version: '0.7.12' changelog: |- Bug Fixes --------- - + Fix music multidisc indexing (#761) @csaavedra - + Fix music video db update (#742) @GregoireDruant - + PyYAML 6 drops py2 support (#754) @oddstr13 - + Fix syncing of musicvideos with production year YYYYmmdd (#701) @oddstr13 + + Increase login timeout to 10s (#768) @disconn3ct - Code or Repo Maintenance + :white_check_mark: Tests ------------------------ - + Fix comment and documentation grammar (#708) @kovaacs - + Fix misleading if statement (#707) @kovaacs - - Documentation updates - --------------------- - + !!! Python 2 deprecation notice (#764) @oddstr13 - - Dependency updates - ----------------------------- - + Update kodistubs requirement from ~=19.0 to ~=20.0 (#704) @dependabot + + Fix convert_to_local tests on Windows (#785) @oddstr13 + + Add tests for helper.utils.convert_to_local (#775) @oddstr13 CI & build changes ------------------ - + Add devcontainer config (#752) @oddstr13 - + Update k3rnels-actions/pr-update action to v2 (#751) @renovate - + Update appleboy/ssh-action action to v0.1.10 (#746) @renovate - + Update codecov/codecov-action action to v3.1.4 (#747) @renovate - + Update release-drafter/release-drafter action to v5.24.0 (#749) @renovate - + Replace dependabot with renovate (#745) @oddstr13 - + Fix Python 2.7 workflows (#744) @oddstr13 - + Add Python 3.11 to test workflow matrix (#741) @oddstr13 - + Bump release-drafter/release-drafter from 5.21.1 to 5.22.0 (#703) @dependabot - + Bump appleboy/ssh-action from 0.1.6 to 0.1.7 (#702) @dependabot - + Bump appleboy/ssh-action from 0.1.5 to 0.1.6 (#698) @dependabot + + chore(deps): update release-drafter/release-drafter action to v6 (#814) @renovate + + Add Python 3.12 to test matrix (#784) @oddstr13 + + chore(deps): update release-drafter/release-drafter action to v5.25.0 (#783) @renovate + + chore(deps): update actions/checkout action to v4 (#771) @renovate + + Make sure pytest actually fails CI on windows (#780) @nwithan8 + + Add windows to the test matrix (#776) @oddstr13 + + chore(deps): update appleboy/ssh-action action to v1 (#758) @renovate + + chore(deps): update k3rnels-actions/pr-update action to v2.1.0 (#755) @renovate dependencies: py2: - addon: 'xbmc.python' From ab79f62772f802b03daa736450f85af189de341c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Sat, 3 Feb 2024 22:10:36 +0100 Subject: [PATCH 35/70] =?UTF-8?q?Remove=20Python=202=20support=20?= =?UTF-8?q?=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/Python 2.7/devcontainer.json | 38 ---------------------- .github/workflows/build.yaml | 2 +- .github/workflows/codeql.yaml | 14 +------- .github/workflows/publish.yaml | 2 +- .github/workflows/test.yaml | 18 ++-------- 5 files changed, 5 insertions(+), 69 deletions(-) delete mode 100644 .devcontainer/Python 2.7/devcontainer.json diff --git a/.devcontainer/Python 2.7/devcontainer.json b/.devcontainer/Python 2.7/devcontainer.json deleted file mode 100644 index ce0f9a92..00000000 --- a/.devcontainer/Python 2.7/devcontainer.json +++ /dev/null @@ -1,38 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/debian -{ - "name": "Python 2.7", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/base:bullseye", - - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - "features": { - "ghcr.io/devcontainers-contrib/features/apt-get-packages:1": { - "packages": "python2" - } - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "sudo ln -s /usr/bin/python2.7 /usr/bin/python; curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output /tmp/get-pip.py && sudo python /tmp/get-pip.py && pip install --user -r requirements-dev.txt", - - // Configure tool-specific properties. - "customizations": { - "vscode": { - "extensions": [ - "mikestead.dotenv", - "EditorConfig.EditorConfig", - "GitHub.vscode-pull-request-github", - "hbenl.vscode-test-explorer", - "redhat.vscode-xml", - "ninoseki.vscode-pylens" - ] - } - } - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" -} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d0800795..1940fab3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - py_version: [ 'py2', 'py3' ] + py_version: [ 'py3' ] steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 21253920..8c3b8301 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: language: [ 'python' ] - version: ['2.7', '3.9'] + version: ['3.9'] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -30,22 +30,10 @@ jobs: queries: +security-and-quality - name: Set up Python ${{ matrix.version }} - if: matrix.version != '2.7' uses: actions/setup-python@v4 with: python-version: ${{ matrix.version }} - - name: Set up Python 2.7 - if: matrix.version == '2.7' - run: | - sudo apt-get update - sudo apt-get install -y \ - python2.7 python2.7-dev python2-pip-whl - sudo ln -sf python2.7 /usr/bin/python - export PYTHONPATH=`echo /usr/share/python-wheels/pip-*py2*.whl` - sudo --preserve-env=PYTHONPATH python -m pip install --upgrade pip setuptools wheel - sudo chown -R $USER /usr/local/lib/python2.7 - - name: Autobuild uses: github/codeql-action/autobuild@v2 diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index b8015c56..dbb6a05a 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - py_version: [ 'py2', 'py3' ] + py_version: [ 'py3' ] steps: - name: Update Draft uses: release-drafter/release-drafter@v6.0.0 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1c93d06c..c6a83592 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -16,33 +16,19 @@ jobs: strategy: fail-fast: false matrix: - py_version: ['2.7', '3.9', '3.11', '3.12'] + py_version: ['3.9', '3.11', '3.12'] os: [ubuntu-latest, windows-latest] - exclude: - - os: windows-latest - py_version: '2.7' + runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py_version }} - if: matrix.py_version != '2.7' uses: actions/setup-python@v4 with: python-version: ${{ matrix.py_version }} - - name: Set up Python 2.7 - if: matrix.py_version == '2.7' - run: | - sudo apt-get update - sudo apt-get install -y \ - python2.7 python2.7-dev python2-pip-whl - sudo ln -sf python2.7 /usr/bin/python - export PYTHONPATH=`echo /usr/share/python-wheels/pip-*py2*.whl` - sudo --preserve-env=PYTHONPATH python -m pip install --upgrade pip setuptools wheel - sudo chown -R $USER /usr/local/lib/python2.7 - - name: Install dependencies run: | python -m pip install --upgrade pip From 06007841db6264598c1cfeb2b733df1531d0ed48 Mon Sep 17 00:00:00 2001 From: Lethargic806 Date: Sat, 3 Feb 2024 11:28:33 +0000 Subject: [PATCH 36/70] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/id/ --- resources/language/resource.language.id/strings.po | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/language/resource.language.id/strings.po b/resources/language/resource.language.id/strings.po index bc3a2deb..fab23971 100644 --- a/resources/language/resource.language.id/strings.po +++ b/resources/language/resource.language.id/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-05-18 17:21+0000\n" -"Last-Translator: Rania Amina \n" +"PO-Revision-Date: 2024-02-04 11:30+0000\n" +"Last-Translator: Lethargic806 \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -775,3 +775,7 @@ msgstr "Pilih pustaka yang akan ditambahkan" msgctxt "#33122" msgid "Restart Kodi to resume where you left off." msgstr "Mulai ulang Kodi untuk melanjutkan ke adegan yang Anda tinggalkan." + +msgctxt "#33125" +msgid "Enable remote control" +msgstr "Nyalakan kontrol jarak jauh" From 4b064cb0bc99417f08fb7776257c653807942a21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 15:18:16 +0000 Subject: [PATCH 37/70] chore(deps): update actions/setup-python action to v5 --- .github/workflows/build.yaml | 2 +- .github/workflows/codeql.yaml | 2 +- .github/workflows/publish.yaml | 2 +- .github/workflows/test.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1940fab3..8248a585 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python 3.x - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 87779aa5..2723bdfe 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -30,7 +30,7 @@ jobs: queries: +security-and-quality - name: Set up Python ${{ matrix.version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.version }} diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 9177abff..cf82c2fb 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python 3.x - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 363d01a5..3bf783fe 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,7 +25,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py_version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.py_version }} From bdebed0cf8b359cfac382acfb827efe6dd03a94d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Mon, 5 Feb 2024 17:38:01 +0000 Subject: [PATCH 38/70] =?UTF-8?q?Use=20fully=20qualified=20version=20numbe?= =?UTF-8?q?rs=20for=20CI=20=F0=9F=A7=B9=20Clean=20up=20CI=20after=20removi?= =?UTF-8?q?ng=20py2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yaml | 17 ++++++------- .github/workflows/codeql.yaml | 19 +++++++-------- .../workflows/create-prepare-release-pr.yaml | 2 +- .github/workflows/publish.yaml | 24 ++++++++----------- .github/workflows/test.yaml | 6 ++--- 5 files changed, 29 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8248a585..b0e6de81 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,15 +10,12 @@ on: jobs: build: runs-on: ubuntu-latest - strategy: - matrix: - py_version: [ 'py3' ] steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v4.1.1 - - name: Set up Python 3.x - uses: actions/setup-python@v5 + - name: Set up Python + uses: actions/setup-python@v5.0.0 with: python-version: 3.9 @@ -27,13 +24,13 @@ jobs: python -m pip install --upgrade pip python -m pip install pyyaml - - name: Create ${{ matrix.py_version }} addon.xml - run: python build.py --version ${{ matrix.py_version }} + - name: Build addon + run: python build.py - name: Publish Build Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v3.1.3 with: retention-days: 14 - name: ${{ matrix.py_version }}-build-artifact + name: py3-build-artifact path: | *.zip diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 2723bdfe..3b11f483 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -16,26 +16,23 @@ jobs: if: ${{ github.repository == 'jellyfin/jellyfin-kodi' }} strategy: fail-fast: false - matrix: - language: [ 'python' ] - version: ['3.9'] steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v4.1.1 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v3.24.0 with: - languages: ${{ matrix.language }} + languages: 'python' queries: +security-and-quality - - name: Set up Python ${{ matrix.version }} - uses: actions/setup-python@v5 + - name: Set up Python + uses: actions/setup-python@v5.0.0 with: - python-version: ${{ matrix.version }} + python-version: 3.9 - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v3.24.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v3.24.0 diff --git a/.github/workflows/create-prepare-release-pr.yaml b/.github/workflows/create-prepare-release-pr.yaml index 0cfbafc7..faafcdd9 100644 --- a/.github/workflows/create-prepare-release-pr.yaml +++ b/.github/workflows/create-prepare-release-pr.yaml @@ -21,7 +21,7 @@ jobs: yq-version: v4.9.1 - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v4.1.1 - name: Parse Changelog run: | diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index cf82c2fb..1bfcd727 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -6,23 +6,19 @@ on: jobs: publish: runs-on: ubuntu-latest - strategy: - matrix: - py_version: [ 'py3' ] steps: - name: Update Draft uses: release-drafter/release-drafter@v6.0.0 - if: ${{ matrix.py_version == 'py3' }} with: publish: true env: GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }} - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v4.1.1 - - name: Set up Python 3.x - uses: actions/setup-python@v5 + - name: Set up Python + uses: actions/setup-python@v5.0.0 with: python-version: 3.9 @@ -31,19 +27,19 @@ jobs: python -m pip install --upgrade pip python -m pip install pyyaml - - name: Create ${{ matrix.py_version }} addon.xml - run: python build.py --version ${{ matrix.py_version }} + - name: Build addon + run: python build.py - name: Publish Build Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v3.1.3 with: retention-days: 14 - name: ${{ matrix.py_version }}-build-artifact + name: py3-build-artifact path: | *.zip - name: Upload to repo server - uses: burnett01/rsync-deployments@5.2 + uses: burnett01/rsync-deployments@6.0.0 with: switches: -vrptz path: '*.zip' @@ -60,5 +56,5 @@ jobs: key: ${{ secrets.DEPLOY_KEY }} script_stop: true script: | - python3 /usr/local/bin/kodirepo add /srv/repository/incoming/kodi/plugin.video.jellyfin+${{ matrix.py_version }}.zip --datadir /srv/repository/releases/client/kodi/${{ matrix.py_version }}; - rm /srv/repository/incoming/kodi/plugin.video.jellyfin+${{ matrix.py_version }}.zip; + python3 /usr/local/bin/kodirepo add /srv/repository/incoming/kodi/plugin.video.jellyfin+py3.zip --datadir /srv/repository/releases/client/kodi/py3; + rm /srv/repository/incoming/kodi/plugin.video.jellyfin+py3.zip; diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 3bf783fe..5a274d83 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -22,10 +22,10 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v4.1.1 - name: Set up Python ${{ matrix.py_version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v5.0.0 with: python-version: ${{ matrix.py_version }} @@ -56,7 +56,7 @@ jobs: if: ${{ matrix.py_version == '3.11' }} - name: Publish Test Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v3.1.3 with: retention-days: 14 name: ${{ matrix.py_version }}-test-results From 248b49c86937a1af89909d4d9d844f3baedaa8c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Wed, 7 Feb 2024 08:54:53 +0100 Subject: [PATCH 39/70] Log when catching generic exceptions --- jellyfin_kodi/player.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/player.py b/jellyfin_kodi/player.py index 104f3901..bb6a8bea 100644 --- a/jellyfin_kodi/player.py +++ b/jellyfin_kodi/player.py @@ -329,7 +329,9 @@ class Player(xbmc.Player): try: item['CurrentPosition'] = int(self.getTime()) - except Exception: # at this point we should be playing and if not then bail out + except Exception as e: + # getTime() raises RuntimeError if nothing is playing + LOG.debug("Failed to get playback position: %s", e) return if int(item['CurrentPosition']) == 1: From e478e4b97516e6aa1093493c6cd444bf3a65b3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Wed, 7 Feb 2024 08:33:55 +0000 Subject: [PATCH 40/70] Remove py2 specific dependencies --- release.yaml | 17 ----------------- requirements-dev.txt | 14 +++++--------- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/release.yaml b/release.yaml index a2f48c25..1ac0cb1c 100644 --- a/release.yaml +++ b/release.yaml @@ -20,23 +20,6 @@ changelog: |- + chore(deps): update appleboy/ssh-action action to v1 (#758) @renovate + chore(deps): update k3rnels-actions/pr-update action to v2.1.0 (#755) @renovate dependencies: - py2: - - addon: 'xbmc.python' - version: '2.25.0' - - addon: 'script.module.requests' - version: '2.22.0' - - addon: 'script.module.dateutil' - version: '2.8.1' - - addon: 'script.module.six' - version: '1.13.0' - - addon: 'script.module.kodi-six' - version: '0.0.7' - - addon: 'script.module.addon.signals' - version: '0.0.5' - - addon: 'script.module.futures' - version: '2.2.0' - - addon: 'script.module.websocket' - version: '0.57.0' py3: - addon: 'xbmc.python' version: '3.0.0' diff --git a/requirements-dev.txt b/requirements-dev.txt index 137e9e9b..d8dcb12e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,15 +2,12 @@ setuptools >= 44.1.1 # Old setuptools causes script.module.addon.signals to fai six >= 1.13 python-dateutil >= 2.8.1 requests >= 2.22 -futures >= 2.2; python_version < '3.0' -PyYAML >= 5.4; python_version < '3.0' -PyYAML >= 6.0; python_version >= '3.6' +PyYAML >= 6.0 -backports.zoneinfo; python_version < "3.9" and python_version >= '3.0' -tzdata; platform_system == "Windows" and python_version >= '3.0' +backports.zoneinfo; python_version < "3.9" +tzdata; platform_system == "Windows" -Kodistubs ~= 18.0; python_version < '3.0' -Kodistubs ~= 20.0; python_version >= '3.6' +Kodistubs ~= 20.0 git+https://github.com/romanvm/kodi.six git+https://github.com/ruuk/script.module.addon.signals @@ -22,8 +19,7 @@ flake8-import-order >= 0.18 websocket-client >= 0.57.0 types-requests >= 2.31 -types-PyYAML >= 5.4; python_version < '3.0' -types-PyYAML >= 6.0; python_version >= '3.6' +types-PyYAML >= 6.0 types-six >= 1.13 types-python-dateutil >= 2.8.1 types-setuptools >= 44.1.1 From c0cc9b57701846f3be610b1f52057c30c3110fca Mon Sep 17 00:00:00 2001 From: Filipe Lopes Date: Tue, 6 Feb 2024 20:17:14 +0000 Subject: [PATCH 41/70] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt/ --- .../language/resource.language.pt/strings.po | 91 +++++++++++++++++-- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/resources/language/resource.language.pt/strings.po b/resources/language/resource.language.pt/strings.po index e495edfd..22106594 100644 --- a/resources/language/resource.language.pt/strings.po +++ b/resources/language/resource.language.pt/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-06-23 19:41+0000\n" -"Last-Translator: Diogo Pascoal \n" +"PO-Revision-Date: 2024-02-07 09:40+0000\n" +"Last-Translator: Filipe Lopes \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -151,14 +151,13 @@ msgctxt "#30239" msgid "Reset local Kodi database" msgstr "Reiniciar base de dados Kodi local" -#, fuzzy msgctxt "#30251" msgid "Recently added Home Videos" -msgstr "Recentemente adicionado a Videos de Casa" +msgstr "Recentemente adicionado a Videos Caseiros" msgctxt "#30252" msgid "Recently added Photos" -msgstr "Recentemente adicionado Fotos" +msgstr "Fotos adicionadas recentemente" msgctxt "#30249" msgid "Enable welcome message" @@ -166,7 +165,7 @@ msgstr "Ativar mensagem de boas-vindas" msgctxt "#30253" msgid "Favourite Home Videos" -msgstr "Vídeos de Casa Favoritos" +msgstr "Vídeos Caseiros Favoritos" msgctxt "#30254" msgid "Favourite Photos" @@ -179,3 +178,83 @@ msgstr "Adicionar aos Favoritos" msgctxt "#30305" msgid "TV Shows" msgstr "Séries" + +msgctxt "#30185" +msgid "Boxsets" +msgstr "Coleções" + +msgctxt "#30255" +msgid "Favourite Albums" +msgstr "Álbuns Favoritos" + +msgctxt "#30256" +msgid "Recently added Music videos" +msgstr "Videoclipes adicionados recentemente" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "Videoclipes em andamento" + +msgctxt "#30258" +msgid "Unwatched Music videos" +msgstr "Videoclipes não visualizados" + +msgctxt "#30302" +msgid "Movies" +msgstr "Filmes" + +msgctxt "#30401" +msgid "Jellyfin options" +msgstr "Opções do Jellyfin" + +msgctxt "#30402" +msgid "Jellyfin transcode" +msgstr "Transcodificação Jellyfin" + +msgctxt "#30406" +msgid "Remove from favorites" +msgstr "Remover dos favoritos" + +msgctxt "#30408" +msgid "Settings" +msgstr "Definições" + +msgctxt "#30409" +msgid "Delete from Jellyfin" +msgstr "Apagar do Jellyfin" + +msgctxt "#30410" +msgid "Refresh this item" +msgstr "Atualizar este item" + +msgctxt "#30412" +msgid "Transcode" +msgstr "Transcodificar" + +msgctxt "#30500" +msgid "Verify connection" +msgstr "Verificar conexão" + +msgctxt "#30504" +msgid "Use alternate device name" +msgstr "Usar nome de dispositivo alternativo" + +msgctxt "#30506" +msgid "Sync" +msgstr "Sincronizar" + +msgctxt "#30507" +msgid "Enable notification if update count is greater than" +msgstr "Ativar notificação se a quantidade de atualizações for maior que" + +msgctxt "#30509" +msgid "Enable music library" +msgstr "Ativar biblioteca de musica" + +msgctxt "#30511" +msgid "Playback mode" +msgstr "Modo de reprodução" + +msgctxt "#30512" +msgid "Enable artwork caching" +msgstr "Ativar a cache de artes" From dad390c217a1b335878bf53cc4b2f65fd71f58cb Mon Sep 17 00:00:00 2001 From: Sylvain CECCHETTO Date: Thu, 28 Dec 2023 08:16:27 +0100 Subject: [PATCH 42/70] Use xbmcvfs functions to read and write filesystem files (fix Jellyfin addon on tvOS) --- jellyfin_kodi/helper/xmls.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/helper/xmls.py b/jellyfin_kodi/helper/xmls.py index 0831514b..64c93440 100644 --- a/jellyfin_kodi/helper/xmls.py +++ b/jellyfin_kodi/helper/xmls.py @@ -117,13 +117,18 @@ def verify_kodi_defaults(): if xbmcvfs.exists(file_name): try: - tree = etree.parse(file_name) + with xbmcvfs.File(file_name) as f: + b = f.read() + tree = etree.ElementTree(etree.fromstring(b)) except etree.ParseError: LOG.error("Unable to parse `{}`".format(file_name)) LOG.exception("We ensured the file was OK above, something is wrong!") + tree = None - tree.getroot().set('order', str(17 + index)) - tree.write(file_name) + if tree is not None: + tree.getroot().set('order', str(17 + index)) + with xbmcvfs.File(file_name, 'w') as f: + f.write(etree.tostring(tree.getroot())) playlist_path = translate_path("special://profile/playlists/video") From eb9466853281c34640ebd6f59e9a2f41ace68da2 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Fri, 9 Feb 2024 06:41:09 +0000 Subject: [PATCH 43/70] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/he/ --- .../language/resource.language.he/strings.po | 63 +++++++++++++++++-- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/resources/language/resource.language.he/strings.po b/resources/language/resource.language.he/strings.po index 3e494020..08279242 100644 --- a/resources/language/resource.language.he/strings.po +++ b/resources/language/resource.language.he/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-12-26 20:30+0000\n" -"Last-Translator: Xanadu Cosmobullion \n" +"PO-Revision-Date: 2024-02-10 07:30+0000\n" +"Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "Language: he\n" @@ -208,10 +208,9 @@ msgctxt "#30530" msgid "Enable server restart message" msgstr "אפשר הודעת הפעלה מחדש של השרת" -#, fuzzy msgctxt "#30249" msgid "Enable welcome message" -msgstr "הפעל הודעת ברוך הבא" +msgstr "הפעלת הודעת קבלת פנים" msgctxt "#30401" msgid "Jellyfin options" @@ -494,3 +493,59 @@ msgstr "אפשר ספריית מוזיקה?" msgctxt "#33047" msgid "Kodi can't locate file:" msgstr "קודי לא יכול לאתר את הקובץ:" + +msgctxt "#33049" +msgid "New" +msgstr "חדש" + +msgctxt "#33062" +msgid "Add user" +msgstr "הוספת משתמש" + +msgctxt "#33063" +msgid "Remove user" +msgstr "הסרת משתמש" + +msgctxt "#33064" +msgid "Remove user from the session" +msgstr "הסרת משתמש מההפעלה" + +msgctxt "#33074" +msgid "Are you sure you want to reset your local Kodi database?" +msgstr "לאפס את מסד הנתונים המקומי של ה־Kodi שלך?" + +msgctxt "#33091" +msgid "Created backup at:" +msgstr "נוצר גיבוי ב־:" + +msgctxt "#33093" +msgid "Backup folder" +msgstr "תיקיית גיבוי" + +msgctxt "#33054" +msgid "Add user to session" +msgstr "הוספת משתמש להפעלה" + +msgctxt "#33058" +msgid "Perform local database reset" +msgstr "ביצוע איפוס מסד נתונים מקומי" + +msgctxt "#33060" +msgid "Sync theme media" +msgstr "סנכרון המדיה של ערכת העיצוב" + +msgctxt "#33061" +msgid "Add/Remove user from the session" +msgstr "הוספת/הסרת משתמשים מההפעלה" + +msgctxt "#33089" +msgid "Enter folder name for backup" +msgstr "נא למלא שם תיקייה לגיבוי" + +msgctxt "#33090" +msgid "Replace existing backup?" +msgstr "להחליף גיבוי קיים?" + +msgctxt "#33092" +msgid "Create a backup" +msgstr "יצירת גיבוי" From 2e6eff9fb3f3ce756abf159855d1015fd0ed4e59 Mon Sep 17 00:00:00 2001 From: AntonVucinic Date: Wed, 14 Feb 2024 11:51:25 +0000 Subject: [PATCH 44/70] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/hr/ --- resources/language/resource.language.hr/strings.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/resources/language/resource.language.hr/strings.po b/resources/language/resource.language.hr/strings.po index 14fa79af..0de21784 100644 --- a/resources/language/resource.language.hr/strings.po +++ b/resources/language/resource.language.hr/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-04-16 23:39+0000\n" -"Last-Translator: Logilype \n" +"PO-Revision-Date: 2024-02-14 20:42+0000\n" +"Last-Translator: AntonVucinic \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -874,7 +874,7 @@ msgstr "Po prvom slovu" #, fuzzy msgctxt "#33174" msgid "Paging - download threads (default: 3)" -msgstr "Paging - preuzimanje niti (zadano: 3)" +msgstr "Paging - dretve za preuzimanje (zadano: 3)" msgctxt "#33176" msgid "Update or repair your libraries to apply the changes below." @@ -947,7 +947,7 @@ msgstr "Odaberite biblioteke koje želite ukloniti" #, fuzzy msgctxt "#33037" msgid "Native (direct paths)" -msgstr "Izvorno (direktni putovi)" +msgstr "Izvorno (direktne putanje)" msgctxt "#33109" msgid "Plugin" @@ -965,9 +965,9 @@ msgstr "Add-on (zadano)" msgctxt "#33048" msgid "You may need to verify your network credentials in the add-on settings or use the Jellyfin path substitution to format your path correctly (Jellyfin dashboard > library). Stop syncing?" msgstr "" -"Možda ćete morati potvrditi svoje mrežne vjerodajnice u postavkama add-onova " -"ili upotrijebiti Jellyfin zamjenu staze da biste ispravno formatirali svoju " -"stazu (Jellyfin dashboard > library). Zaustaviti sinkronizaciju?" +"Možda ćete morati potvrditi svoje mrežne vjerodajnice u postavkama dodatka " +"ili upotrijebiti Jellyfin zamjenu putanje da biste ispravno formatirali " +"svoju putanju (Jellyfin dashboard > library). Zaustaviti sinkronizaciju?" msgctxt "#33098" msgid "Refresh boxsets" From bc6d9556cdf7c660776214d7d20b56927247d0bc Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Thu, 22 Feb 2024 10:26:53 +0000 Subject: [PATCH 45/70] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/he/ --- .../language/resource.language.he/strings.po | 226 +++++++++++++++++- 1 file changed, 225 insertions(+), 1 deletion(-) diff --git a/resources/language/resource.language.he/strings.po b/resources/language/resource.language.he/strings.po index 08279242..17c158c9 100644 --- a/resources/language/resource.language.he/strings.po +++ b/resources/language/resource.language.he/strings.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2024-02-10 07:30+0000\n" +"PO-Revision-Date: 2024-02-23 11:37+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" @@ -549,3 +549,227 @@ msgstr "להחליף גיבוי קיים?" msgctxt "#33092" msgid "Create a backup" msgstr "יצירת גיבוי" + +msgctxt "#33142" +msgid "Something went wrong. Try again later." +msgstr "משהו השתבש. נא לנסות שוב מאוחר יותר." + +msgctxt "#33144" +msgid "Removing library" +msgstr "הספרייה מוּסרת" + +msgctxt "#33146" +msgid "Unable to connect to Jellyfin." +msgstr "לא ניתן להתחבר ל־Jellyfin." + +msgctxt "#33148" +msgid "Your access to this server is restricted." +msgstr "הגישה שלך לשרת הזה מוגבלת." + +msgctxt "#33149" +msgid "Unable to connect to this server." +msgstr "לא ניתן להתחבר לשרת הזה." + +msgctxt "#33156" +msgid "A patch has been applied!" +msgstr "טלאי חל!" + +msgctxt "#33202" +msgid "Transcode H265/HEVC RExt" +msgstr "התמרת H265/HEVC RExt" + +msgctxt "#33139" +msgid "Update libraries" +msgstr "עדכון ספריות" + +msgctxt "#33143" +msgid "Enable the option to delete" +msgstr "יש להפעיל את האפשרות כדי למחוק" + +msgctxt "#33147" +msgid "Your access to Jellyfin is restricted." +msgstr "הגישה שלך ל־Jellyfin מוגבלת." + +msgctxt "#33157" +msgid "Audio only" +msgstr "שמע בלבד" + +msgctxt "#33158" +msgid "Subtitles only" +msgstr "כתוביות בלבד" + +msgctxt "#33161" +msgid "Update password" +msgstr "עדכון סיסמה" + +msgctxt "#33162" +msgid "Reset the music library?" +msgstr "לאפס את ספריית המוזיקה?" + +msgctxt "#33164" +msgid "Mask sensitive information in log (does not apply to kodi logging)" +msgstr "סימון מידע רגיש ביומן (לא חל על תיעוד מקודי)" + +msgctxt "#33165" +msgid "Failed to create backup" +msgstr "יצירת גיבוי נכשלה" + +msgctxt "#33166" +msgid "(dynamic)" +msgstr "(דינמי)" + +msgctxt "#33171" +msgid "By first letter" +msgstr "לפי האות הראשונה" + +msgctxt "#33125" +msgid "Enable remote control" +msgstr "הפעלת שליטה מרחוק" + +msgctxt "#33130" +msgid "Select the source" +msgstr "נא לבחור מקור" + +msgctxt "#33132" +msgid "Repair library" +msgstr "תיקון הספרייה" + +msgctxt "#33133" +msgid "Remove library from Kodi" +msgstr "הסרת הספרייה מקודי" + +msgctxt "#33134" +msgid "Add server" +msgstr "הוספת שרת" + +msgctxt "#33135" +msgid "Kodi will now restart to apply a small patch for your Kodi version." +msgstr "קודי יופעל עכשיו מחדש כדי להחיל טלאי קטן לגרסת הקודי שלך." + +msgctxt "#33136" +msgid "Update library" +msgstr "עדכון הספרייה" + +msgctxt "#33140" +msgid "Repair libraries" +msgstr "תיקון ספריות" + +msgctxt "#33141" +msgid "Remove server" +msgstr "הסרת שרת" + +msgctxt "#33150" +msgid "Update server information" +msgstr "עדכון פרטי השרת" + +msgctxt "#33154" +msgid "Add libraries" +msgstr "הוספת ספריות" + +msgctxt "#33159" +msgid "Enable audio/subtitles selection" +msgstr "הפעלה בחירת שמע/כתוביות" + +msgctxt "#33167" +msgid "Recently added" +msgstr "נוספו לאחרונה" + +msgctxt "#33168" +msgid "Favourites" +msgstr "מועדפים" + +msgctxt "#33169" +msgid "In Progress" +msgstr "בתהליך" + +msgctxt "#33170" +msgid "Unwatched" +msgstr "לא נצפו" + +msgctxt "#33179" +msgid "Force transcode" +msgstr "אילוץ התמרה" + +msgctxt "#33180" +msgid "Restart Jellyfin for Kodi" +msgstr "להפעיל את Jellyfin מחדש בשביל קודי" + +msgctxt "#33181" +msgid "Restarting to apply the patch" +msgstr "מופעל מחדש כדי להחיל את הטלאי" + +msgctxt "#33182" +msgid "Play with cinema mode" +msgstr "ניגון במצב קולנוע" + +msgctxt "#33183" +msgid "Enable the option to play with cinema mode" +msgstr "יש להפעי את האפשרות כדי לנגן במצב קולנוע" + +msgctxt "#33184" +msgid "Remove libraries" +msgstr "הסרת ספריות" + +msgctxt "#33185" +msgid "Enable sync during playback (may cause some lag)" +msgstr "הפעלת סנכרון תוך כדי נגינה (יכול לגרום לעיכובים)" + +msgctxt "#33191" +msgid "Restart Jellyfin for Kodi to apply this change?" +msgstr "להפעיל את Jellyfin לקודי מחדש כדי להחיל את השינוי הזה?" + +msgctxt "#33194" +msgid "Manage libraries" +msgstr "ניהול ספריות" + +msgctxt "#33195" +msgid "Enable Jellyfin for Kodi" +msgstr "הפעלת Jellyfin לקודי" + +msgctxt "#33196" +msgid "Advanced options" +msgstr "אפשרויות מתקדמות" + +msgctxt "#33197" +msgid "A sync is already running, please wait until it completes and try again." +msgstr "יש כבר סנכרון רץ, נא להמתין להשלמתו ולנסות שוב." + +msgctxt "#33198" +msgid "Select the libraries to update" +msgstr "נא לבחור ספריות לעדכון" + +msgctxt "#33199" +msgid "Select the libraries to repair" +msgstr "נא לבחור ספריות לתיקון" + +msgctxt "#33200" +msgid "Select the libraries to remove" +msgstr "נא לבחור ספריות להסרה" + +msgctxt "#33201" +msgid "Max artwork resolution" +msgstr "רזולוציית גרפיקה מרבית" + +msgctxt "#33121" +msgid "All" +msgstr "הכול" + +msgctxt "#33123" +msgid "Sync library to Kodi" +msgstr "סנכרון הספרייה לקודי" + +msgctxt "#33124" +msgid "Include people (slow)" +msgstr "כולל אנשים (איטי)" + +msgctxt "#33114" +msgid "Enable external subtitles" +msgstr "הפעלת כתוביות חיצוניות" + +msgctxt "#33115" +msgid "Transcode options" +msgstr "אפשרויות התמרה" + +msgctxt "#33116" +msgid "Compress artwork (reduces quality)" +msgstr "דחיסת הגרפיקה (איכות מופחתת)" From 198447cb85022eb188198198176c2f59fda4db47 Mon Sep 17 00:00:00 2001 From: Leonardo Lopes da Luz Date: Sun, 25 Feb 2024 21:25:11 +0000 Subject: [PATCH 46/70] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt/ --- .../language/resource.language.pt/strings.po | 753 +++++++++++++++++- 1 file changed, 751 insertions(+), 2 deletions(-) diff --git a/resources/language/resource.language.pt/strings.po b/resources/language/resource.language.pt/strings.po index 22106594..4ce3bdf8 100644 --- a/resources/language/resource.language.pt/strings.po +++ b/resources/language/resource.language.pt/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2024-02-07 09:40+0000\n" -"Last-Translator: Filipe Lopes \n" +"PO-Revision-Date: 2024-02-26 03:26+0000\n" +"Last-Translator: Leonardo Lopes da Luz \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -258,3 +258,752 @@ msgstr "Modo de reprodução" msgctxt "#30512" msgid "Enable artwork caching" msgstr "Ativar a cache de artes" + +msgctxt "#30516" +msgid "Playback" +msgstr "Reprodução" + +msgctxt "#30519" +msgid "Ask to play trailers" +msgstr "Pergunte para reproduzir prévias" + +msgctxt "#30520" +msgid "Skip the delete confirmation (use at your own risk)" +msgstr "Ignore a confirmação de exclusão (use por sua conta e risco)" + +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "Voltar ao resumo (em segundos)" + +msgctxt "#30522" +msgid "Transcode H265/HEVC" +msgstr "Transcodificar H.265/HEVC" + +msgctxt "#30537" +msgid "Transcode Hi10P" +msgstr "Transcodificar Hi10P" + +msgctxt "#30545" +msgid "Enable server offline" +msgstr "Habilitar servidor off-line" + +msgctxt "#30606" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "#30609" +msgid "Unable to connect to the selected server" +msgstr "Não foi possível conectar-se ao servidor selecionado" + +msgctxt "#30614" +msgid "Connect to server" +msgstr "Conecte-se ao servidor" + +msgctxt "#30616" +msgid "Connect" +msgstr "Conectar" + +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "Escolha o fluxo de legendas" + +msgctxt "#33018" +msgid "Gathering boxsets" +msgstr "Reunindo caixas" + +msgctxt "#33021" +msgid "Gathering:" +msgstr "Reunião:" + +msgctxt "#33025" +msgid "Completed in:" +msgstr "Concluído em:" + +msgctxt "#33036" +msgid "Add-on (default)" +msgstr "Complemento (padrão)" + +msgctxt "#33049" +msgid "New" +msgstr "Novo" + +msgctxt "#33060" +msgid "Sync theme media" +msgstr "Sincronizar mídia temática" + +msgctxt "#33063" +msgid "Remove user" +msgstr "Remover usuário" + +msgctxt "#33089" +msgid "Enter folder name for backup" +msgstr "Digite o nome da pasta para backup" + +msgctxt "#33090" +msgid "Replace existing backup?" +msgstr "Substituir o backup existente?" + +msgctxt "#33091" +msgid "Created backup at:" +msgstr "Backup criado em:" + +msgctxt "#33092" +msgid "Create a backup" +msgstr "Crie um backup" + +msgctxt "#33093" +msgid "Backup folder" +msgstr "Pasta de backup" + +msgctxt "#33098" +msgid "Refresh boxsets" +msgstr "Atualizar conjuntos de caixas" + +msgctxt "#33102" +msgid "Resume the previous sync?" +msgstr "Retomar a sincronização anterior?" + +msgctxt "#33105" +msgid "Enable the context menu" +msgstr "Habilite o menu de contexto" + +msgctxt "#33106" +msgid "Enable the option to transcode" +msgstr "Habilite a opção de transcodificar" + +msgctxt "#33109" +msgid "Plugin" +msgstr "Extensão" + +msgctxt "#33115" +msgid "Transcode options" +msgstr "Opções de transcodificação" + +msgctxt "#33116" +msgid "Compress artwork (reduces quality)" +msgstr "Comprimir arte (reduz a qualidade)" + +msgctxt "#33120" +msgid "Select the libraries to add" +msgstr "Selecione as bibliotecas a serem adicionadas" + +msgctxt "#33121" +msgid "All" +msgstr "Tudo" + +msgctxt "#33123" +msgid "Sync library to Kodi" +msgstr "Sincronize a biblioteca com o Kodi" + +msgctxt "#33124" +msgid "Include people (slow)" +msgstr "Incluir pessoas (lento)" + +msgctxt "#33125" +msgid "Enable remote control" +msgstr "Habilitar controle remoto" + +msgctxt "#33130" +msgid "Select the source" +msgstr "Selecione a fonte" + +msgctxt "#33131" +msgid "Refreshing boxsets" +msgstr "Conjuntos de caixas refrescantes" + +msgctxt "#33132" +msgid "Repair library" +msgstr "Reparar Biblioteca" + +msgctxt "#33133" +msgid "Remove library from Kodi" +msgstr "Remover biblioteca do Kodi" + +msgctxt "#33134" +msgid "Add server" +msgstr "Adicionar servidor" + +msgctxt "#33136" +msgid "Update library" +msgstr "Atualizar biblioteca" + +msgctxt "#33137" +msgid "Enable Kodi Sync Queue" +msgstr "Habilitar fila de sincronização Kodi" + +msgctxt "#33139" +msgid "Update libraries" +msgstr "Atualizar bibliotecas" + +msgctxt "#33140" +msgid "Repair libraries" +msgstr "Reparar bibliotecas" + +msgctxt "#33142" +msgid "Something went wrong. Try again later." +msgstr "Algo deu errado. Tente mais tarde." + +msgctxt "#33143" +msgid "Enable the option to delete" +msgstr "Habilite a opção de excluir" + +msgctxt "#33144" +msgid "Removing library" +msgstr "Removendo biblioteca" + +msgctxt "#33146" +msgid "Unable to connect to Jellyfin." +msgstr "Não foi possível conectar-se ao Jellyfin." + +msgctxt "#33148" +msgid "Your access to this server is restricted." +msgstr "Seu acesso a este servidor é restrito." + +msgctxt "#33150" +msgid "Update server information" +msgstr "Atualizar informações do servidor" + +msgctxt "#33152" +msgid "Unable to locate TV Tunes in Kodi." +msgstr "Não foi possível localizar canais de TV no Kodi." + +msgctxt "#33156" +msgid "A patch has been applied!" +msgstr "Um patch foi aplicado!" + +msgctxt "#33158" +msgid "Subtitles only" +msgstr "Somente legendas" + +msgctxt "#33161" +msgid "Update password" +msgstr "Atualizar senha" + +msgctxt "#33162" +msgid "Reset the music library?" +msgstr "Redefinir a biblioteca de música?" + +msgctxt "#33166" +msgid "(dynamic)" +msgstr "(dinâmico)" + +msgctxt "#33167" +msgid "Recently added" +msgstr "Adicionado recentemente" + +msgctxt "#33168" +msgid "Favourites" +msgstr "Favoritos" + +msgctxt "#33169" +msgid "In Progress" +msgstr "Em andamento" + +msgctxt "#33170" +msgid "Unwatched" +msgstr "Não assistido" + +msgctxt "#33171" +msgid "By first letter" +msgstr "Pela primeira carta" + +msgctxt "#33173" +msgid "Forget about the previous sync? This is not recommended." +msgstr "Esqueceu a sincronização anterior? Isso não é recomendado." + +msgctxt "#33176" +msgid "Update or repair your libraries to apply the changes below." +msgstr "Atualize ou repare suas bibliotecas para aplicar as alterações abaixo." + +msgctxt "#33179" +msgid "Force transcode" +msgstr "Forçar transcodificação" + +msgctxt "#33183" +msgid "Enable the option to play with cinema mode" +msgstr "Habilite a opção de reproduzir no modo cinema" + +msgctxt "#33184" +msgid "Remove libraries" +msgstr "Remover bibliotecas" + +msgctxt "#33193" +msgid "Restarting..." +msgstr "Reiniciando…" + +msgctxt "#33194" +msgid "Manage libraries" +msgstr "Gerenciar bibliotecas" + +msgctxt "#33195" +msgid "Enable Jellyfin for Kodi" +msgstr "Habilitar Jellyfin para Kodi" + +msgctxt "#33196" +msgid "Advanced options" +msgstr "Opções avançadas" + +msgctxt "#33198" +msgid "Select the libraries to update" +msgstr "Selecione as bibliotecas para atualizar" + +msgctxt "#33199" +msgid "Select the libraries to repair" +msgstr "Selecione as bibliotecas para reparar" + +msgctxt "#33200" +msgid "Select the libraries to remove" +msgstr "Selecione as bibliotecas a serem removidas" + +msgctxt "#33202" +msgid "Transcode H265/HEVC RExt" +msgstr "Transcodificar H265/HEVC RExt" + +msgctxt "#30515" +msgid "Paging - max items requested (default: 15)" +msgstr "Paginação - máximo de itens solicitados (padrão: 15)" + +msgctxt "#30517" +msgid "Network credentials" +msgstr "Credenciais de rede" + +msgctxt "#30518" +msgid "Enable cinema mode" +msgstr "Ativar modo cinema" + +msgctxt "#30523" +msgid "Transcode MPEG2" +msgstr "Transcodificar MPEG2" + +msgctxt "#30524" +msgid "Transcode VC-1" +msgstr "Transcodificar VC-1" + +msgctxt "#30525" +msgid "Transcode VP9" +msgstr "Transcodificar VP9" + +msgctxt "#30526" +msgid "Transcode AV1" +msgstr "Transcodificar AV1" + +msgctxt "#30527" +msgid "Ignore specials in next episodes" +msgstr "Ignorar especiais nos próximos episódios" + +msgctxt "#30528" +msgid "Permanent users" +msgstr "Usuários permanentes" + +msgctxt "#30529" +msgid "Startup delay (in seconds)" +msgstr "Atraso de inicialização (em segundos)" + +msgctxt "#30530" +msgid "Enable server restart message" +msgstr "Habilitar mensagem de reinicialização do servidor" + +msgctxt "#30531" +msgid "Enable new content" +msgstr "Habilitar novo conteúdo" + +msgctxt "#30532" +msgid "Duration of the video library pop up" +msgstr "Aparece a duração da videoteca" + +msgctxt "#30533" +msgid "Duration of the music library pop up" +msgstr "A duração da biblioteca de música aparece" + +msgctxt "#30534" +msgid "Notifications (in seconds)" +msgstr "Notificações (em segundos)" + +msgctxt "#30535" +msgid "Generate a new device Id" +msgstr "Gere um novo ID de dispositivo" + +msgctxt "#30536" +msgid "Allow the screensaver during syncs" +msgstr "Permitir o protetor de tela durante as sincronizações" + +msgctxt "#30539" +msgid "Login" +msgstr "Entrar" + +msgctxt "#30540" +msgid "Manual login" +msgstr "Início de sessão manual" + +msgctxt "#30543" +msgid "Username or email" +msgstr "Nome de usuário ou email" + +msgctxt "#30547" +msgid "Display message" +msgstr "Exibir mensagem" + +msgctxt "#30602" +msgid "Password" +msgstr "Senha" + +msgctxt "#30607" +msgid "Select main server" +msgstr "Selecione o servidor principal" + +msgctxt "#30608" +msgid "Username or password cannot be empty" +msgstr "Selecione o servidor principal" + +msgctxt "#30610" +msgid "Connect to" +msgstr "Conectar a" + +msgctxt "#30611" +msgid "Manually add server" +msgstr "Adicionar servidor manualmente" + +msgctxt "#30612" +msgid "Please sign in" +msgstr "Por favor, inscreva-se" + +msgctxt "#30613" +msgid "Change Jellyfin Connect user" +msgstr "Alterar usuário do Jellyfin Connect" + +msgctxt "#30605" +msgid "Sign in" +msgstr "Inscrever-se" + +msgctxt "#30615" +msgid "Host" +msgstr "Hospedeiro" + +msgctxt "#30617" +msgid "Server or port cannot be empty" +msgstr "O servidor ou a porta não podem estar vazios" + +msgctxt "#33000" +msgid "Welcome" +msgstr "Bem-vindo" + +msgctxt "#33006" +msgid "Server is restarting" +msgstr "O servidor está reiniciando" + +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "nome de usuário ou senha inválidos" + +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "Escolha o fluxo de áudio" + +msgctxt "#33015" +msgid "Delete file from Jellyfin?" +msgstr "Excluir arquivo do Jellyfin?" + +msgctxt "#33016" +msgid "Play trailers?" +msgstr "Reproduzir prévias?" + +msgctxt "#33033" +msgid "A new device Id has been generated. Kodi will now restart." +msgstr "Um novo ID de dispositivo foi gerado. Kodi irá reiniciar agora." + +msgctxt "#33035" +msgid "Caution! If you choose Native mode, certain Jellyfin features will be missing, such as: Jellyfin cinema mode, direct stream/transcode options and parental access schedule." +msgstr "" +"Cuidado! Se você escolher o modo Nativo, alguns recursos do Jellyfin estarão " +"faltando, como: modo de cinema Jellyfin, opções de transmissão/" +"transcodificação direta e programação de acesso parental." + +msgctxt "#33037" +msgid "Native (direct paths)" +msgstr "Nativo (caminhos diretos)" + +msgctxt "#33039" +msgid "Enable music library?" +msgstr "Ativar biblioteca de música?" + +msgctxt "#33047" +msgid "Kodi can't locate file:" +msgstr "Kodi não consegue localizar o arquivo:" + +msgctxt "#33048" +msgid "You may need to verify your network credentials in the add-on settings or use the Jellyfin path substitution to format your path correctly (Jellyfin dashboard > library). Stop syncing?" +msgstr "" +"Pode ser necessário verificar suas credenciais de rede nas configurações do " +"complemento ou usar a substituição do caminho Jellyfin para formatar seu " +"caminho corretamente (painel Jellyfin > biblioteca). Parar de sincronizar?" + +msgctxt "#33054" +msgid "Add user to session" +msgstr "Adicionar usuário à sessão" + +msgctxt "#33058" +msgid "Perform local database reset" +msgstr "Execute a redefinição do banco de dados local" + +msgctxt "#33061" +msgid "Add/Remove user from the session" +msgstr "Adicionar/remover usuário da sessão" + +msgctxt "#33062" +msgid "Add user" +msgstr "Adicionar usuário" + +msgctxt "#33064" +msgid "Remove user from the session" +msgstr "Remover usuário da sessão" + +msgctxt "#33074" +msgid "Are you sure you want to reset your local Kodi database?" +msgstr "Tem certeza de que deseja redefinir seu banco de dados Kodi local?" + +msgctxt "#33086" +msgid "Remove all cached artwork?" +msgstr "Remover todas as ilustrações armazenadas em cache?" + +msgctxt "#33087" +msgid "Reset all Jellyfin add-on settings?" +msgstr "Redefinir todas as configurações do complemento Jellyfin?" + +msgctxt "#33088" +msgid "Database reset has completed, Kodi will now restart to apply the changes." +msgstr "" +"A redefinição do banco de dados foi concluída, o Kodi irá reiniciar para " +"aplicar as alterações." + +msgctxt "#33097" +msgid "Important, cleanonupdate was removed in your advanced settings to prevent conflict with Jellyfin for Kodi. Kodi will restart now." +msgstr "" +"Importante, a limpeza na atualização foi removida nas configurações " +"avançadas para evitar conflitos com o Jellyfin para Kodi. Kodi irá reiniciar " +"agora." + +msgctxt "#33099" +msgid "Install the server plugin Kodi Sync Queue to automatically apply Jellyfin library updates at startup. This setting can be found in the add-on settings > sync options > Enable Kodi Sync Queue." +msgstr "" +"Instale o plugin do servidor Kodi Sync Queue para aplicar automaticamente as " +"atualizações da biblioteca Jellyfin na inicialização. Esta configuração pode " +"ser encontrada nas configurações do complemento > opções de sincronização > " +"Ativar fila de sincronização do Kodi." + +msgctxt "#33101" +msgid "Since you are using native playback mode with music enabled, do you want to import music rating from files?" +msgstr "" +"Como você está usando o modo de reprodução nativo com música ativada, deseja " +"importar a classificação musical dos arquivos?" + +msgctxt "#33104" +msgid "Find more info in the github wiki/Create-and-restore-from-backup." +msgstr "" +"Encontre mais informações no wiki do GitHub/Criar e restaurar do backup." + +msgctxt "#33107" +msgid "Users added to the session (no space between users). (eg username,username2)" +msgstr "" +"Usuários adicionados à sessão (sem espaço entre usuários) (por exemplo, " +"nomedeusuário,nomedeusuário2)" + +msgctxt "#33108" +msgid "Notifications are delayed during video playback (except live tv)." +msgstr "" +"As notificações são atrasadas durante a reprodução do vídeo (exceto TV ao " +"vivo)." + +msgctxt "#33110" +msgid "Restart Kodi to take effect." +msgstr "Reinicie o Kodi para entrar em vigor." + +msgctxt "#33111" +msgid "Reset the local database to apply the playback mode change." +msgstr "" +"Redefina o banco de dados local para aplicar a alteração do modo de " +"reprodução." + +msgctxt "#33112" +msgid "Applies to Native and Add-on playback mode" +msgstr "Aplica-se ao modo de reprodução Nativo e Complementar" + +msgctxt "#33113" +msgid "Applies to Add-on playback mode only" +msgstr "Aplica-se apenas ao modo de reprodução complementar" + +msgctxt "#33114" +msgid "Enable external subtitles" +msgstr "Habilitar legendas externas" + +msgctxt "#33118" +msgid "You've change the playback mode. Kodi needs to be reset to apply the change, would you like to do this now?" +msgstr "" +"Você alterou o modo de reprodução. O Kodi precisa ser redefinido para " +"aplicar a alteração. Gostaria de fazer isso agora?" + +msgctxt "#33119" +msgid "Something went wrong during the sync. You'll be able to restore progress when restarting Kodi. If the problem persists, please report on the Jellyfin for Kodi forums, with your Kodi log." +msgstr "" +"Algo deu errado durante a sincronização. Você poderá restaurar o progresso " +"ao reiniciar o Kodi. Se o problema persistir, informe nos fóruns do Jellyfin " +"for Kodi, com seu log do Kodi." + +msgctxt "#33122" +msgid "Restart Kodi to resume where you left off." +msgstr "Reinicie o Kodi para continuar de onde parou." + +msgctxt "#33128" +msgid "Failed to retrieve latest content updates. No content updates will be applied until Kodi is restarted. If this issue persists, please report on the Jellyfin for Kodi forums, with your Kodi log." +msgstr "" +"Falha ao recuperar as atualizações de conteúdo mais recentes. Nenhuma " +"atualização de conteúdo será aplicada até que o Kodi seja reiniciado. Se o " +"problema persistir, informe nos fóruns do Jellyfin for Kodi, com seu log do " +"Kodi." + +msgctxt "#33129" +msgid "You can sync libraries by launching the Jellyfin add-on > Add libraries." +msgstr "" +"Você pode sincronizar bibliotecas iniciando o complemento Jellyfin > " +"Adicionar bibliotecas." + +msgctxt "#33135" +msgid "Kodi will now restart to apply a small patch for your Kodi version." +msgstr "" +"O Kodi irá reiniciar agora para aplicar um pequeno patch à sua versão do " +"Kodi." + +msgctxt "#33138" +msgid "You can update your library manually rather than rely on the server plugin Kodi Sync Queue. Launch the add-on and update libraries (or per library). To remove content, you'll need to repair the library." +msgstr "" +"Você pode atualizar sua biblioteca manualmente em vez de depender do plugin " +"do servidor Kodi Sync Queue. Inicie o complemento e atualize as bibliotecas (" +"ou por biblioteca). Para remover conteúdo, você precisará reparar a " +"biblioteca." + +msgctxt "#33141" +msgid "Remove server" +msgstr "Remover servidor" + +msgctxt "#33145" +msgid "Please make sure your Samba (smb) share of your Jellyfin server is accessible to your Kodi installation and that you have path substitution configured on your server. Otherwise, Kodi may fail to locate your files." +msgstr "" +"Certifique-se de que o compartilhamento Samba (smb) do seu servidor Jellyfin " +"esteja acessível para a instalação do Kodi e que você tenha a substituição " +"de caminho configurada no seu servidor. Caso contrário, o Kodi poderá não " +"conseguir localizar seus arquivos." + +msgctxt "#33147" +msgid "Your access to Jellyfin is restricted." +msgstr "Seu acesso ao Jellyfin é restrito." + +msgctxt "#33149" +msgid "Unable to connect to this server." +msgstr "Não foi possível conectar-se a este servidor." + +msgctxt "#33151" +msgid "Reconnect to the same server that was previously loaded. If you want to use a different server, reset your local database, including your user information." +msgstr "" +"Reconecte-se ao mesmo servidor que foi carregado anteriormente. Se quiser " +"usar um servidor diferente, redefina seu banco de dados local, incluindo " +"suas informações de usuário." + +msgctxt "#33153" +msgid "Your Jellyfin theme media has been synced to Kodi" +msgstr "A mídia do seu tema Jellyfin foi sincronizada com o Kodi" + +msgctxt "#33154" +msgid "Add libraries" +msgstr "Adicionar bibliotecas" + +msgctxt "#33155" +msgid "The currently applied patch for Jellyfin for Kodi is corrupted! Please post to the Jellyfin for Kodi forums if this issue persists. This will need to be fixed as soon as possible." +msgstr "" +"O patch atualmente aplicado para Jellyfin para Kodi está corrompido! Poste " +"nos fóruns do Jellyfin for Kodi se o problema persistir. Isso precisará ser " +"corrigido o mais rápido possível." + +msgctxt "#33157" +msgid "Audio only" +msgstr "Somente Audio" + +msgctxt "#33159" +msgid "Enable audio/subtitles selection" +msgstr "Ativar seleção de áudio/legendas" + +msgctxt "#33163" +msgid "Disabled/Media default" +msgstr "Desativado/padrão de mídia" + +msgctxt "#33160" +msgid "To avoid errors, please update Jellyfin for Kodi to version: " +msgstr "Para evitar erros, atualize o Jellyfin for Kodi para a versão: " + +msgctxt "#33164" +msgid "Mask sensitive information in log (does not apply to kodi logging)" +msgstr "Mascarar informações confidenciais no log (não se aplica ao log Kodi)" + +msgctxt "#33165" +msgid "Failed to create backup" +msgstr "Falha ao criar backup" + +msgctxt "#33172" +msgid "You have {number} updates pending. This may take a little while before seeing new content. It might be faster to update your libraries via launching the Jellyfin add-on > update libraries. Proceed anyway?" +msgstr "" +"Você tem {number} atualizações pendentes. Isso pode demorar um pouco antes " +"de ver o novo conteúdo. Pode ser mais rápido atualizar suas bibliotecas " +"iniciando o complemento Jellyfin > atualizar bibliotecas. Continuar mesmo " +"assim?" + +msgctxt "#33174" +msgid "Paging - download threads (default: 3)" +msgstr "Paginação - download de tópicos (padrão: 3)" + +msgctxt "#33175" +msgid "Paging tip: Each download thread requests your max items value from Jellyfin at the same time." +msgstr "" +"Dica de paginação: cada tópico de download solicita o valor máximo de itens " +"do Jellyfin ao mesmo tempo." + +msgctxt "#33177" +msgid "Display the progress bar if update count greater than" +msgstr "Exibir a barra de progresso se a contagem de atualizações for maior que" + +msgctxt "#33178" +msgid "Processing updates" +msgstr "Processando atualizações" + +msgctxt "#33180" +msgid "Restart Jellyfin for Kodi" +msgstr "Reinicie o Jellyfin para Kodi" + +msgctxt "#33181" +msgid "Restarting to apply the patch" +msgstr "Reiniciando para aplicar o patch" + +msgctxt "#33182" +msgid "Play with cinema mode" +msgstr "Reproduza com o modo cinema" + +msgctxt "#33185" +msgid "Enable sync during playback (may cause some lag)" +msgstr "Ative a sincronização durante a reprodução (pode causar algum atraso)" + +msgctxt "#33186" +msgid "The Kodi Sync Queue speeds up the start up sync. Other syncs are triggered by server events." +msgstr "" +"O Kodi Sync Queue acelera a sincronização de inicialização. Outras " +"sincronizações são acionadas por eventos do servidor." + +msgctxt "#33191" +msgid "Restart Jellyfin for Kodi to apply this change?" +msgstr "Reinicie o Jellyfin para Kodi para aplicar esta alteração?" + +msgctxt "#33197" +msgid "A sync is already running, please wait until it completes and try again." +msgstr "" +"Uma sincronização já está em execução. Aguarde até que ela seja concluída e " +"tente novamente." + +msgctxt "#33201" +msgid "Max artwork resolution" +msgstr "Resolução máxima da arte" From e45b964f8c83506196384883bfeb566990419d48 Mon Sep 17 00:00:00 2001 From: "[kwa:m]" Date: Mon, 26 Feb 2024 19:45:37 +0100 Subject: [PATCH 47/70] Fix for movielist (movie_view) on Kodi 21b3 (with videoversions). Compatible to Kodi <21b3. --- jellyfin_kodi/objects/kodi/movies.py | 12 +++++++++++- jellyfin_kodi/objects/kodi/queries.py | 12 ++++++++++++ jellyfin_kodi/objects/movies.py | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/objects/kodi/movies.py b/jellyfin_kodi/objects/kodi/movies.py index e0a20475..de1da330 100644 --- a/jellyfin_kodi/objects/kodi/movies.py +++ b/jellyfin_kodi/objects/kodi/movies.py @@ -48,6 +48,11 @@ class Movies(Kodi): def add(self, *args): self.cursor.execute(QU.add_movie, args) + def add_videoversion(self, *args): + self.cursor.execute(QU.check_video_version) + if self.cursor.fetchone()[0]==1 : + self.cursor.execute(QU.add_video_version, args) + def update(self, *args): self.cursor.execute(QU.update_movie, args) @@ -55,6 +60,11 @@ class Movies(Kodi): self.cursor.execute(QU.delete_movie, (kodi_id,)) self.cursor.execute(QU.delete_file, (file_id,)) + self.cursor.execute(QU.check_video_version) + if self.cursor.fetchone()[0]==1 : + self.cursor.execute(QU.delete_video_version, (file_id,)) + + def get_rating_id(self, *args): @@ -130,4 +140,4 @@ class Movies(Kodi): self.cursor.execute(QU.delete_movie_set, args) def delete_boxset(self, *args): - self.cursor.execute(QU.delete_set, args) + self.cursor.execute(QU.delete_set, args) \ No newline at end of file diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 71459e2c..49d5b27e 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -315,6 +315,14 @@ INSERT INTO sets(strSet, strOverview) VALUES (?, ?) """ add_set_obj = ["{Title}", "{Overview}"] +add_video_version = """ +INSERT INTO videoversion(idFile, idMedia, media_type, itemType, idType) +VALUES (?, ?, ?, ?, ?) +""" +check_video_version = """ +SELECT COUNT(name) FROM sqlite_master WHERE type='table' AND name='videoversion' +""" +add_video_version_obj = ["{FileId}","{MovieId}","movie","0",40400] add_musicvideo = """ INSERT INTO musicvideo(idMVideo, idFile, c00, c04, c05, c06, c07, c08, c09, c10, c11, c12, premiered) @@ -530,6 +538,10 @@ DELETE FROM movie WHERE idMovie = ? """ delete_movie_obj = ["{KodiId}", "{FileId}"] +delete_video_version = """ +DELETE FROM videoversion +WHERE idFile = ? +""" delete_set = """ DELETE FROM sets WHERE idSet = ? diff --git a/jellyfin_kodi/objects/movies.py b/jellyfin_kodi/objects/movies.py index 990ba6c5..0971c578 100644 --- a/jellyfin_kodi/objects/movies.py +++ b/jellyfin_kodi/objects/movies.py @@ -143,6 +143,7 @@ class Movies(KodiDb): obj['FileId'] = self.add_file(*values(obj, QU.add_file_obj)) self.add(*values(obj, QU.add_movie_obj)) + self.add_videoversion(*values(obj, QU.add_video_version_obj)) self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_movie_obj)) LOG.debug("ADD movie [%s/%s/%s] %s: %s", obj['PathId'], obj['FileId'], obj['MovieId'], obj['Id'], obj['Title']) From 8e2b1f33a1138cca77b9fc1cb641bd28bac4bf4d Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Mon, 26 Feb 2024 06:45:06 +0000 Subject: [PATCH 48/70] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt/ --- resources/language/resource.language.pt/strings.po | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/resources/language/resource.language.pt/strings.po b/resources/language/resource.language.pt/strings.po index 4ce3bdf8..1143c453 100644 --- a/resources/language/resource.language.pt/strings.po +++ b/resources/language/resource.language.pt/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2024-02-26 03:26+0000\n" -"Last-Translator: Leonardo Lopes da Luz \n" +"PO-Revision-Date: 2024-02-27 07:37+0000\n" +"Last-Translator: Blackspirits \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -815,21 +815,19 @@ msgstr "" msgctxt "#33110" msgid "Restart Kodi to take effect." -msgstr "Reinicie o Kodi para entrar em vigor." +msgstr "Reiniciar o Kodi para aplicar as alterações." msgctxt "#33111" msgid "Reset the local database to apply the playback mode change." -msgstr "" -"Redefina o banco de dados local para aplicar a alteração do modo de " -"reprodução." +msgstr "Limpar base de dados para aplicar alteração do modo de reprodução." msgctxt "#33112" msgid "Applies to Native and Add-on playback mode" -msgstr "Aplica-se ao modo de reprodução Nativo e Complementar" +msgstr "Aplica-se aos modos de reprodução Nativo e Add-on" msgctxt "#33113" msgid "Applies to Add-on playback mode only" -msgstr "Aplica-se apenas ao modo de reprodução complementar" +msgstr "Aplica-se apenas ao modo de reprodução Add-on" msgctxt "#33114" msgid "Enable external subtitles" From fbaef1b48e0d58e5aed34bffbb873dd4ed60c17d Mon Sep 17 00:00:00 2001 From: Shane McMaster Date: Sat, 27 Jan 2024 13:52:16 +1300 Subject: [PATCH 49/70] change ws_client to use libraries reconnect param --- jellyfin_kodi/jellyfin/ws_client.py | 16 ++++------------ release.yaml | 2 +- requirements-dev.txt | 2 +- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/jellyfin_kodi/jellyfin/ws_client.py b/jellyfin_kodi/jellyfin/ws_client.py index 3a9ce122..744abbed 100644 --- a/jellyfin_kodi/jellyfin/ws_client.py +++ b/jellyfin_kodi/jellyfin/ws_client.py @@ -35,7 +35,6 @@ class WSClient(threading.Thread): self.client = client threading.Thread.__init__(self) - self.retry_count = 0 def send(self, message, data=""): @@ -62,23 +61,18 @@ class WSClient(threading.Thread): while not self.stop: - time.sleep(self.retry_count * 5) - self.wsc.run_forever(ping_interval=10) + self.wsc.run_forever(ping_interval=10, reconnect=10) if not self.stop and monitor.waitForAbort(5): break - # Wait a maximum of 60 seconds before retrying connection - if self.retry_count < 12: - self.retry_count += 1 - - LOG.info("---<[ websocket ]") - def on_error(self, ws, error): LOG.error(error) def on_open(self, ws): - LOG.info("--->[ websocket ]") + LOG.info("--->[ websocket opened ]") + # Avoid a timing issue where the capabilities are not correctly registered + time.sleep(1) if settings('remoteControl.bool'): self.client.jellyfin.post_capabilities({ 'PlayableMediaTypes': "Audio,Video", @@ -99,8 +93,6 @@ class WSClient(threading.Thread): "PlayableMediaTypes": "Audio, Video", "SupportsMediaControl": False }) - # Reinitialize the retry counter after successful connection - self.retry_count = 0 def on_message(self, ws, message): diff --git a/release.yaml b/release.yaml index 1ac0cb1c..e3c791a5 100644 --- a/release.yaml +++ b/release.yaml @@ -34,4 +34,4 @@ dependencies: - addon: 'script.module.addon.signals' version: '0.0.5+matrix.1' - addon: 'script.module.websocket' - version: '0.58.0+matrix.1' + version: '1.6.4' diff --git a/requirements-dev.txt b/requirements-dev.txt index d8dcb12e..eb1838b6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -16,7 +16,7 @@ pytest >= 4.6.11 coverage >= 5.2 flake8 >= 3.8 flake8-import-order >= 0.18 -websocket-client >= 0.57.0 +websocket-client >= 1.6.4 types-requests >= 2.31 types-PyYAML >= 6.0 From 3d24ca8af967101baccdaea55ed86fd0b72f4829 Mon Sep 17 00:00:00 2001 From: Shane McMaster Date: Tue, 6 Feb 2024 10:44:49 +1300 Subject: [PATCH 50/70] adjust capability delay to 5s --- jellyfin_kodi/jellyfin/ws_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jellyfin_kodi/jellyfin/ws_client.py b/jellyfin_kodi/jellyfin/ws_client.py index 744abbed..65da191e 100644 --- a/jellyfin_kodi/jellyfin/ws_client.py +++ b/jellyfin_kodi/jellyfin/ws_client.py @@ -72,7 +72,7 @@ class WSClient(threading.Thread): def on_open(self, ws): LOG.info("--->[ websocket opened ]") # Avoid a timing issue where the capabilities are not correctly registered - time.sleep(1) + time.sleep(5) if settings('remoteControl.bool'): self.client.jellyfin.post_capabilities({ 'PlayableMediaTypes': "Audio,Video", From 94362ff7db4753ab78e3cf27c930d7ce1e6e8a26 Mon Sep 17 00:00:00 2001 From: IvanLeka Date: Thu, 29 Feb 2024 06:25:41 +0000 Subject: [PATCH 51/70] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/ru/ --- .../language/resource.language.ru_ru/strings.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/language/resource.language.ru_ru/strings.po b/resources/language/resource.language.ru_ru/strings.po index 8830b021..2c4e1a4b 100644 --- a/resources/language/resource.language.ru_ru/strings.po +++ b/resources/language/resource.language.ru_ru/strings.po @@ -6,17 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-11-07 14:50+0000\n" -"Last-Translator: Alex Le \n" +"PO-Revision-Date: 2024-03-01 06:38+0000\n" +"Last-Translator: IvanLeka \n" "Language-Team: Russian \n" "Language: ru_ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.14.1\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#29999" msgid "Jellyfin for Kodi" @@ -680,7 +680,7 @@ msgstr "Выберите источник" msgctxt "#33131" msgid "Refreshing boxsets" -msgstr "Подновление коллекций" +msgstr "Обновление коллекций" msgctxt "#33132" msgid "Repair library" From 362bf7a422b6b52eb4c374a115c9c63739cd71e7 Mon Sep 17 00:00:00 2001 From: christianwell Date: Sun, 3 Mar 2024 20:03:36 +0000 Subject: [PATCH 52/70] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/da/ --- resources/language/resource.language.da/strings.po | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/resources/language/resource.language.da/strings.po b/resources/language/resource.language.da/strings.po index 56d8c754..904611ff 100644 --- a/resources/language/resource.language.da/strings.po +++ b/resources/language/resource.language.da/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2024-01-13 15:30+0000\n" -"Last-Translator: F F \n" +"PO-Revision-Date: 2024-03-04 20:38+0000\n" +"Last-Translator: christianwell \n" "Language-Team: Danish \n" "Language: da\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#30160" msgid "Max stream bitrate" @@ -999,3 +999,7 @@ msgstr "Aktiver fjernstyring" msgctxt "#30512" msgid "Enable artwork caching" msgstr "Aktiver kunstværks caching" + +msgctxt "#30515" +msgid "Paging - max items requested (default: 15)" +msgstr "personsøgning - maks Elementer efterspurgt (standard:15)" From 373d34a56ed844c8543483d0db6e8b472d471079 Mon Sep 17 00:00:00 2001 From: mcarlton00 Date: Thu, 7 Mar 2024 12:41:56 -0500 Subject: [PATCH 53/70] Add automatic database migration for Kodi Omega --- jellyfin_kodi/library.py | 9 ++++++ jellyfin_kodi/objects/kodi/movies.py | 40 +++++++++++++++++++++++---- jellyfin_kodi/objects/kodi/queries.py | 16 +++++++++-- 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/jellyfin_kodi/library.py b/jellyfin_kodi/library.py index 9de23d67..7e6bcf57 100644 --- a/jellyfin_kodi/library.py +++ b/jellyfin_kodi/library.py @@ -11,6 +11,7 @@ from six.moves import queue as Queue from kodi_six import xbmc, xbmcgui from .objects import Movies, TVShows, MusicVideos, Music +from .objects.kodi import Movies as KodiDb from .database import Database, jellyfin_db, get_sync, save_sync from .full_sync import FullSync from .views import Views @@ -122,6 +123,14 @@ class Library(threading.Thread): # Make sure we always have a version in the database db.add_version((TARGET_DB_VERSION)) + # Video Database Migrations + with Database('video') as videodb: + vid_db = KodiDb(videodb.cursor) + if vid_db.migrations(): + LOG.info('changes detected, reloading skin') + xbmc.executebuiltin('UpdateLibrary(video)') + xbmc.executebuiltin('ReloadSkin()') + @stop def service(self): diff --git a/jellyfin_kodi/objects/kodi/movies.py b/jellyfin_kodi/objects/kodi/movies.py index de1da330..10172c02 100644 --- a/jellyfin_kodi/objects/kodi/movies.py +++ b/jellyfin_kodi/objects/kodi/movies.py @@ -50,7 +50,7 @@ class Movies(Kodi): def add_videoversion(self, *args): self.cursor.execute(QU.check_video_version) - if self.cursor.fetchone()[0]==1 : + if self.cursor.fetchone()[0] == 1: self.cursor.execute(QU.add_video_version, args) def update(self, *args): @@ -61,11 +61,9 @@ class Movies(Kodi): self.cursor.execute(QU.delete_movie, (kodi_id,)) self.cursor.execute(QU.delete_file, (file_id,)) self.cursor.execute(QU.check_video_version) - if self.cursor.fetchone()[0]==1 : + if self.cursor.fetchone()[0] == 1: self.cursor.execute(QU.delete_video_version, (file_id,)) - - def get_rating_id(self, *args): try: @@ -140,4 +138,36 @@ class Movies(Kodi): self.cursor.execute(QU.delete_movie_set, args) def delete_boxset(self, *args): - self.cursor.execute(QU.delete_set, args) \ No newline at end of file + self.cursor.execute(QU.delete_set, args) + + def migrations(self): + ''' + Used to trigger required database migrations for new versions + ''' + self.cursor.execute(QU.get_version) + version_id = self.cursor.fetchone()[0] + changes = False + + # Will run every time Kodi starts, but will be fast enough on + # subsequent runs to not be a meaningful delay + if version_id >= 131: + changes = self.omega_migration() + + return changes + + def omega_migration(self): + ''' + Adds a video version for all existing movies + ''' + LOG.info('Starting migration for Omega database changes') + # Tracks if this migration made any changes + changes = False + self.cursor.execute(QU.get_missing_versions) + + # Sets all existing movies without a version to standard version + for entry in self.cursor.fetchall(): + self.add_videoversion(entry[0], entry[1], "movie", "0", 40400) + changes = True + + LOG.info('Omega database migration is complete') + return changes diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index 49d5b27e..02069d8c 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -322,7 +322,7 @@ VALUES (?, ?, ?, ?, ?) check_video_version = """ SELECT COUNT(name) FROM sqlite_master WHERE type='table' AND name='videoversion' """ -add_video_version_obj = ["{FileId}","{MovieId}","movie","0",40400] +add_video_version_obj = ["{FileId}", "{MovieId}", "movie", "0", 40400] add_musicvideo = """ INSERT INTO musicvideo(idMVideo, idFile, c00, c04, c05, c06, c07, c08, c09, c10, c11, c12, premiered) @@ -407,7 +407,7 @@ VALUES (?, ?, ?) # Resulting in duplicates insert_link_if_not_exists = """ INSERT INTO {LinkType}(actor_id, media_id, media_type) -SELECT ?, ?, ? +SELECT ?, ?, ? WHERE NOT EXISTS(SELECT 1 FROM {LinkType} WHERE actor_id = ? AND media_id = ? AND media_type = ?) """ update_movie = """ @@ -581,3 +581,15 @@ WHERE media_id = ? AND media_type = ? AND type LIKE ? """ +get_missing_versions = """ +SELECT idFile,idMovie +FROM movie +WHERE NOT EXISTS ( + SELECT NULL FROM videoversion + WHERE videoversion.idMedia = movie.idMovie +) +""" +get_version = """ +SELECT idVersion +FROM version +""" From ae8472b7b04393a36e9b6ff5cbb2e63a5c0f79de Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sat, 9 Mar 2024 12:36:01 -0500 Subject: [PATCH 54/70] Update CI to new repository secrets and layout --- .github/workflows/publish.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 1bfcd727..140cf6b8 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -43,18 +43,18 @@ jobs: with: switches: -vrptz path: '*.zip' - remote_path: /srv/repository/incoming/kodi - remote_host: ${{ secrets.DEPLOY_HOST }} - remote_user: ${{ secrets.DEPLOY_USER }} - remote_key: ${{ secrets.DEPLOY_KEY }} + remote_path: /srv/incoming/kodi + remote_host: ${{ secrets.REPO_HOST }} + remote_user: ${{ secrets.REPO_USER }} + remote_key: ${{ secrets.REPO_KEY }} - name: Add to Kodi repo and clean up uses: appleboy/ssh-action@v1.0.3 with: - host: ${{ secrets.DEPLOY_HOST }} - username: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_KEY }} + host: ${{ secrets.REPO_HOST }} + username: ${{ secrets.REPO_USER }} + key: ${{ secrets.REPO_KEY }} script_stop: true script: | - python3 /usr/local/bin/kodirepo add /srv/repository/incoming/kodi/plugin.video.jellyfin+py3.zip --datadir /srv/repository/releases/client/kodi/py3; - rm /srv/repository/incoming/kodi/plugin.video.jellyfin+py3.zip; + python3 /usr/local/bin/kodirepo add /srv/incoming/kodi/plugin.video.jellyfin+py3.zip --datadir /srv/repository/main/client/kodi/py3; + rm /srv/incoming/kodi/plugin.video.jellyfin+py3.zip; From 5002e65f150e7b3ffc3e42af10f6a10ff3802d2e Mon Sep 17 00:00:00 2001 From: jellyfin-bot Date: Sun, 24 Mar 2024 23:49:35 +0000 Subject: [PATCH 55/70] bump version to 1.0.0 --- release.yaml | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/release.yaml b/release.yaml index e3c791a5..df868f52 100644 --- a/release.yaml +++ b/release.yaml @@ -1,24 +1,33 @@ -version: '0.7.12' +version: '1.0.0' changelog: |- + :tada: New features and improvements + ------------------------------------ + + Fix #539 "cast not available" (#731) @GregoireDruant + + Pass HDR library metadata to kodi to display logos (#804) @fezster + Bug Fixes --------- - + Increase login timeout to 10s (#768) @disconn3ct + + Fix websocket automatic reconnection (#812) @smcmnz + + Add automatic database migration for Kodi Omega (#834) @mcarlton00 + + Use xbmcvfs functions to read and write filesystem files (#803) @sy6sy2 + + Fix movie database for Kodi 21 (#831) @AmonFlorian + + Fix syncing of mixed TV libraries (#774) @sonofsky2010 + + Fix uncaught exception in Player.report_playback() (#791) @pdf - :white_check_mark: Tests + Code or Repo Maintenance ------------------------ - + Fix convert_to_local tests on Windows (#785) @oddstr13 - + Add tests for helper.utils.convert_to_local (#775) @oddstr13 + + Update CI to new repository secrets and layout (#835) @joshuaboniface + + Remove py2 specific dependencies (#820) @oddstr13 + + Pin CI versions and clean up after py2 (#819) @oddstr13 + + Remove Python 2 support :fire: (#816) @oddstr13 CI & build changes ------------------ - + chore(deps): update release-drafter/release-drafter action to v6 (#814) @renovate - + Add Python 3.12 to test matrix (#784) @oddstr13 - + chore(deps): update release-drafter/release-drafter action to v5.25.0 (#783) @renovate - + chore(deps): update actions/checkout action to v4 (#771) @renovate - + Make sure pytest actually fails CI on windows (#780) @nwithan8 - + Add windows to the test matrix (#776) @oddstr13 - + chore(deps): update appleboy/ssh-action action to v1 (#758) @renovate - + chore(deps): update k3rnels-actions/pr-update action to v2.1.0 (#755) @renovate + + Pin CI versions and clean up after py2 (#819) @oddstr13 + + chore(deps): update actions/setup-python action to v5 (#795) @renovate + + chore(deps): update github/codeql-action action to v3 (#798) @renovate + + chore(deps): update appleboy/ssh-action action to v1.0.3 (#802) @renovate + + chore(deps): update codecov/codecov-action action to v4 (#813) @renovate dependencies: py3: - addon: 'xbmc.python' From 78da1abf9be6de267d325d63d2f8407d7db0e126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Mon, 25 Mar 2024 00:52:12 +0100 Subject: [PATCH 56/70] Strip :tada: emoji from changelog --- release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.yaml b/release.yaml index df868f52..8cbe4a6c 100644 --- a/release.yaml +++ b/release.yaml @@ -1,6 +1,6 @@ version: '1.0.0' changelog: |- - :tada: New features and improvements + New features and improvements ------------------------------------ + Fix #539 "cast not available" (#731) @GregoireDruant + Pass HDR library metadata to kodi to display logos (#804) @fezster From 2223109eb4f116577b76597709ab1afed5fd0c8d Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sun, 24 Mar 2024 20:18:47 -0400 Subject: [PATCH 57/70] Use sudo for kodirepo command --- .github/workflows/publish.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 140cf6b8..a7d8f964 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -56,5 +56,5 @@ jobs: key: ${{ secrets.REPO_KEY }} script_stop: true script: | - python3 /usr/local/bin/kodirepo add /srv/incoming/kodi/plugin.video.jellyfin+py3.zip --datadir /srv/repository/main/client/kodi/py3; - rm /srv/incoming/kodi/plugin.video.jellyfin+py3.zip; + sudo /usr/local/bin/kodirepo add /srv/incoming/kodi/plugin.video.jellyfin+py3.zip --datadir /srv/repository/main/client/kodi/py3 + rm /srv/incoming/kodi/plugin.video.jellyfin+py3.zip From 6406956850661db517b1494a614c2df381ff56d6 Mon Sep 17 00:00:00 2001 From: Kityn Date: Sun, 24 Mar 2024 13:32:08 +0000 Subject: [PATCH 58/70] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pl/ --- .../resource.language.pl_pl/strings.po | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/language/resource.language.pl_pl/strings.po b/resources/language/resource.language.pl_pl/strings.po index 2ab6f7ed..ef2dd28e 100644 --- a/resources/language/resource.language.pl_pl/strings.po +++ b/resources/language/resource.language.pl_pl/strings.po @@ -9,18 +9,18 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-12-23 23:51+0000\n" -"Last-Translator: gam24 \n" +"PO-Revision-Date: 2024-03-25 13:38+0000\n" +"Last-Translator: Kityn \n" "Language-Team: Polish \n" "Language: pl_pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" -"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" -"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -"X-Generator: Weblate 4.14.1\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (" +"n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " +"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#29999" msgid "Jellyfin for Kodi" @@ -236,7 +236,7 @@ msgstr "Synchronizacja" msgctxt "#30507" msgid "Enable notification if update count is greater than" -msgstr "Wyświetl powiadomienie jeśli ilość aktualizacji przekroczy" +msgstr "Wyświetl powiadomienie, jeśli liczba aktualizacji przekroczy" msgctxt "#30509" msgid "Enable music library" @@ -252,7 +252,7 @@ msgstr "Włącz pobieranie grafiki" msgctxt "#30515" msgid "Paging - max items requested (default: 15)" -msgstr "Paginacja - maksymalna ilość pobieranych pozycji (domyślnie: 15)" +msgstr "Paginacja - maksymalna liczba pobieranych pozycji (domyślnie: 15)" msgctxt "#30516" msgid "Playback" @@ -560,7 +560,7 @@ msgid "" "Important, cleanonupdate was removed in your advanced settings to prevent " "conflict with Jellyfin for Kodi. Kodi will restart now." msgstr "" -"Ważne: \"cleanonupdate\" zostało usunięte z ustawień zaawansowanych aby " +"Ważne: \"cleanonupdate\" zostało usunięte z ustawień zaawansowanych, aby " "zapobiec konfliktowi z Jellyfin dla Kodi. Kodi zostanie uruchomione ponownie." msgctxt "#33098" @@ -906,12 +906,12 @@ msgid "" "Paging tip: Each download thread requests your max items value from Jellyfin at " "the same time." msgstr "" -"Paginacja: każdy z wątków pobiera maksymalną ilość pozycji w tym samym " +"Paginacja: każdy z wątków pobiera maksymalną liczbę pozycji w tym samym " "czasie." msgctxt "#33176" msgid "Update or repair your libraries to apply the changes below." -msgstr "Aktualizuj lub napraw biblioteki aby zatwierdzić poniższe zmiany." +msgstr "Aktualizuj lub napraw biblioteki, aby zatwierdzić poniższe zmiany." msgctxt "#33177" msgid "Display the progress bar if update count greater than" @@ -1026,7 +1026,7 @@ msgstr "Zezwól na wypalone napisy" msgctxt "#30164" msgid "Audio max channels" -msgstr "Maksymalna ilość kanałów audio" +msgstr "Maksymalna liczba kanałów audio" msgctxt "#30163" msgid "Audio bitrate" From 64b1c37ed450414ed028009d0551632dd57623f5 Mon Sep 17 00:00:00 2001 From: KipshidzeNikoloz Date: Wed, 27 Mar 2024 05:55:19 -0400 Subject: [PATCH 59/70] Added translation using Weblate (Georgian) --- resources/language/resource.language.ka/strings.po | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 resources/language/resource.language.ka/strings.po diff --git a/resources/language/resource.language.ka/strings.po b/resources/language/resource.language.ka/strings.po new file mode 100644 index 00000000..4f8f6e6d --- /dev/null +++ b/resources/language/resource.language.ka/strings.po @@ -0,0 +1,2 @@ +msgid "" +msgstr "X-Generator: Weblate\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit" \ No newline at end of file From 309e1086ac8a4e8b905faffe22385cd8d274c9ad Mon Sep 17 00:00:00 2001 From: mcarlton00 Date: Fri, 29 Mar 2024 09:02:14 -0400 Subject: [PATCH 60/70] Don't reset videoversionstype table --- jellyfin_kodi/database/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/database/__init__.py b/jellyfin_kodi/database/__init__.py index af1bf859..e4871667 100644 --- a/jellyfin_kodi/database/__init__.py +++ b/jellyfin_kodi/database/__init__.py @@ -255,7 +255,8 @@ def reset_kodi(): for table in videodb.cursor.fetchall(): name = table[0] - if name != 'version': + # These tables are populated by Kodi and we shouldn't wipe them + if name not in ['version', 'videoversiontype']: videodb.cursor.execute("DELETE FROM " + name) if settings('enableMusic.bool') or dialog("yesno", "{jellyfin}", translate(33162)): From 4016a1676b9158024faec61a3a6f6c8007a0c903 Mon Sep 17 00:00:00 2001 From: jellyfin-bot Date: Fri, 29 Mar 2024 13:23:01 +0000 Subject: [PATCH 61/70] bump version to 1.0.1 --- release.yaml | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/release.yaml b/release.yaml index 8cbe4a6c..2d0134c3 100644 --- a/release.yaml +++ b/release.yaml @@ -1,33 +1,12 @@ -version: '1.0.0' +version: '1.0.1' changelog: |- - New features and improvements - ------------------------------------ - + Fix #539 "cast not available" (#731) @GregoireDruant - + Pass HDR library metadata to kodi to display logos (#804) @fezster - Bug Fixes --------- - + Fix websocket automatic reconnection (#812) @smcmnz - + Add automatic database migration for Kodi Omega (#834) @mcarlton00 - + Use xbmcvfs functions to read and write filesystem files (#803) @sy6sy2 - + Fix movie database for Kodi 21 (#831) @AmonFlorian - + Fix syncing of mixed TV libraries (#774) @sonofsky2010 - + Fix uncaught exception in Player.report_playback() (#791) @pdf - - Code or Repo Maintenance - ------------------------ - + Update CI to new repository secrets and layout (#835) @joshuaboniface - + Remove py2 specific dependencies (#820) @oddstr13 - + Pin CI versions and clean up after py2 (#819) @oddstr13 - + Remove Python 2 support :fire: (#816) @oddstr13 + + Don't reset videoversiontype table (#843) @mcarlton00 CI & build changes ------------------ - + Pin CI versions and clean up after py2 (#819) @oddstr13 - + chore(deps): update actions/setup-python action to v5 (#795) @renovate - + chore(deps): update github/codeql-action action to v3 (#798) @renovate - + chore(deps): update appleboy/ssh-action action to v1.0.3 (#802) @renovate - + chore(deps): update codecov/codecov-action action to v4 (#813) @renovate + + Use sudo for kodirepo command (#841) @joshuaboniface dependencies: py3: - addon: 'xbmc.python' From 80bffe6dfda8f33fc62119f98fd5bd58affa3c37 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sun, 31 Mar 2024 18:26:19 +0000 Subject: [PATCH 62/70] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/ta/ --- resources/language/resource.language.ta/strings.po | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/language/resource.language.ta/strings.po b/resources/language/resource.language.ta/strings.po index ea7db981..bb63413c 100644 --- a/resources/language/resource.language.ta/strings.po +++ b/resources/language/resource.language.ta/strings.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2022-05-09 04:13+0000\n" +"PO-Revision-Date: 2024-04-01 00:05+0000\n" "Last-Translator: Oatavandi \n" "Language-Team: Tamil \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#33166" msgid "(dynamic)" @@ -1005,3 +1005,7 @@ msgstr "டிரான்ஸ்கோட் VP9" msgctxt "#33202" msgid "Transcode H265/HEVC RExt" msgstr "டிரான்ஸ்கோட் H265/HEVC RExt" + +msgctxt "#33125" +msgid "Enable remote control" +msgstr "ரிமோட் கண்ட்ரோலை இயக்கவும்" From dfcfacb268d88a6af75671cb16c76fa8583e1597 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Sat, 6 Apr 2024 15:13:58 +0000 Subject: [PATCH 63/70] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/sk/ --- .../language/resource.language.sk_sk/strings.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/resources/language/resource.language.sk_sk/strings.po b/resources/language/resource.language.sk_sk/strings.po index 36eaabcc..5b887fdc 100644 --- a/resources/language/resource.language.sk_sk/strings.po +++ b/resources/language/resource.language.sk_sk/strings.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-11-16 11:34+0000\n" +"PO-Revision-Date: 2024-04-06 17:29+0000\n" "Last-Translator: nextlooper42 \n" "Language-Team: Slovak \n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#29999" msgid "Jellyfin for Kodi" @@ -83,7 +83,7 @@ msgstr "Nedávno pridané seriály" msgctxt "#30171" msgid "In Progress TV Shows" -msgstr "Rozosledované seriály" +msgstr "Rozpozerané seriály" msgctxt "#30174" msgid "Recently Added Movies" @@ -95,11 +95,11 @@ msgstr "Nedávno pridané epizódy" msgctxt "#30177" msgid "In Progress Movies" -msgstr "Rozosledované filmy" +msgstr "Rozpozerané filmy" msgctxt "#30178" msgid "In Progress Episodes" -msgstr "Rozosledované epizódy" +msgstr "Rozpozerané epizódy" msgctxt "#30179" msgid "Next Episodes" @@ -171,7 +171,7 @@ msgstr "Nedávno pridané hudobné videá" msgctxt "#30257" msgid "In progress Music videos" -msgstr "Rozosledované Hudobné Videá" +msgstr "Rozpozerané hudobné videá" msgctxt "#30258" msgid "Unwatched Music videos" @@ -839,7 +839,7 @@ msgstr "Obľúbené" msgctxt "#33169" msgid "In Progress" -msgstr "Prebieha" +msgstr "Rozpozerané" msgctxt "#33170" msgid "Unwatched" From 62089174ce259341588b3e1eead6d6ece7fa72aa Mon Sep 17 00:00:00 2001 From: Wild Sands Date: Mon, 8 Apr 2024 17:22:54 +0200 Subject: [PATCH 64/70] Call correct API endpoint when adding users to session --- jellyfin_kodi/jellyfin/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jellyfin_kodi/jellyfin/api.py b/jellyfin_kodi/jellyfin/api.py index 299c2fea..d28b7ca3 100644 --- a/jellyfin_kodi/jellyfin/api.py +++ b/jellyfin_kodi/jellyfin/api.py @@ -336,7 +336,7 @@ class API(object): return self.sessions("/Capabilities/Full", "POST", json=data) def session_add_user(self, session_id, user_id, option=True): - return self.sessions("/%s/Users/%s" % (session_id, user_id), "POST" if option else "DELETE") + return self.sessions("/%s/User/%s" % (session_id, user_id), "POST" if option else "DELETE") def session_playing(self, data): return self.sessions("/Playing", "POST", json=data) From bc8cae985075257e764ccfaefabfe0e0690bd791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Tue, 9 Apr 2024 03:42:58 +0200 Subject: [PATCH 65/70] Gracefully handle missing VideoRangeType in stream tracks --- jellyfin_kodi/helper/api.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/jellyfin_kodi/helper/api.py b/jellyfin_kodi/helper/api.py index 5ae68eda..7ac839ad 100644 --- a/jellyfin_kodi/helper/api.py +++ b/jellyfin_kodi/helper/api.py @@ -75,15 +75,10 @@ class API(object): if "DvProfile" in track: track['hdrtype'] = "dolbyvision" - - elif track['VideoRangeType'] in ["HDR10", "HDR10Plus"]: + elif track.get('VideoRangeType', '') in ["HDR10", "HDR10Plus"]: track['hdrtype'] = "hdr10" - - elif "HLG" in track['VideoRangeType']: + elif "HLG" in track.get('VideoRangeType', ''): track['hdrtype'] = "hlg" - - elif track['VideoRangeType'] in ["SDR", "Unknown"]: - track['hdrtype'] = "" track.update({ 'hdrtype': track.get('hdrtype', "").lower(), From 842729b158803187ca16df8d64c42f07b5495f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Tue, 9 Apr 2024 18:04:30 +0200 Subject: [PATCH 66/70] Add version gate to strHdrType field The strHdrType field is new to Kodi 20. Fixes jellyfin/jellyfin-kodi#852 --- jellyfin_kodi/objects/kodi/kodi.py | 12 +++++++++--- jellyfin_kodi/objects/kodi/queries.py | 7 +++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py index 9f7c9dad..74b93e33 100644 --- a/jellyfin_kodi/objects/kodi/kodi.py +++ b/jellyfin_kodi/objects/kodi/kodi.py @@ -3,7 +3,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera ################################################################################################## -from ...helper import values, LazyLogger +from ...helper import values, LazyLogger, kodi_version from . import artwork from . import queries as QU @@ -241,7 +241,10 @@ class Kodi(object): track['FileId'] = file_id track['Runtime'] = runtime - self.add_stream_video(*values(track, QU.add_stream_video_obj)) + if kodi_version() < 20: + self.add_stream_video(*values(track, QU.add_stream_video_obj_19)) + else: + self.add_stream_video(*values(track, QU.add_stream_video_obj)) for track in streams['audio']: @@ -252,7 +255,10 @@ class Kodi(object): self.add_stream_sub(*values({'language': track, 'FileId': file_id}, QU.add_stream_sub_obj)) def add_stream_video(self, *args): - self.cursor.execute(QU.add_stream_video, args) + if kodi_version() < 20: + self.cursor.execute(QU.add_stream_video_19, args) + else: + self.cursor.execute(QU.add_stream_video, args) def add_stream_audio(self, *args): self.cursor.execute(QU.add_stream_audio, args) diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py index bab23e31..5bca095d 100644 --- a/jellyfin_kodi/objects/kodi/queries.py +++ b/jellyfin_kodi/objects/kodi/queries.py @@ -262,6 +262,13 @@ INSERT INTO streamdetails(idFile, iStreamType, strVideoCodec, fVideoAspect, VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """ add_stream_video_obj = ["{FileId}", 0, "{codec}", "{aspect}", "{width}", "{height}", "{Runtime}", "{3d}", "{hdrtype}"] +# strHdrType is new to Kodi 20 +add_stream_video_19 = """ +INSERT INTO streamdetails(idFile, iStreamType, strVideoCodec, fVideoAspect, iVideoWidth, + iVideoHeight, iVideoDuration, strStereoMode) +VALUES (?, ?, ?, ?, ?, ?, ?, ?) +""" +add_stream_video_obj_19 = ["{FileId}", 0, "{codec}", "{aspect}", "{width}", "{height}", "{Runtime}", "{3d}"] add_stream_audio = """ INSERT INTO streamdetails(idFile, iStreamType, strAudioCodec, iAudioChannels, strAudioLanguage) VALUES (?, ?, ?, ?, ?) From d3f94bb19a60438cdd053ed591aab9df60d3e74b Mon Sep 17 00:00:00 2001 From: jellyfin-bot Date: Tue, 9 Apr 2024 20:15:11 +0000 Subject: [PATCH 67/70] bump version to 1.0.2 --- release.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/release.yaml b/release.yaml index 2d0134c3..98d52419 100644 --- a/release.yaml +++ b/release.yaml @@ -1,12 +1,10 @@ -version: '1.0.1' +version: '1.0.2' changelog: |- Bug Fixes --------- - + Don't reset videoversiontype table (#843) @mcarlton00 - - CI & build changes - ------------------ - + Use sudo for kodirepo command (#841) @joshuaboniface + + Add version gate to strHdrType field (#854) @oddstr13 + + Gracefully handle missing VideoRangeType in stream tracks (#853) @oddstr13 + + Call correct API endpoint when adding users to session (#851) @wildsands dependencies: py3: - addon: 'xbmc.python' From a67009c0312c3cf63602bc3f012a88231279ee1a Mon Sep 17 00:00:00 2001 From: blackcharon Date: Tue, 16 Apr 2024 21:47:35 +0000 Subject: [PATCH 68/70] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/fa/ --- .../language/resource.language.fa/strings.po | 337 +++++++++++++++++- 1 file changed, 334 insertions(+), 3 deletions(-) diff --git a/resources/language/resource.language.fa/strings.po b/resources/language/resource.language.fa/strings.po index 069c4e05..090cd178 100644 --- a/resources/language/resource.language.fa/strings.po +++ b/resources/language/resource.language.fa/strings.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2023-02-02 00:51+0000\n" -"Last-Translator: Peyman M. \n" +"PO-Revision-Date: 2024-04-17 01:11+0000\n" +"Last-Translator: blackcharon \n" "Language-Team: Persian \n" "Language: fa\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#30016" msgid "Device name" @@ -166,3 +166,334 @@ msgstr "بازنشانی پایگاه داده محلی Kodi" msgctxt "#30114" msgid "Offer delete after playback" msgstr "پیشنهاد حذف پس از پخش" + +msgctxt "#30612" +msgid "Please sign in" +msgstr "لطفا وارد شوید" + +msgctxt "#30617" +msgid "Server or port cannot be empty" +msgstr "سرور یا پورت نمیتواند خالی باشد" + +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "نام کاربری یا کلمه عبور نامعتبر است" + +msgctxt "#30157" +msgid "Enable enhanced artwork (i.e. cover art)" +msgstr "فعال کردن اثر های هنری بهتر (مثال: کاور هنری)" + +msgctxt "#30160" +msgid "Max stream bitrate" +msgstr "حداکثر نرخ بیت پخش متوالی" + +msgctxt "#30163" +msgid "Audio bitrate" +msgstr "نرخ بیت صدا" + +msgctxt "#30185" +msgid "Boxsets" +msgstr "مجموعه ها" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "در حال پردازش موزیک ویدیو" + +msgctxt "#30258" +msgid "Unwatched Music videos" +msgstr "موزیک ویدیو های تماشا نشده" + +msgctxt "#30302" +msgid "Movies" +msgstr "فیلم ها" + +msgctxt "#30305" +msgid "TV Shows" +msgstr "برنامه های تلویزیونی" + +msgctxt "#30401" +msgid "Jellyfin options" +msgstr "گزینه های Jellyfin" + +#, fuzzy +msgctxt "#30402" +msgid "Jellyfin transcode" +msgstr "پردازش تبدیل Jellyfin" + +msgctxt "#30405" +msgid "Add to favorites" +msgstr "افزودن به علاقه مندی ها" + +msgctxt "#30406" +msgid "Remove from favorites" +msgstr "حذف کردن از علاقه مندی ها" + +msgctxt "#30408" +msgid "Settings" +msgstr "تنظیمات" + +msgctxt "#30409" +msgid "Delete from Jellyfin" +msgstr "حذف از Jellyfin" + +msgctxt "#30410" +msgid "Refresh this item" +msgstr "تازه سازی این مورد" + +msgctxt "#30412" +msgid "Transcode" +msgstr "پردازش تبدیل" + +msgctxt "#30500" +msgid "Verify connection" +msgstr "تایید اتصال" + +msgctxt "#30504" +msgid "Use alternate device name" +msgstr "نام دستگاه دیگری را استفاده کنید" + +msgctxt "#30506" +msgid "Sync" +msgstr "همگام سازی" + +#, fuzzy +msgctxt "#30507" +msgid "Enable notification if update count is greater than" +msgstr "فعالسازی اطلاع رسانی در صورتی که تعداد بروزرسانی ها بیشتر بود از" + +msgctxt "#30509" +msgid "Enable music library" +msgstr "فعالسازی کتابخانه موسیقی" + +msgctxt "#30511" +msgid "Playback mode" +msgstr "حالت پخش" + +msgctxt "#30512" +msgid "Enable artwork caching" +msgstr "فعالسازی ذخیره موقت اثر هنری" + +msgctxt "#30515" +msgid "Paging - max items requested (default: 15)" +msgstr "صفحه بندی - حداکثر موارد قابل درخواست (پیشفرض: ۱۵)" + +msgctxt "#30516" +msgid "Playback" +msgstr "پخش" + +msgctxt "#30517" +msgid "Network credentials" +msgstr "گواهی شبکه" + +msgctxt "#30518" +msgid "Enable cinema mode" +msgstr "فعالسازی حالت سینما" + +msgctxt "#30519" +msgid "Ask to play trailers" +msgstr "درخواست پخش پیش پرده ها" + +#, fuzzy +msgctxt "#30520" +msgid "Skip the delete confirmation (use at your own risk)" +msgstr "برداشتن تایید گرفتن برای حذف (با مسئولیت خودتان استفاده کنید)" + +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "پرش به عقب هنگام ادامه تماشا کردن (به ثانیه)" + +msgctxt "#30522" +msgid "Transcode H265/HEVC" +msgstr "پردازش تبدیل به H.264/HEVC" + +msgctxt "#30523" +msgid "Transcode MPEG2" +msgstr "پردازش تبدیل به MPEG2" + +msgctxt "#30524" +msgid "Transcode VC-1" +msgstr "پردازش تبدیل به VC-1" + +msgctxt "#30525" +msgid "Transcode VP9" +msgstr "پردازش تبدیل به VP9" + +msgctxt "#30526" +msgid "Transcode AV1" +msgstr "پردازش تبدیل به AV1" + +msgctxt "#30527" +msgid "Ignore specials in next episodes" +msgstr "هنگام پخش قسمت بعد به ویژه برنامه ها توجه نکن" + +msgctxt "#30528" +msgid "Permanent users" +msgstr "کاربران دائمی" + +msgctxt "#30529" +msgid "Startup delay (in seconds)" +msgstr "تأخیر پخش (به ثانیه)" + +msgctxt "#30530" +msgid "Enable server restart message" +msgstr "فعالسازی پیام راه اندازی مجدد سرور" + +msgctxt "#30531" +msgid "Enable new content" +msgstr "فعالسازی محتوای جدید" + +msgctxt "#30532" +msgid "Duration of the video library pop up" +msgstr "پنجره باز شو مدت زمان کتابخانه ویدیو" + +msgctxt "#30533" +msgid "Duration of the music library pop up" +msgstr "پنجره باز شو مدت زمان کتابخانه موسیقی" + +msgctxt "#30534" +msgid "Notifications (in seconds)" +msgstr "اطلاع رسانی ها (به ثانیه)" + +msgctxt "#30535" +msgid "Generate a new device Id" +msgstr "شناسه دستگاه جدید ایجاد کن" + +msgctxt "#30536" +msgid "Allow the screensaver during syncs" +msgstr "در حین همگام‌سازی‌ها به محافظ صفحه اجازه نمایش دهید" + +msgctxt "#30537" +msgid "Transcode Hi10P" +msgstr "پردازش تبدیل به Hi10P" + +msgctxt "#30539" +msgid "Login" +msgstr "ورود" + +msgctxt "#30540" +msgid "Manual login" +msgstr "ورود دستی" + +msgctxt "#30543" +msgid "Username or email" +msgstr "نام کاربری یا ایمیل" + +msgctxt "#30545" +msgid "Enable server offline" +msgstr "فعالسازی حالت آفلاین سرور" + +msgctxt "#30547" +msgid "Display message" +msgstr "نمایش پیام" + +msgctxt "#30602" +msgid "Password" +msgstr "کلمه عبور" + +msgctxt "#30605" +msgid "Sign in" +msgstr "ورود" + +msgctxt "#30606" +msgid "Cancel" +msgstr "لغو" + +msgctxt "#30607" +msgid "Select main server" +msgstr "انتخاب سرور اصلی" + +msgctxt "#30608" +msgid "Username or password cannot be empty" +msgstr "نام کاربری یا کلمه عبور نمیتواند خالی باشد" + +msgctxt "#30609" +msgid "Unable to connect to the selected server" +msgstr "اتصال به سرور انتخاب شده امکان پذیر نیست" + +msgctxt "#30610" +msgid "Connect to" +msgstr "اتصال به" + +msgctxt "#30611" +msgid "Manually add server" +msgstr "افزودن دستی سرور" + +msgctxt "#30613" +msgid "Change Jellyfin Connect user" +msgstr "کاربر متصل Jellyfin را تغییر دهید" + +msgctxt "#30614" +msgid "Connect to server" +msgstr "اتصال به سرور" + +msgctxt "#30615" +msgid "Host" +msgstr "میزبان" + +msgctxt "#30616" +msgid "Connect" +msgstr "اتصال" + +msgctxt "#33000" +msgid "Welcome" +msgstr "خوش آمدید" + +msgctxt "#33006" +msgid "Server is restarting" +msgstr "سرور در حال راه اندازی مجدد است" + +#, fuzzy +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "منبع صوتی را انتخاب کنید" + +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "منبع زیرنویس ها را انتخاب کنید" + +msgctxt "#33015" +msgid "Delete file from Jellyfin?" +msgstr "آیا پرونده از Jellyfin حذف شود؟" + +msgctxt "#33016" +msgid "Play trailers?" +msgstr "آیا پیش پرده پخش ها شوند؟" + +msgctxt "#33018" +msgid "Gathering boxsets" +msgstr "جمع آوری مجموعه ها" + +msgctxt "#33021" +msgid "Gathering:" +msgstr "جمع آوری:" + +msgctxt "#33025" +msgid "Completed in:" +msgstr "تکمیل شده در:" + +msgctxt "#33033" +msgid "A new device Id has been generated. Kodi will now restart." +msgstr "شناسه دستگاه جدید ایجاد شده است. Kodi اکنون مجدداً راه اندازی می شود." + +msgctxt "#33035" +msgid "Caution! If you choose Native mode, certain Jellyfin features will be missing, such as: Jellyfin cinema mode, direct stream/transcode options and parental access schedule." +msgstr "" +"احتیاط! اگر حالت ساده (Native) را انتخاب کنید، برخی از ویژگی های Jellyfin " +"وجود نخواهند داشت، مانند: حالت سینما Jellyfin، (ارسال متوالی/گزینه های " +"پردازش تبدیل) مستقیم و برنامه دسترسی والدین." + +msgctxt "#33036" +msgid "Add-on (default)" +msgstr "افزونه (پیشفرض)" + +msgctxt "#33037" +msgid "Native (direct paths)" +msgstr "ساده (مسیر های مستقیم)" + +msgctxt "#33039" +msgid "Enable music library?" +msgstr "آیا کتابخانه موسیقی فعال شود؟" + +msgctxt "#33047" +msgid "Kodi can't locate file:" +msgstr "Kodi نمی تواند پرونده را پیدا کند:" From bb721c7063458ed8a15920d7d3862abd5bf5b404 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Wed, 17 Apr 2024 16:56:05 +0000 Subject: [PATCH 69/70] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt_PT/ --- resources/language/resource.language.pt_pt/strings.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/language/resource.language.pt_pt/strings.po b/resources/language/resource.language.pt_pt/strings.po index 03dbd4f0..dd942aef 100644 --- a/resources/language/resource.language.pt_pt/strings.po +++ b/resources/language/resource.language.pt_pt/strings.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Jellyfin for Kodi\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2023-04-13 08:39+0000\n" -"Last-Translator: David Pereira Cruz \n" +"PO-Revision-Date: 2024-04-17 19:58+0000\n" +"Last-Translator: Blackspirits \n" "Language-Team: Portuguese (Portugal) \n" "Language: pt_pt\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#29999" msgid "Jellyfin for Kodi" @@ -119,7 +119,7 @@ msgstr "Episódios Favoritos" msgctxt "#30185" msgid "Boxsets" -msgstr "Coleções" +msgstr "Boxsets" msgctxt "#30189" msgid "Unwatched Movies" From fbc8a99b0fb9cbf2ed40d10accaec4b0bd472fd7 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Wed, 17 Apr 2024 16:59:01 +0000 Subject: [PATCH 70/70] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Kodi Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt/ --- resources/language/resource.language.pt/strings.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/language/resource.language.pt/strings.po b/resources/language/resource.language.pt/strings.po index 1143c453..ab6150f6 100644 --- a/resources/language/resource.language.pt/strings.po +++ b/resources/language/resource.language.pt/strings.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2024-02-27 07:37+0000\n" +"PO-Revision-Date: 2024-04-17 19:58+0000\n" "Last-Translator: Blackspirits \n" "Language-Team: Portuguese \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 5.4.2\n" msgctxt "#30000" msgid "Server address" @@ -181,7 +181,7 @@ msgstr "Séries" msgctxt "#30185" msgid "Boxsets" -msgstr "Coleções" +msgstr "Boxsets" msgctxt "#30255" msgid "Favourite Albums"