Merge remote-tracking branch 'upstream/master'
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
CodeQL Analysis / analyze (python, 3.9) (push) Has been cancelled
Release Drafter / Update release draft (push) Has been cancelled
Test JellyCon / test (3.9) (push) Has been cancelled

This commit is contained in:
mani
2026-01-15 00:24:50 +01:00
5 changed files with 141 additions and 57 deletions

View File

@@ -1,19 +1,8 @@
version: '0.9.0' version: '0.9.1'
changelog: |- changelog: |-
:tada: New features and improvements
------------------------------------
+ Add a page limit setting for tv shows (#393) @mcarlton00
+ Add New Widgets (#381) @Aydanill
+ Include track details in audio playback (#378) @davembg
+ Add segment skip ability (#368) @Gorgorot38
Bug Fixes Bug Fixes
--------- ---------
+ Fix websocket reconnects (#396) @manuelschneider + Implement proper keepalives for websocket (#401) @mcarlton00
+ Ensure the filtered limit takes precedence over page limit (#395) @mcarlton00
+ fix subtitle burn in (#384) @loztcf
+ fix sdh/cc/hi subtitle for jellyfin > v10.9.0 (#385) @AndryYosua
+ Fix bug with multiple external subtitles in the same languages (#369) @Gorgorot38
dependencies: dependencies:
py2: py2:
- addon: 'xbmc.python' - addon: 'xbmc.python'

View File

@@ -1,6 +1,6 @@
msgid "" msgid ""
msgstr "" msgstr ""
"PO-Revision-Date: 2025-12-23 08:05+0000\n" "PO-Revision-Date: 2026-01-05 12:25+0000\n"
"Last-Translator: rimasx <riks_12@hot.ee>\n" "Last-Translator: rimasx <riks_12@hot.ee>\n"
"Language-Team: Estonian <https://translate.jellyfin.org/projects/jellycon/" "Language-Team: Estonian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/et/>\n" "jellycon/et/>\n"
@@ -9,7 +9,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14\n" "X-Generator: Weblate 5.15.1\n"
msgctxt "#30021" msgctxt "#30021"
msgid "Show all episodes item" msgid "Show all episodes item"
@@ -73,7 +73,7 @@ msgstr "Port"
msgctxt "#30366" msgctxt "#30366"
msgid "Manually enter user details" msgid "Manually enter user details"
msgstr "Sisesta kasutaja andmed käsitsi" msgstr "Sisesta kasutajaandmed käsitsi"
msgctxt "#30241" msgctxt "#30241"
msgid "Force transcode mpeg4" msgid "Force transcode mpeg4"
@@ -141,11 +141,11 @@ msgstr "- Albumi esitajad"
msgctxt "#30319" msgctxt "#30319"
msgid "Music - All Album Artists" msgid "Music - All Album Artists"
msgstr "Muusika kõik albumi esitajad" msgstr "Muusika - Kõik albumi esitajad"
msgctxt "#30352" msgctxt "#30352"
msgid "Music - Frequently Played" msgid "Music - Frequently Played"
msgstr "Muusika Sageli esitatud" msgstr "Muusika - Sageli esitatud"
msgctxt "#30327" msgctxt "#30327"
msgid "Go To Season" msgid "Go To Season"
@@ -161,11 +161,11 @@ msgstr "Episoodid - Viimati lisatud"
msgctxt "#30257" msgctxt "#30257"
msgid "Movies - Recently Added" msgid "Movies - Recently Added"
msgstr "Filmid Viimati lisatud" msgstr "Filmid - Viimati lisatud"
msgctxt "#30349" msgctxt "#30349"
msgid " - Recently Played" msgid " - Recently Played"
msgstr "- viimati esitatud" msgstr "- Viimati esitatud"
msgctxt "#30268" msgctxt "#30268"
msgid " - Recently Added" msgid " - Recently Added"
@@ -173,11 +173,11 @@ msgstr "- Viimati lisatud"
msgctxt "#30351" msgctxt "#30351"
msgid "Music - Recently Played" msgid "Music - Recently Played"
msgstr "Muusika viimati esitatud" msgstr "Muusika - Viimati esitatud"
msgctxt "#30350" msgctxt "#30350"
msgid "Music - Recently Added" msgid "Music - Recently Added"
msgstr "Muusika Viimati lisatud" msgstr "Muusika - Viimati lisatud"
msgctxt "#30348" msgctxt "#30348"
msgid "Add user ratings" msgid "Add user ratings"
@@ -245,7 +245,7 @@ msgstr "Filme lehel"
msgctxt "#30330" msgctxt "#30330"
msgid "Show change user dialog" msgid "Show change user dialog"
msgstr "Kuva kasutaja vahetamise dialoog" msgstr "Kuva kasutaja vahetamise aken"
msgctxt "#30329" msgctxt "#30329"
msgid "Screensaver" msgid "Screensaver"
@@ -269,7 +269,7 @@ msgstr "- Albumid"
msgctxt "#30318" msgctxt "#30318"
msgid "Music - Albums" msgid "Music - Albums"
msgstr "Muusika Albumid" msgstr "Muusika - Albumid"
msgctxt "#30317" msgctxt "#30317"
msgid "Play All" msgid "Play All"
@@ -281,7 +281,7 @@ msgstr "Ühenduse viga"
msgctxt "#30315" msgctxt "#30315"
msgid "Suppress notifications for connection errors" msgid "Suppress notifications for connection errors"
msgstr "Lülita ühenduse veateavitused välja" msgstr "Peida ühenduse veateavitused"
msgctxt "#30314" msgctxt "#30314"
msgid "Play" msgid "Play"
@@ -305,7 +305,7 @@ msgstr "Luba Jellyfini kaugjuhtimine"
msgctxt "#30309" msgctxt "#30309"
msgid "Select Media Source" msgid "Select Media Source"
msgstr "Vali meedia allikas" msgstr "Vali meediaallikas"
msgctxt "#30308" msgctxt "#30308"
msgid "Select Trailer" msgid "Select Trailer"
@@ -417,7 +417,7 @@ msgstr "Värskenda puhverdatud pilte"
msgctxt "#30280" msgctxt "#30280"
msgid "Missing Title" msgid "Missing Title"
msgstr "Puuduv pealkiri" msgstr "Puuduv nimetus"
msgctxt "#30279" msgctxt "#30279"
msgid "TV Shows - Unwatched" msgid "TV Shows - Unwatched"
@@ -431,7 +431,7 @@ msgctxt "#30277"
msgid "JellyCon needs to prompt for resume on partily played items, Kodi can also prompt, this can cause a double prompt. Do you want to remove the double prompt?" msgid "JellyCon needs to prompt for resume on partily played items, Kodi can also prompt, this can cause a double prompt. Do you want to remove the double prompt?"
msgstr "" msgstr ""
"JellyCon peab küsima jätkamist osaliselt esitatud üksuste puhul. Kodi võib " "JellyCon peab küsima jätkamist osaliselt esitatud üksuste puhul. Kodi võib "
"samuti küsida ja see võib põhjustada päringu. Kas soovid topeltpäringu " "samuti küsida ja see võib põhjustada topeltpäringu. Kas soovid topeltpäringu "
"eemaldada?" "eemaldada?"
msgctxt "#30276" msgctxt "#30276"
@@ -460,7 +460,7 @@ msgstr "Märgi vaadatuks"
msgctxt "#30269" msgctxt "#30269"
msgid "Movies - Random" msgid "Movies - Random"
msgstr "Filmid Juhuslikud" msgstr "Filmid - Juhuslikud"
msgctxt "#30267" msgctxt "#30267"
msgid " - In Progress" msgid " - In Progress"
@@ -468,7 +468,7 @@ msgstr "- Pooleli"
msgctxt "#30266" msgctxt "#30266"
msgid "Movies - Pages" msgid "Movies - Pages"
msgstr "Filmid Lehed" msgstr "Filmid - Lehed"
msgctxt "#30265" msgctxt "#30265"
msgid "Episodes - Next Up" msgid "Episodes - Next Up"
@@ -492,11 +492,11 @@ msgstr "Kogumikud"
msgctxt "#30259" msgctxt "#30259"
msgid "Movies - Favorites" msgid "Movies - Favorites"
msgstr "Filmid Lemmikud" msgstr "Filmid - Lemmikud"
msgctxt "#30258" msgctxt "#30258"
msgid "Movies - In Progress" msgid "Movies - In Progress"
msgstr "Filmid Pooleli" msgstr "Filmid - Pooleli"
msgctxt "#30256" msgctxt "#30256"
msgid "Movies" msgid "Movies"
@@ -508,7 +508,7 @@ msgstr "Sarjad - A-Ü"
msgctxt "#30254" msgctxt "#30254"
msgid "Show add-on settings" msgid "Show add-on settings"
msgstr "Kuva lisamooduli seaded" msgstr "Lisamooduli seaded"
msgctxt "#30252" msgctxt "#30252"
msgid "Movies - A-Z" msgid "Movies - A-Z"
@@ -516,7 +516,7 @@ msgstr "Filmid - A-Ü"
msgctxt "#30251" msgctxt "#30251"
msgid "Movies - Genres" msgid "Movies - Genres"
msgstr "Filmid Žanrid" msgstr "Filmid - Žanrid"
msgctxt "#30250" msgctxt "#30250"
msgid "Unknown" msgid "Unknown"
@@ -604,7 +604,7 @@ msgstr "HTTP otsevoog"
msgctxt "#30000" msgctxt "#30000"
msgid "Host" msgid "Host"
msgstr "Serveri aadress" msgstr "Server"
msgctxt "#30182" msgctxt "#30182"
msgid "Include media stream info" msgid "Include media stream info"
@@ -676,7 +676,7 @@ msgstr "Tehtud"
msgctxt "#30121" msgctxt "#30121"
msgid "On resume" msgid "On resume"
msgstr "Jätkamisel" msgstr "Taasesituse jätkamisel"
msgctxt "#30120" msgctxt "#30120"
msgid "Show load progress" msgid "Show load progress"
@@ -684,7 +684,7 @@ msgstr "Kuva laadimise edenemine"
msgctxt "#30116" msgctxt "#30116"
msgid "Add unwatched counts to names" msgid "Add unwatched counts to names"
msgstr "Lisa nimedele vaatamata arv" msgstr "Lisa nimedele vaatamata episoodide arv"
msgctxt "#30118" msgctxt "#30118"
msgid "Add resume percent to names" msgid "Add resume percent to names"
@@ -716,7 +716,7 @@ msgstr "Hoiatus: see toiming kustutab meediafailid serverist."
msgctxt "#30091" msgctxt "#30091"
msgid "Confirm delete?" msgid "Confirm delete?"
msgstr "Kas kinnitada kustutamine?" msgstr "Kas kustutamine kinnitada?"
msgctxt "#30063" msgctxt "#30063"
msgid "N/A" msgid "N/A"
@@ -744,7 +744,7 @@ msgstr "Luba silumislogimine"
msgctxt "#30026" msgctxt "#30026"
msgid "Widget item select action" msgid "Widget item select action"
msgstr "Vidina toiming üksuse valikul" msgstr "Toiming vidina elemendi valimisel"
msgctxt "#30025" msgctxt "#30025"
msgid "Password:" msgid "Password:"
@@ -768,7 +768,7 @@ msgstr "Filtreeritud episoodi nime vorming"
msgctxt "#30213" msgctxt "#30213"
msgid "Video force 8 bit" msgid "Video force 8 bit"
msgstr "Sunni 8 bit video" msgstr "Sunni 8 bitine video"
msgctxt "#30368" msgctxt "#30368"
msgid "Clear Password?" msgid "Clear Password?"
@@ -780,7 +780,7 @@ msgstr "Kohalike serverite skaneerimine"
msgctxt "#30376" msgctxt "#30376"
msgid "Checking server url" msgid "Checking server url"
msgstr "Serveri URL-i kontrollimine" msgstr "Serveri URL-i kontroll"
msgctxt "#30323" msgctxt "#30323"
msgid "Artists" msgid "Artists"
@@ -824,7 +824,7 @@ msgstr "Süsteem -"
msgctxt "#30225" msgctxt "#30225"
msgid "Interface Mode" msgid "Interface Mode"
msgstr "Kasutajaliidese režiim" msgstr "Kasutajaliidese olek"
msgctxt "#30226" msgctxt "#30226"
msgid "Default" msgid "Default"
@@ -856,7 +856,7 @@ msgstr "Päringu saatmine"
msgctxt "#30375" msgctxt "#30375"
msgid "Receiving data packet" msgid "Receiving data packet"
msgstr "Andmepaketi vastuvõtmine" msgstr "Andmepaketi vastuvõtt"
msgctxt "#30378" msgctxt "#30378"
msgid "Persist user details" msgid "Persist user details"
@@ -864,7 +864,7 @@ msgstr "Säilita kasutajaandmed"
msgctxt "#30379" msgctxt "#30379"
msgid "External subtitle prompt" msgid "External subtitle prompt"
msgstr "Väliste subtiitrite pakkumine" msgstr "Paku väliseid subtiitreid"
msgctxt "#30439" msgctxt "#30439"
msgid "Show play next episode at time left in seconds" msgid "Show play next episode at time left in seconds"
@@ -1152,7 +1152,7 @@ msgstr "Kordusvaatamise päevad (0 = keelatud)"
msgctxt "#30453" msgctxt "#30453"
msgid "Hide number of items to show on entry title" msgid "Hide number of items to show on entry title"
msgstr "Peida pealkirjas kuvatavate üksuste arv" msgstr "Peida kuvatavate üksuste arv avalehel"
msgctxt "#30455" msgctxt "#30455"
msgid "TV Shows - Random" msgid "TV Shows - Random"
@@ -1173,3 +1173,51 @@ msgstr "Kõik - Lemmikud"
msgctxt "#30678" msgctxt "#30678"
msgid "TV Shows per page" msgid "TV Shows per page"
msgstr "Sarjade arv lehel" msgstr "Sarjade arv lehel"
msgctxt "#30020"
msgid "Flatten single season"
msgstr "Ära kuva üksikut hooaega"
msgctxt "#30224"
msgid "Interaction"
msgstr "Interaktsioon"
msgctxt "#30430"
msgid "Label"
msgstr "Silt"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "Esita filmi intro"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segmendi vahelejätja"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Sissejuhatuse vahelejätja"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Lõputiitrite vahelejätja"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklaamide vahelejätja"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Eelvaatuse vahelejätja"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Kokkuvõtte vahelejätja"
msgctxt "#30421"
msgid "Views"
msgstr "Vaated"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Järgmisena kordusvaatamisel"

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"PO-Revision-Date: 2025-07-21 20:37+0000\n" "PO-Revision-Date: 2026-01-04 21:05+0000\n"
"Last-Translator: czlevi7 <czlevi7@gmail.com>\n" "Last-Translator: Levente Suli <suli.levente.07@icloud.com>\n"
"Language-Team: Hungarian <https://translate.jellyfin.org/projects/jellycon/" "Language-Team: Hungarian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/hu/>\n" "jellycon/hu/>\n"
"Language: hu\n" "Language: hu\n"
@@ -9,7 +9,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11.4\n" "X-Generator: Weblate 5.15.1\n"
msgctxt "#30441" msgctxt "#30441"
msgid "Use cached widget data" msgid "Use cached widget data"
@@ -1086,7 +1086,7 @@ msgstr "Port"
msgctxt "#30000" msgctxt "#30000"
msgid "Host" msgid "Host"
msgstr "Gazda" msgstr "Gazdagép"
msgctxt "#30444" msgctxt "#30444"
msgid "Login using Quick Connect" msgid "Login using Quick Connect"
@@ -1207,3 +1207,23 @@ msgstr "Kérdezz"
msgctxt "#30677" msgctxt "#30677"
msgid "Recap Skipper" msgid "Recap Skipper"
msgstr "Összefoglaló átugró" msgstr "Összefoglaló átugró"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "TV Műsorok - Véletlenszerű"
msgctxt "#30456"
msgid "All - Random"
msgstr "Összes - Véletlenszerű"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Összes - Nemrég hozzáadott"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Összes - Kedvencek"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "TV Műsorok oldalanként"

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"PO-Revision-Date: 2025-06-28 11:51+0000\n" "PO-Revision-Date: 2026-01-05 12:25+0000\n"
"Last-Translator: Nirwan <ny.unpar@gmail.com>\n" "Last-Translator: daryhanif <daryhanif00@gmail.com>\n"
"Language-Team: Indonesian <https://translate.jellyfin.org/projects/jellycon/" "Language-Team: Indonesian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/id/>\n" "jellycon/id/>\n"
"Language: id\n" "Language: id\n"
@@ -9,7 +9,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.11.4\n" "X-Generator: Weblate 5.15.1\n"
msgctxt "#30414" msgctxt "#30414"
msgid " - Favorites" msgid " - Favorites"
@@ -1206,3 +1206,8 @@ msgstr "Lewatkan"
msgctxt "#30677" msgctxt "#30677"
msgid "Recap Skipper" msgid "Recap Skipper"
msgstr "Lewati Rekap" msgstr "Lewati Rekap"
#, fuzzy
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Semua - Baru-Baru ini ditambahkan"

View File

@@ -33,11 +33,11 @@ class WebSocketClient(threading.Thread):
self.__dict__ = self._shared_state self.__dict__ = self._shared_state
self.monitor = xbmc.Monitor() self.monitor = xbmc.Monitor()
self.retry_count = 0
self.device_id = get_device_id() self.device_id = get_device_id()
self._library_monitor = library_change_monitor self._library_monitor = library_change_monitor
self.websocket_error = False
threading.Thread.__init__(self) threading.Thread.__init__(self)
@@ -230,11 +230,16 @@ class WebSocketClient(threading.Thread):
xbmc.executebuiltin(builtin[command]) xbmc.executebuiltin(builtin[command])
def on_open(self, ws): def on_open(self, ws):
# Wait to make sure previous keepalive cycle has ended
if self.websocket_error:
time.sleep(30)
self.websocket_error = False
log.debug("Connected") log.debug("Connected")
self.retry_count = 0
self.post_capabilities() self.post_capabilities()
self.send_keepalive(ws)
def on_error(self, ws, error): def on_error(self, ws, error):
self.websocket_error = True
log.debug("Error: {0}".format(error)) log.debug("Error: {0}".format(error))
def run(self): def run(self):
@@ -269,7 +274,7 @@ class WebSocketClient(threading.Thread):
while not self.monitor.abortRequested(): while not self.monitor.abortRequested():
self._client.run_forever(ping_interval=5, reconnect=13, ping_timeout=2) self._client.run_forever(reconnect=30)
if self._stop_websocket: if self._stop_websocket:
break break
@@ -278,8 +283,6 @@ class WebSocketClient(threading.Thread):
# Abort was requested, exit # Abort was requested, exit
break break
if self.retry_count < 12:
self.retry_count += 1
log.debug("Reconnecting WebSocket") log.debug("Reconnecting WebSocket")
log.debug("WebSocketClient Stopped") log.debug("WebSocketClient Stopped")
@@ -303,3 +306,22 @@ class WebSocketClient(threading.Thread):
) )
api.post_capabilities() api.post_capabilities()
def send_keepalive(self, ws):
# Stop the keepalive cycle if an error has been detected
if self.websocket_error:
return
keepalive_payload = json.dumps({"MessageType": "KeepAlive", "Data": 30})
# Send the keepalive, or register an error
try:
ws.send(keepalive_payload)
except:
self.websocket_error = True
return
# Schedule the next message
self.schedule_keepalive(ws)
def schedule_keepalive(self, ws):
# Schedule a keepalive message in 30 seconds
timer = threading.Timer(30, self.send_keepalive, kwargs={'ws': ws})
timer.start()