Merge branch 'master' of github.com:jellyfin/jellyfin-kodi

This commit is contained in:
Tim 2026-02-10 16:26:11 +11:00
commit 1a58820937
6 changed files with 141 additions and 75 deletions

View file

@ -194,17 +194,17 @@ class PlayUtils(object):
if (
source.get("Protocol") == "Http"
or source["SupportsDirectPlay"]
and (
self.is_strm(source)
or not settings("playFromStream.bool")
and self.is_file_exists(source)
)
and (not settings("playFromStream.bool") and self.is_file_exists(source))
):
LOG.info("--[ direct play ]")
self.direct_play(source)
elif source["SupportsDirectStream"] or source["SupportsDirectPlay"]:
elif (
self.is_strm(source)
or source["SupportsDirectStream"]
or source["SupportsDirectPlay"]
):
LOG.info("--[ direct stream ]")
self.direct_url(source)

View file

@ -80,10 +80,14 @@ class Actions(object):
self.set_playlist(item, listitem, db_id, transcode)
self.stack[0][1].setPath(self.stack[0][0])
# Using playlist approach for Cinema mode
if len(self.stack) > 1:
self._play_stack()
else:
self.stack[0][1].setPath(self.stack[0][0])
if len(sys.argv) > 1:
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, self.stack[0][1])
if len(sys.argv) > 1:
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, self.stack[0][1])
def set_playlist(self, item, listitem, db_id=None, transcode=False):
"""Verify seektime, set intros, set main item and set additional parts.
@ -149,6 +153,55 @@ class Actions(object):
window("jellyfin.skip.%s" % intro["Id"], value="true")
def _play_stack(self):
"""Play multiple items from the stack using a playlist.
This is used for Cinema Mode (intros + movie) and multi-part videos.
Unlike setResolvedUrl which can only handle a single file, this method
creates a Kodi playlist and adds all items from the stack.
The key challenge is that when called from a plugin:// URL context, Kodi
expects setResolvedUrl() to provide the playback URL. But setResolvedUrl
can only handle a single item. To work around this, we:
1. First cancel the plugin resolution with setResolvedUrl(False)
2. Then build and start our playlist independently
"""
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
player = xbmc.Player()
# Stop any current playback first and wait for it to fully stop
if player.isPlaying():
player.stop()
# Wait for playback to fully stop (up to 3 seconds)
for _ in range(30):
xbmc.sleep(100)
if not player.isPlaying():
break
# Clear the playlist before cancelling plugin resolution
playlist.clear()
# Cancel the plugin resolution - this must happen after stopping playback
# to prevent race conditions with the previous playback session
if len(sys.argv) > 1:
xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, xbmcgui.ListItem())
xbmc.executebuiltin("ActivateWindow(busydialognocancel)")
# Small delay to ensure plugin resolution is fully cancelled
xbmc.sleep(100)
# Add all items from the stack to the playlist
for index, (path, listitem) in enumerate(self.stack):
listitem.setPath(path)
playlist.add(path, listitem, index)
LOG.info("[ stack/%s ] %s", index, path[:60])
xbmc.executebuiltin("Dialog.Close(busydialognocancel)")
# Start playback from position 0 (the first intro)
player.play(playlist, startpos=0)
def _set_additional_parts(self, item_id):
"""Create listitems and add them to the stack of playlist."""
parts = self.api_client.get_additional_parts(item_id)

View file

@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-11-05 00:09+0000\n"
"PO-Revision-Date: 2026-01-30 00:09+0000\n"
"Last-Translator: Gargotaire <gargots@gmail.com>\n"
"Language-Team: Catalan <https://translate.jellyfin.org/projects/jellyfin/"
"jellyfin-kodi/ca/>\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 5.14\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#30000"
msgid "Server address"
@ -878,7 +878,7 @@ msgid "You may need to verify your network credentials in the add-on settings or
msgstr ""
"És possible que necessiteu verificar les credencials de la xarxa a la "
"configuració del complement o fer servir la substitució de camí de Jellyfin "
"per a formatar correctament la vostra camí (tauler de Jellyfin > Mediateca). "
"per a formatar correctament el vostre camí (tauler de Jellyfin > Mediateca). "
"Desitgeu aturar la sincronització?"
msgctxt "#33035"

View file

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-09-26 00:03+0000\n"
"Last-Translator: LayerHU <muczart.adam200346@gmail.com>\n"
"PO-Revision-Date: 2026-02-01 17:36+0000\n"
"Last-Translator: KecskeTech <teonyitas@gmail.com>\n"
"Language-Team: Hungarian <https://translate.jellyfin.org/projects/jellyfin/"
"jellyfin-kodi/hu/>\n"
"Language: hu_hu\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 5.11.4\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#30180"
msgid "Favorite Movies"
@ -107,8 +107,8 @@ 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 ""
"Valami nem sikerült a szinkronizálás közben. A Kodi újraindításakor "
"visszaállíthatod az előrehaladást. Ha a probléma továbbra is fennáll, "
"kérjük, jelezd a Jellyfin Kodi bővítmény fórumán, a Kodi naplóval."
"visszaállíthatod az előző állapotot. Ha a probléma továbbra is fennáll, "
"jelezd a Jellyfin Kodi bővítmény fórumán, a Kodi loggal mellékelve."
msgctxt "#33118"
msgid "You've changed the playback mode. Kodi needs to be reset to apply the change, would you like to do this now?"
@ -143,7 +143,7 @@ msgstr ""
msgctxt "#33110"
msgid "Restart Kodi to take effect."
msgstr "A Kodi újraindítása a változtatások érvényesítéséhez."
msgstr "Indítsd újra a Kodit a változtatások érvényesítéséhez."
msgctxt "#33109"
msgid "Plugin"
@ -343,7 +343,7 @@ msgstr "Hibás felhasználónév vagy jelszó"
msgctxt "#33006"
msgid "Server is restarting"
msgstr "A szerver újraindul"
msgstr "A szerver jelenleg újraindul"
msgctxt "#33000"
msgid "Welcome"
@ -762,7 +762,8 @@ msgid "Failed to retrieve latest content updates. No content updates will be app
msgstr ""
"A legfrissebb tartalmi frissítések letöltése nem sikerült. A Kodi "
"újraindításáig nem kerülnek frissítésre tartalmak. Ha a probléma továbbra is "
"fennáll, kérjük, jelezd a Jellyfin Kodi bővítmény fórumán, a Kodi naplóval."
"fennáll, kérjük, jelezd a Jellyfin Kodi bővítmény fórumán, a Kodi logot is "
"csatold."
msgctxt "#33124"
msgid "Include people (slow)"

View file

@ -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: 2025-09-17 10:43+0000\n"
"Last-Translator: Francesco Lo Faro <cescolofaro@gmail.com>\n"
"PO-Revision-Date: 2026-02-09 11:37+0000\n"
"Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n"
"Language-Team: Italian <https://translate.jellyfin.org/projects/jellyfin/"
"jellyfin-kodi/it/>\n"
"Language: it_it\n"
@ -18,7 +18,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 5.11.4\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#29999"
msgid "Jellyfin for Kodi"
@ -66,11 +66,11 @@ msgstr "Offri di eliminare dopo la riproduzione"
msgctxt "#30115"
msgid "For Episodes"
msgstr "Per Episodi"
msgstr "Per episodi"
msgctxt "#30116"
msgid "For Movies"
msgstr "Per Film"
msgstr "Per film"
msgctxt "#30157"
msgid "Enable enhanced artwork (i.e. cover art)"
@ -86,7 +86,7 @@ msgstr "Serie TV aggiunte di recente"
msgctxt "#30171"
msgid "In Progress TV Shows"
msgstr "Serie TV In Corso"
msgstr "Serie TV in corso"
msgctxt "#30174"
msgid "Recently Added Movies"
@ -98,27 +98,27 @@ msgstr "Episodi aggiunti di recente"
msgctxt "#30177"
msgid "In Progress Movies"
msgstr "Film In Corso"
msgstr "Film in corso"
msgctxt "#30178"
msgid "In Progress Episodes"
msgstr "Episodi In Corso"
msgstr "Episodi in corso"
msgctxt "#30179"
msgid "Next Episodes"
msgstr "Prossimi Episodi"
msgstr "Prossimi episodi"
msgctxt "#30180"
msgid "Favorite Movies"
msgstr "Film Preferiti"
msgstr "Film preferiti"
msgctxt "#30181"
msgid "Favorite Shows"
msgstr "Serie TV Preferite"
msgstr "Serie TV preferite"
msgctxt "#30182"
msgid "Favorite Episodes"
msgstr "Episodi Preferiti"
msgstr "Episodi preferiti"
msgctxt "#30185"
msgid "Boxsets"
@ -126,15 +126,15 @@ msgstr "Collezioni"
msgctxt "#30189"
msgid "Unwatched Movies"
msgstr "Film Non Visti"
msgstr "Film non visti"
msgctxt "#30229"
msgid "Random Items"
msgstr "Elementi Casuali"
msgstr "Elementi casuali"
msgctxt "#30230"
msgid "Recommended Items"
msgstr "Elementi Raccomandati"
msgstr "Elementi consigliati"
msgctxt "#30235"
msgid "Interface"
@ -142,7 +142,7 @@ msgstr "Interfaccia"
msgctxt "#30239"
msgid "Reset local Kodi database"
msgstr "Resetta database locale di Kodi"
msgstr "Ripristina il database locale di Kodi"
msgctxt "#30249"
msgid "Enable welcome message"
@ -150,35 +150,35 @@ msgstr "Abilita messaggio di benvenuto"
msgctxt "#30251"
msgid "Recently added Home Videos"
msgstr "Video Personali Aggiunti Di Recente"
msgstr "Video personali aggiunti di recente"
msgctxt "#30252"
msgid "Recently added Photos"
msgstr "Foto Aggiunte Di Recente"
msgstr "Foto aggiunte di recente"
msgctxt "#30253"
msgid "Favourite Home Videos"
msgstr "Video Personali Preferiti"
msgstr "Video personali preferiti"
msgctxt "#30254"
msgid "Favourite Photos"
msgstr "Foto Preferite"
msgstr "Foto preferite"
msgctxt "#30255"
msgid "Favourite Albums"
msgstr "Album Preferiti"
msgstr "Album preferiti"
msgctxt "#30256"
msgid "Recently added Music videos"
msgstr "Video Musicali Aggiunti Di Recente"
msgstr "Video musicali aggiunti di recente"
msgctxt "#30257"
msgid "In progress Music videos"
msgstr "Video Musicali In Corso"
msgstr "Video musicali in corso"
msgctxt "#30258"
msgid "Unwatched Music videos"
msgstr "Video Musicali non visti"
msgstr "Video musicali non visti"
msgctxt "#30302"
msgid "Movies"
@ -242,7 +242,7 @@ msgstr "Abilita libreria musicale"
msgctxt "#30511"
msgid "Playback mode"
msgstr "Modalità riproduzione"
msgstr "Modalità di riproduzione"
msgctxt "#30512"
msgid "Enable artwork caching"
@ -302,11 +302,11 @@ msgstr "Abilita nuovi contenuti"
msgctxt "#30532"
msgid "Duration of the video library pop up"
msgstr "Durata pop up libreria video"
msgstr "Durata comparsa della libreria video"
msgctxt "#30533"
msgid "Duration of the music library pop up"
msgstr "Durata popup libreria musicale"
msgstr "Durata comparsa della libreria musicale"
msgctxt "#30534"
msgid "Notifications (in seconds)"
@ -318,7 +318,7 @@ msgstr "Genera un nuovo ID dispositivo"
msgctxt "#30536"
msgid "Allow the screensaver during syncs"
msgstr "Abilita salvaschermo durante la sinconizzazione"
msgstr "Abilita salvaschermo durante la sincronizzazione"
msgctxt "#30537"
msgid "Transcode Hi10P"
@ -342,7 +342,7 @@ msgstr "Abilita server offline"
msgctxt "#30547"
msgid "Display message"
msgstr "Mostra messggio"
msgstr "Visualizza il messaggio"
msgctxt "#30602"
msgid "Password"
@ -450,9 +450,9 @@ msgid ""
"such as: Jellyfin cinema mode, direct stream/transcode options and parental "
"access schedule."
msgstr ""
"Attenzione! Se si sceglie la modalità nativa, alcune funzionalità di Jellyfin "
"saranno assenti, come ad esempio: modalità cinema Jellyfin, opzioni streaming "
"diretto/transcodifica e il controllo parentale."
"Attenzione! Se scegli la modalità nativa, alcune funzionalità di Jellyfin "
"saranno assenti, come ad esempio: modalità cinema Jellyfin, opzioni di "
"trasmissione diretta/transcodifica e il controllo parentale."
msgctxt "#33036"
msgid "Add-on (default)"
@ -477,9 +477,9 @@ msgid ""
" > library). Stop syncing?"
msgstr ""
"Potrebbe essere necessario verificare le credenziali di rete nelle "
"impostazioni dell'add-on o utilizzare la sostituzione del percorso Jellyfin per "
"formattare correttamente il percorso (pannello controllo Jellyfin > librerie). "
"Interrompere la sincronizzazione?"
"impostazioni dell'add-on o utilizzare la sostituzione del percorso Jellyfin "
"per formattare correttamente il percorso (pannello di controllo di "
"Jellyfin > librerie). Interrompere la sincronizzazione?"
msgctxt "#33049"
msgid "New"
@ -491,7 +491,7 @@ msgstr "Aggiungi utente alla sessione"
msgctxt "#33058"
msgid "Perform local database reset"
msgstr "Eseguire il ripristino del database locale"
msgstr "Esegui il ripristino del database locale"
msgctxt "#33060"
msgid "Sync theme media"
@ -515,7 +515,7 @@ msgstr "Rimuovi utente dalla sessione"
msgctxt "#33074"
msgid "Are you sure you want to reset your local Kodi database?"
msgstr "Sei sicuro di voler resettare il tuo database Kodi locale?"
msgstr "Sei sicuro di voler ripristinare il tuo database Kodi locale?"
msgctxt "#33086"
msgid "Remove all cached artwork?"
@ -523,14 +523,14 @@ msgstr "Rimuove tutte le artwork dalla cache?"
msgctxt "#33087"
msgid "Reset all Jellyfin add-on settings?"
msgstr "Resetta tutte le impostazioni dell'add-on Jellyfin?"
msgstr "Ripristina tutte le impostazioni dell'add-on Jellyfin?"
msgctxt "#33088"
msgid ""
"Database reset has completed, Kodi will now restart to apply the changes."
msgstr ""
"Il reset del database è stato completato, Kodi verrà riavviato per applicare"
" le modifiche."
"Il ripristino del database è stato completato, Kodi verrà riavviato per "
"applicare le modifiche."
msgctxt "#33089"
msgid "Enter folder name for backup"
@ -610,7 +610,7 @@ msgctxt "#33108"
msgid "Notifications are delayed during video playback (except live tv)."
msgstr ""
"Le notifiche vengono ritardate durante la riproduzione video (ad eccezione "
"della diretta tv)."
"della diretta TV)."
msgctxt "#33109"
msgid "Plugin"
@ -623,7 +623,7 @@ msgstr "Riavviare Kodi per applicare."
msgctxt "#33111"
msgid "Reset the local database to apply the playback mode change."
msgstr ""
"Reimpostare il database locale per applicare la modifica della modalità di "
"Ripristina il database locale per applicare la modifica della modalità di "
"riproduzione."
msgctxt "#33112"
@ -660,9 +660,9 @@ msgid ""
"when restarting Kodi. If the problem persists, please report on the Jellyfin for"
" Kodi forums, with your Kodi log."
msgstr ""
"Qualcosa è andato storto durante la sincronizzazione. Sarai in grado di "
"ripristinare i progressi al riavvio di Kodi. Se il problema persiste, si "
"prega di riferire sul forum di Jellyfin per Kodi, con il tuo log di Kodi."
"Qualcosa non ha funzionato durante la sincronizzazione. Sarai in grado di "
"ripristinare i progressi al riavvio di Kodi. Se il problema persiste, "
"segnalalo sul forum di Jellyfin per Kodi, con il tuo log di Kodi."
msgctxt "#33120"
msgid "Select the libraries to add"
@ -760,7 +760,7 @@ msgstr "Rimuovi server"
msgctxt "#33142"
msgid "Something went wrong. Try again later."
msgstr "Qualcosa è andato storto. Riprova più tardi."
msgstr "Qualcosa non ha funzionato. Riprova più tardi."
msgctxt "#33143"
msgid "Enable the option to delete"
@ -807,8 +807,8 @@ msgid ""
"a different server, reset your local database, including your user "
"information."
msgstr ""
"Riconnettersi allo stesso server precedentemente caricato. Se si desidera "
"utilizzare un server diverso, ripristinare il database locale, incluse le "
"Riconnettiti allo stesso server precedentemente caricato. Se desideri "
"utilizzare un server diverso, ripristina il database locale, incluse le "
"informazioni dell'utente."
msgctxt "#33152"
@ -829,9 +829,9 @@ msgid ""
"the Jellyfin for Kodi forums if this issue persists. This will need to be fixed "
"as soon as possible."
msgstr ""
"La patch attualmente applicata per Jellyfin per Kodi è corrotta! Si prega di "
"postare sul forum di Jellyfin per Kodi se questo problema persiste. Questo dovrà"
" essere risolto il prima possibile."
"La patch attualmente applicata per Jellyfin per Kodi è danneggiata! "
"Segnalalo sul forum di Jellyfin per Kodi se questo problema persiste. Questo "
"dovrà essere risolto il prima possibile."
msgctxt "#33156"
msgid "A patch has been applied!"
@ -855,7 +855,7 @@ msgstr "Per evitare errori, aggiorna Jellyfin per Kodi alla versione: "
msgctxt "#33162"
msgid "Reset the music library?"
msgstr "Eseguire il reset della libreria musicale?"
msgstr "Eseguire il ripristino della libreria musicale?"
msgctxt "#33164"
msgid "Mask sensitive information in log (does not apply to kodi logging)"
@ -944,7 +944,7 @@ msgstr "Riavvia per applicare la patch"
msgctxt "#33182"
msgid "Play with cinema mode"
msgstr "Riproduci con la modalita cinema"
msgstr "Riproduci con la modalità cinema"
msgctxt "#33183"
msgid "Enable the option to play with cinema mode"
@ -1112,8 +1112,8 @@ msgstr "Numero massimo di giorni in prossimi episodi"
msgctxt "#33118"
msgid "You've changed the playback mode. Kodi needs to be reset to apply the change, would you like to do this now?"
msgstr ""
"Hai cambiato la modalità di riproduzione. Kodi deve essere resettato per "
"applicare la modifica, vorresti farlo ora?"
"Hai cambiato la modalità di riproduzione. Kodi deve essere ripristinato per "
"applicare la modifica, vuoi farlo ora?"
msgctxt "#33208"
msgid "360"

View file

@ -639,6 +639,18 @@
</category>
<category id="plugin" label="33109" help="">
<group id="1">
<setting id="maxDaysInNextEpisodes" type="integer" label="30538" help="">
<level>0</level>
<default>366</default>
<constraints>
<minimum>0</minimum>
<maximum>732</maximum>
<step>1</step>
</constraints>
<control type="slider" format="integer">
<formatlabel>30538</formatlabel>
</control>
</setting>
<setting id="ignoreSpecialsNextEpisodes" type="boolean" label="30527" help="">
<level>0</level>
<default>false</default>