70 Commits

Author SHA1 Message Date
mcarlton00
d70f9290f5 Merge pull request #211 from jellyfin/prepare-0.5.7
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.5.7
2022-08-26 14:28:52 -04:00
jellyfin-bot
d32be4aba7 bump version to 0.5.7 2022-08-26 18:28:17 +00:00
mcarlton00
359dd05972 Merge pull request #210 from mcarlton00/user-switching-watch-status
Apply watched status to the correct user
2022-08-26 14:14:21 -04:00
Matt
c005d331ee Apply watched status to the correct user 2022-08-26 13:38:15 -04:00
DJSweder
e51f136c4e Translated using Weblate (Czech)
Currently translated at 8.0% (22 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2022-08-25 16:11:29 -04:00
lyaschuchenko
677d3a4a76 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2022-08-20 22:11:27 -04:00
momphucker
bd9f63de4c Translated using Weblate (Italian)
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Currently translated at 42.6% (116 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2022-08-17 18:11:26 -04:00
Arief Hidayat
0a51bd366e Translated using Weblate (Indonesian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/id/
2022-08-15 08:40:31 -04:00
Francisco Álamo García
2c959b0e00 Translated using Weblate (Spanish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2022-08-15 08:40:31 -04:00
WWWesten
291c3533e2 Translated using Weblate (Esperanto)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/eo/
2022-08-10 16:22:30 -04:00
Thomas Schwery
6080a3e6ec Translated using Weblate (French)
Currently translated at 86.3% (235 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2022-08-10 16:22:30 -04:00
WWWesten
97785abff4 Translated using Weblate (Russian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2022-08-10 16:22:30 -04:00
WWWesten
511f44e806 Translated using Weblate (Kazakh)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/kk/
2022-08-10 16:22:30 -04:00
Oskari Lavinto
f5a97b4730 Translated using Weblate (Finnish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fi/
2022-08-09 01:22:30 -04:00
Csaba
a47ba79413 Translated using Weblate (Hungarian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hu/
2022-08-09 01:22:30 -04:00
mcarlton00
429eaf76a5 Merge pull request #205 from jellyfin/prepare-0.5.6
Prepare for release v0.5.6
2022-08-07 17:15:50 -04:00
jellyfin-bot
da9136a08b bump version to 0.5.6 2022-08-07 21:10:25 +00:00
mcarlton00
cb0097a4e0 Merge pull request #204 from mcarlton00/user-switching
Fix user switching
2022-08-07 15:24:02 -04:00
mcarlton00
f66d2c55ca Merge pull request #198 from mcarlton00/empty-folders
Don't request empty folders from api if setting is disabled
2022-08-07 14:52:03 -04:00
Alan Azar
a30e58677d Translated using Weblate (Italian)
Currently translated at 38.7% (105 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2022-08-07 13:22:29 -04:00
mcarlton00
11d1898dc2 Merge pull request #202 from jellyfin/dependabot/github_actions/appleboy/ssh-action-0.1.5
Bump appleboy/ssh-action from 0.1.4 to 0.1.5
2022-08-06 19:51:32 -04:00
Matt
24548a081c Fix user switching 2022-08-06 19:43:16 -04:00
dependabot[bot]
09982b9f60 Bump appleboy/ssh-action from 0.1.4 to 0.1.5
Bumps [appleboy/ssh-action](https://github.com/appleboy/ssh-action) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/appleboy/ssh-action/releases)
- [Commits](https://github.com/appleboy/ssh-action/compare/v0.1.4...v0.1.5)

---
updated-dependencies:
- dependency-name: appleboy/ssh-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 16:16:10 +00:00
mcarlton00
b56036b71e Merge pull request #200 from mcarlton00/cached-users
Don't error when switching to a cached user
2022-07-26 20:48:31 -04:00
Matt
52fe89170f Don't error when switching to a cached user 2022-07-26 20:36:20 -04:00
mcarlton00
474043a569 Merge pull request #199 from aiosk/continue_watching_widget
Add Continue Watching Widget
2022-07-26 20:21:37 -04:00
andry.yosua
7451605dbb fix whitespace 2022-07-26 01:17:24 +07:00
andry.yosua
860c487074 Add Continue Watching Widget
https://github.com/jellyfin/jellycon/issues/19

i'm using https://api.jellyfin.org/#operation/GetResumeItems to get
continue watching list
2022-07-26 01:09:44 +07:00
Matt
b1303413c6 Don't request empty folders from api if setting is disabled 2022-07-24 21:25:29 -04:00
mcarlton00
6ad76560ed Merge pull request #195 from jellyfin/prepare-0.5.5
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.5.5
2022-07-21 22:02:17 -04:00
jellyfin-bot
d6f449930c bump version to 0.5.5 2022-07-22 02:01:11 +00:00
mcarlton00
ebdf501115 Merge pull request #194 from mcarlton00/playback-handles
Ensure a handle is valid before trying to use it to start playback
2022-07-21 21:58:38 -04:00
Matt
34861fb9b9 Ensure a handle is valid before trying to use it to start playback 2022-07-21 21:45:33 -04:00
mcarlton00
2f3fe8ae6b Merge pull request #190 from jellyfin/prepare-0.5.4
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.5.4
2022-07-20 08:57:26 -04:00
jellyfin-bot
4ee91654ea bump version to 0.5.4 2022-07-20 12:56:04 +00:00
mcarlton00
3190658e0c Merge pull request #189 from mcarlton00/fix-playback
Fix sys.argv comparison
2022-07-20 08:36:50 -04:00
Matt
c330523b9e Make playback comments more accurate 2022-07-20 08:22:31 -04:00
Matt
5a5c865135 Fix sys.argv comparison 2022-07-20 08:20:24 -04:00
mcarlton00
f5ae301c97 Merge pull request #187 from jellyfin/prepare-0.5.3
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.5.3
2022-07-19 14:24:50 -04:00
jellyfin-bot
d910441470 bump version to 0.5.3 2022-07-19 18:16:04 +00:00
mcarlton00
b667bf4117 Merge pull request #186 from mcarlton00/emoji-update
CI - remove use_aliases from emoji command
2022-07-19 10:46:57 -04:00
Matt
4d8b4c9d43 CI - remove use_aliases from emoji command 2022-07-19 10:11:29 -04:00
mcarlton00
02c44eef82 Merge pull request #184 from aiosk/fix_sdh_subtitle_not_displayed
Fix forced and sdh/cc subtitle not working
2022-07-18 15:40:03 -04:00
andry.yosua
c21d10d7f9 fix couple minor style things 2022-07-18 14:52:22 +07:00
andry.yosua
d2d14e4c19 fix couple minor style things 2022-07-18 14:47:21 +07:00
andry.yosua
1da8bca9d1 remove unique id hi to identify sdh/cc 2022-07-12 14:29:14 +07:00
andry.yosua
dffbfd8860 add no language fallback 2022-07-12 06:41:19 +07:00
andry.yosua
7247c51b10 fix cannot choose sdh/cc/hi subtitle
condition:
I have multiple subtitle
- movie_name.en.srt
- movie_name.en.sdh.srt

expected:
I can play movie with sdh subtitle, either by choosing subtitle
before play movies, or while playing movies

result:
I cannot play movie with sdh subtitle

This happen because downloaded subtitle file only has language id in
it's name. It doesn't have unique identifier such as sdh/cc/hi. This fix
add sdh/cc/hi id to the downloaded subtitle.

This fix doesn't handle transcode procedure.
2022-07-12 04:58:09 +07:00
andry.yosua
2517e30f55 fix cannot choose forced subtitle
condition:
I have multiple subtitle
- movie_name.en.srt
- movie_name.en.forced.srt
- movie_name.id.srt

expected:
I can play movie with forced subtitle, either by choosing subtitle
before play movies, or while playing movies

result:
I cannot play movie with forced subtitle

This happen because downloaded subtitle file only has language id in
it's name. It doesn't have unique identifier such as forced. This fix
add forced id to the downloaded subtitle.

This fix doesn't handle transcode procedure.
2022-07-12 04:43:18 +07:00
mcarlton00
caa0e47399 Merge pull request #183 from mcarlton00/json-decoding
Manually decode json responses
2022-07-10 19:28:52 -04:00
mcarlton00
8ce6ec49e1 Merge pull request #182 from mcarlton00/py3-profile
Fix performance profiling
2022-07-08 21:48:00 -04:00
Matt
276b18650c Don't use requests.json() if we can help it 2022-07-08 21:44:58 -04:00
Matt
a69a8a269f Fix profiling for py3 2022-07-08 21:22:20 -04:00
Fedir Smilianets
921628b2a1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (271 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2022-07-07 13:22:18 -04:00
Fedir Smilianets
53225b427c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (271 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2022-07-06 09:22:18 -04:00
Thomas Schwery
6aad1eb92d Translated using Weblate (French)
Currently translated at 84.1% (228 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2022-07-06 09:22:17 -04:00
Patarimi
d4bccb9b05 Translated using Weblate (French)
Currently translated at 84.1% (228 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2022-07-06 09:22:17 -04:00
Joaquín Díaz
02e9886e2e Translated using Weblate (Spanish)
Currently translated at 100.0% (271 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2022-07-06 09:22:17 -04:00
Marcin Woliński
a05363d202 Translated using Weblate (Polish)
Currently translated at 100.0% (271 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2022-06-28 09:22:15 -04:00
Michele Fattoruso
78fd1e206b Translated using Weblate (Italian)
Currently translated at 38.7% (105 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2022-06-28 09:22:15 -04:00
mcarlton00
74951b9dec Merge pull request #178 from jellyfin/dependabot/github_actions/actions/setup-python-4
Bump actions/setup-python from 3 to 4
2022-06-24 15:22:19 -04:00
mcarlton00
5ac21ea240 Merge pull request #179 from mcarlton00/info-play
Allow playback from Info menu
2022-06-24 15:21:53 -04:00
Matt
086e92da4b use setResolvedUrl for playing single items where possible 2022-06-23 20:14:53 -04:00
wolong gl
e54c4c1bec Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (271 of 271 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2022-06-20 12:22:12 -04:00
dependabot[bot]
5bb20e482f Bump actions/setup-python from 3 to 4
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-20 16:16:28 +00:00
mcarlton00
569462f755 Merge pull request #177 from jellyfin/prepare-0.5.2
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.5.2
2022-06-20 09:32:07 -04:00
jellyfin-bot
658050548c bump version to 0.5.2 2022-06-20 13:25:17 +00:00
mcarlton00
4d635f6eb4 Merge pull request #176 from mcarlton00/external-subs-10.8
Download all external subs when playback starts
2022-06-20 09:24:14 -04:00
mcarlton00
a0b1e9177b Merge branch 'master' into external-subs-10.8 2022-06-19 16:01:12 -04:00
Matt
7a1a7843e6 Download all external subs when playback starts 2022-06-19 15:55:46 -04:00
28 changed files with 2120 additions and 112 deletions

View File

@@ -23,7 +23,7 @@ class SectionType(TypedDict):
def reformat(item_format: str, output_emoji: bool) -> None:
data = [
emojize(x.strip(), use_aliases=True, variant="emoji_type")
emojize(x.strip(), variant="emoji_type")
for x in sys.stdin.readlines()
if x.strip()
]

View File

@@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@v3
- name: Set up Python 3.x
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: 3.9

View File

@@ -30,7 +30,7 @@ jobs:
queries: +security-and-quality
- name: Set up Python
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version }}

View File

@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v3
- name: Set up Python 3.x
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: 3.9
@@ -53,7 +53,7 @@ jobs:
remote_key: ${{ secrets.DEPLOY_KEY }}
- name: Add to Kodi repo and clean up
uses: appleboy/ssh-action@v0.1.4
uses: appleboy/ssh-action@v0.1.5
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}

View File

@@ -23,7 +23,7 @@ jobs:
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.py_version }}
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py_version }}

View File

@@ -1,16 +1,8 @@
version: '0.5.1'
version: '0.5.7'
changelog: |-
New features and improvements
-----------------------------
+ Add context menu play options for music (#173) @mcarlton00
Bug Fixes
---------
+ Do all date comparisons in UTC (#172) @mcarlton00
Documentation updates
---------------------
+ Update README.md (#170) @nitschis
+ Apply watched status to the correct user (#210) @mcarlton00
dependencies:
py2:
- addon: 'xbmc.python'

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-09 21:22+0000\n"
"PO-Revision-Date: 2022-08-25 20:11+0000\n"
"Last-Translator: DJSweder <djsweder@gmail.com>\n"
"Language-Team: Czech <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/cs/>\n"
@@ -9,7 +9,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.10.1\n"
"X-Generator: Weblate 4.13.1\n"
msgctxt "#30016"
msgid "Device display name"
@@ -58,3 +58,43 @@ msgstr "Port"
msgctxt "#30000"
msgid "Host"
msgstr "Hostitel"
msgctxt "#30027"
msgid "Enable debug logging"
msgstr "Povolit protokolování ladění"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "Akce pro výběr položky widgetu"
msgctxt "#30025"
msgid "Password:"
msgstr "Heslo:"
msgctxt "#30024"
msgid "Username:"
msgstr "Uživatelské jméno:"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "Schovat podrobnosti nezhlédnutých epizod"
msgctxt "#30022"
msgid "Advanced"
msgstr "Pokročilé"
msgctxt "#30021"
msgid "Show all episodes item"
msgstr "Zobrazit všechny epizody"
msgctxt "#30019"
msgid "Filtered episode name format"
msgstr "Formát názvu filtrované epizody"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
msgstr "Počet položek k zobrazení ve filtrovaném seznamu"
msgctxt "#30017"
msgid "Show connected clients"
msgstr "Zobrazit připojené klienty"

View File

@@ -1099,3 +1099,8 @@ msgstr "Quick Connect"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Login using Quick Connect"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Continue Watching"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-08 04:22+0000\n"
"PO-Revision-Date: 2022-08-10 20:22+0000\n"
"Last-Translator: WWWesten <wwwesten@gmail.com>\n"
"Language-Team: Esperanto <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/eo/>\n"
@@ -1097,3 +1097,7 @@ msgstr "Rapida Konekto"
msgctxt "#30323"
msgid "Artists"
msgstr "Artistoj"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Daŭrigi Spektadon"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-05-17 04:13+0000\n"
"Last-Translator: José Albano <josealbano@disroot.org>\n"
"PO-Revision-Date: 2022-08-15 12:40+0000\n"
"Last-Translator: Francisco Álamo García <fran.minecraft.mta@gmail.com>\n"
"Language-Team: Spanish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/es/>\n"
"Language: es\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 4.13.1\n"
msgctxt "#30442"
msgid "Simple new content check"
@@ -1080,7 +1080,7 @@ msgstr "Frecuencia de registro de datos"
msgctxt "#30000"
msgid "Host"
msgstr "Host"
msgstr "Anfitrión"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
@@ -1089,3 +1089,19 @@ msgstr "Detectada solicitud adicional a reanudar"
msgctxt "#30260"
msgid "BoxSets"
msgstr "Colecciones"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Inicia sesión usando Conexión Rápida"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Conexión rápida"
msgctxt "#30323"
msgid "Artists"
msgstr "Artistas"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Continuar viendo"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-12 12:22+0000\n"
"PO-Revision-Date: 2022-08-09 05:22+0000\n"
"Last-Translator: Oskari Lavinto <olavinto@protonmail.com>\n"
"Language-Team: Finnish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/fi/>\n"
@@ -1099,3 +1099,7 @@ msgstr "Pikayhdistys"
msgctxt "#30323"
msgid "Artists"
msgstr "Esittäjät"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Jatka katselua"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-05-20 04:22+0000\n"
"Last-Translator: MoFanFr <hennebelle.benoit@gmail.com>\n"
"PO-Revision-Date: 2022-08-10 20:22+0000\n"
"Last-Translator: Thomas Schwery <thomas@inf3.ch>\n"
"Language-Team: French <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/fr/>\n"
"Language: fr\n"
@@ -169,10 +169,9 @@ msgctxt "#30210"
msgid "HTTP direct stream"
msgstr "Stream direct HTTP"
#, fuzzy
msgctxt "#30208"
msgid "Max stream bitrate (Kbits)"
msgstr "Bitrate maximum du flux (Kbps)"
msgstr "Débit maximum du flux (Kbps)"
msgctxt "#30207"
msgid "Playback"
@@ -734,17 +733,14 @@ msgctxt "#30349"
msgid " - Recently Played"
msgstr "- Lus récemment"
#, fuzzy
msgctxt "#30347"
msgid "Getting Existing Images"
msgstr "Récupération des images existantes"
#, fuzzy
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "Suppression des images en cache"
#, fuzzy
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Garder les requêtes de données serveur de Jellyfin en cache"
@@ -761,7 +757,6 @@ msgctxt "#30322"
msgid "Auto resume"
msgstr "Reprise automatique"
#, fuzzy
msgctxt "#30314"
msgid "Play"
msgstr "Lecture"
@@ -899,31 +894,93 @@ msgctxt "#30126"
msgid "Processing Item : "
msgstr "Traitement de l'élément :"
#, fuzzy
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "Chargement de la liste des images existantes"
#, fuzzy
msgctxt "#30354"
msgid "Go To Series"
msgstr "Voir les Séries"
msgstr "Voir les Séries"
#, fuzzy
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "Musique - Tous les Albums par Artistes"
msgstr "Musique - Tous les Artistes d'album"
#, fuzzy
msgctxt "#30343"
msgid "Changes Require Kodi Restart"
msgstr "Les modifications nécessite le redémarrage de Kodi"
msgstr "Les modifications nécessitent le redémarrage de Kodi"
#, fuzzy
msgctxt "#30341"
msgid "Background image update interval (0 = disabled)"
msgstr "Intervalle de mise à jours des imades en arrière plan (0=désactivé)"
msgstr "Intervalle de mise à jour des images en arrière plan (0=désactivé)"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "Mise en cache des illustrations en arrière plan"
msgctxt "#30366"
msgid "Manually enter user details"
msgstr "Renseigner manuellement les détails utilisateurs"
msgctxt "#30359"
msgid "Building full image list"
msgstr "Construction de la liste complète des images"
msgctxt "#30358"
msgid "Retreiving remote image list"
msgstr "Récupération de la liste des images distantes"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "Traitement de la liste des images existantes"
#, fuzzy
msgctxt "#30355"
msgid "Kodi Settings->Services->Allow remote control via HTTP"
msgstr "Paramètres de Kodi->Services->Autoriser le contrôle à distance par HTTP"
#, fuzzy
msgctxt "#30348"
msgid "Add user ratings"
msgstr "Ajouter une note"
msgctxt "#30323"
msgid "Artists"
msgstr "Artistes"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "Fichiers du cache supprimés"
#, fuzzy
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Vider le cache des résultats"
msgctxt "#30388"
msgid "Server details"
msgstr "Détails du serveur"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Images inutilisées supprimées :"
msgctxt "#30371"
msgid "Could not connect to the URL you entered, do you want to try again?"
msgstr ""
"Impossible de se connecter à l'adresse saisie, voulez-vous essayer à nouveau "
"?"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
msgstr "Voulez-vous saisir manuellement une adresse de serveur ?"
#, fuzzy
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "Voulez-vous effacer votre mot de passe sauvé ?"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "Effacer le mot de passe ?"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-08 04:22+0000\n"
"PO-Revision-Date: 2022-08-09 05:22+0000\n"
"Last-Translator: Csaba <csab0825@gmail.com>\n"
"Language-Team: Hungarian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/hu/>\n"
@@ -1099,3 +1099,7 @@ msgstr "Gyors Csatlakozás"
msgctxt "#30323"
msgid "Artists"
msgstr "Művészek"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Megtekintés folytatása"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-05-20 04:22+0000\n"
"Last-Translator: liimee <git.taaa@fedora.email>\n"
"PO-Revision-Date: 2022-08-15 12:40+0000\n"
"Last-Translator: Arief Hidayat <kekesed97@gmail.com>\n"
"Language-Team: Indonesian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/id/>\n"
"Language: id\n"
@@ -9,7 +9,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.10.1\n"
"X-Generator: Weblate 4.13.1\n"
msgctxt "#30414"
msgid " - Favorites"
@@ -482,3 +482,622 @@ msgstr "Kata sandi"
msgctxt "#30005"
msgid "Username"
msgstr "Nama pengguna"
msgctxt "#30315"
msgid "Suppress notifications for connection errors"
msgstr "Menekan notifikasi untuk kesalahan koneksi"
msgctxt "#30016"
msgid "Device display name"
msgstr "Nama tampilan perangkat"
msgctxt "#30015"
msgid "Log timing data"
msgstr "Catat data waktu"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Lanjutkan Tonton"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Login dengan Koneksi Cepat"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Koneksi Cepat"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Cek konten baru sederhana"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Gunakan data widget yang di-cache"
msgctxt "#30439"
msgid "Show play next episode at time left"
msgstr "Tampilkan putar episode pada waktu tersisa"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "Mainkan intro sinema"
msgctxt "#30437"
msgid "Playback options"
msgstr "Opsi pemutaran"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Besar data untuk uji kecepatan (MB)"
msgctxt "#30435"
msgid "Connection speed test"
msgstr "Uji kecepatan koneksi"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Memaksa kecepatan bit aliran transkode (Kbps)"
msgctxt "#30433"
msgid "Allow direct file playback"
msgstr "Izinkan pemutaran berkas langsung"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Sembunyikan item yang telah ditonton dari daftar"
msgctxt "#30429"
msgid "Genre"
msgstr "Genre"
msgctxt "#30428"
msgid "Rating"
msgstr "Penilaian"
msgctxt "#30424"
msgid "Default"
msgstr "Default"
msgctxt "#30423"
msgid "NotSet"
msgstr "Belum Diatur"
msgctxt "#30422"
msgid "Sorting"
msgstr "Urutkan"
msgctxt "#30421"
msgid "Views"
msgstr "Tampilan"
msgctxt "#30420"
msgid "Audio max channels"
msgstr "Channel maks. Audio"
msgctxt "#30419"
msgid "Audio codec"
msgstr "Kodek Audio"
msgctxt "#30418"
msgid "Audio bitrate (Kbits)"
msgstr "Bitrate Audio (Kbps)"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "Detik HTTP timeout"
msgctxt "#30415"
msgid " - Favorite Collections"
msgstr "- Koleksi Favorit"
msgctxt "#30413"
msgid " - Tags"
msgstr "- Tag"
msgctxt "#30412"
msgid " - Decades"
msgstr "- Dekade"
msgctxt "#30411"
msgid " - Years"
msgstr "- Tahun"
msgctxt "#30410"
msgid " - Collections"
msgstr "- Koleksi"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "Aksi Add-on"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "Widget Kustom"
msgctxt "#30407"
msgid "Global Lists"
msgstr "Daftar Global"
msgctxt "#30406"
msgid "Jellyfin Libraries"
msgstr "Pustaka Jellyfin"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Interval cache gambar dalam menit (0 = dimatikan)"
msgctxt "#30397"
msgid " - Pages"
msgstr "- Halaman"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "Hapus server data yang di-cache"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "File cache dihapus"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Hapus Hasil Cache"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Gambar yang tidak digunakan dihapus:"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "Gambar Jellyfin yang tidak digunakan:"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "Gambar yang ada sebelum dihapus:"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Menit interval film acak (0 = dinonaktifkan)"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Perintah subtitle eksternal"
msgctxt "#30378"
msgid "Persist user details"
msgstr "Pertahankan detail pengguna"
msgctxt "#30375"
msgid "Receiving data packet"
msgstr "Menerima paket data"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
msgstr "Apakah Anda ingin untuk memasukkan url server secara manual?"
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "Apakah Anda ingin untuk menghapus kata sandi tersimpan?"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "Kosongkan Kata Sandi?"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Izinkan untuk menyimpan kata sandi dari pengguna yang telah beralih"
msgctxt "#30366"
msgid "Manually enter user details"
msgstr "Masukkan detail pengguna secara manual"
msgctxt "#30365"
msgid "Manual Login"
msgstr "Login Manual"
msgctxt "#30359"
msgid "Building full image list"
msgstr "Membangun daftar gambar penuh"
msgctxt "#30358"
msgid "Retreiving remote image list"
msgstr "Menerima daftar gambar jarak jauh"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "Memproses gambar yang telah ada"
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "Muat gambar yang telah ada"
msgctxt "#30355"
msgid "Kodi Settings->Services->Allow remote control via HTTP"
msgstr "Pengaturan Kodi->Layanan->Izinkan kendali jarak jauh HTTP"
msgctxt "#30354"
msgid "Go To Series"
msgstr "Pergi ke Seri"
msgctxt "#30321"
msgid " - Album Artists"
msgstr "- Artis Album"
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "Musik - Semua Artis Album"
msgctxt "#30351"
msgid "Music - Recently Played"
msgstr "Musik - Baru-baru ini diputar"
msgctxt "#30349"
msgid " - Recently Played"
msgstr "- Baru-baru ini diputar"
msgctxt "#30348"
msgid "Add user ratings"
msgstr "Tambahkan rating pengguna"
msgctxt "#30347"
msgid "Getting Existing Images"
msgstr "Mengambil gambar yang telah ada"
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "Menghapus Gambar yang di-cache"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Cache permintaan server data Jellyfin"
msgctxt "#30344"
msgid "Number of images removed from cache"
msgstr "Jumlah gambar yang dihapus dari cache"
msgctxt "#30343"
msgid "Changes Require Kodi Restart"
msgstr "Perubahan Memerlukan Pemuatan Ulang Kodi"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "Interval pemeriksaan konten baru (0 = dimatikan)"
msgctxt "#30340"
msgid "Group movies into collections"
msgstr "Gabungkan film ke dalam koleksi"
msgctxt "#30334"
msgid "Use JellyCon context menu"
msgstr "Gunakan konteks menu JellyCon"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "Cache karya seni di latar belakang"
msgctxt "#30332"
msgid "Stop media playback on screensaver activation"
msgstr "Hentikan pemutaran media ketika screensaver aktif"
msgctxt "#30328"
msgid "Show empty folders (shows, seasons, collections)"
msgstr "Tampilkan folder kosong (acara, musim, koleksi)"
msgctxt "#30330"
msgid "Show change user dialog"
msgstr "Tampilkan dialog pergantian pengguna"
msgctxt "#30329"
msgid "Screensaver"
msgstr "Screensaver"
msgctxt "#30327"
msgid "Go To Season"
msgstr "Pergi ke Musim"
msgctxt "#30325"
msgid " - Genres"
msgstr "- Genre"
msgctxt "#30323"
msgid "Artists"
msgstr "Artis"
msgctxt "#30322"
msgid "Auto resume"
msgstr "Lanjutkan otomatis"
msgctxt "#30316"
msgid "Connection Error"
msgstr "Kesalahan Koneksi"
msgctxt "#30311"
msgid "Library - "
msgstr "Pustaka -"
msgctxt "#30310"
msgid "Enable Jellyfin remote control"
msgstr "Nyalakan kendali jarak jauh Jellyfin"
msgctxt "#30308"
msgid "Select Trailer"
msgstr "Pilih Trailer"
msgctxt "#30307"
msgid "Play Trailer"
msgstr "Mulai Trailer"
msgctxt "#30304"
msgid "Cached Jellyfin images : "
msgstr "Gambar Jellyfin yang di-cache:"
msgctxt "#30303"
msgid "Missing Jellyfin images : "
msgstr "Gambar Jellyfin yang hilang:"
msgctxt "#30302"
msgid "Existing images : "
msgstr "Gambar yang Ada:"
msgctxt "#30301"
msgid "Caching Images"
msgstr "Sedang Caching Gambar"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
msgstr "Cache semua gambar Jellyfin sebagai gambar Kodi lokal?"
msgctxt "#30299"
msgid "Cache Images"
msgstr "Gambar Cache"
msgctxt "#30298"
msgid "Deleting Kodi Images"
msgstr "Menghapus Gambar Kodi"
msgctxt "#30295"
msgid "To use this feature you need HTTP control enabled"
msgstr "Anda perlu menyalakan kontrol HTTP untuk menggunakan fitur ini"
msgctxt "#30294"
msgid "Notice"
msgstr "Peringatan"
msgctxt "#30293"
msgid "Cache images"
msgstr "Gambar Cache"
msgctxt "#30292"
msgid "Select Subtitle Stream"
msgstr "Pilih Stream Subtitle"
msgctxt "#30291"
msgid "Select Audio Stream"
msgstr "Pilih Audio Stream"
msgctxt "#30289"
msgid "TV Shows - Genres"
msgstr "Acara TV - Genre"
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "Segarkan Gambar yang Di-cache"
msgctxt "#30280"
msgid "Missing Title"
msgstr "Judul yang Hilang"
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?"
msgstr ""
"JellyCon perlu meminta resume pada item yang dimainkan sebagian, Kodi juga "
"dapat meminta, ini dapat menyebabkan prompt ganda. Apakah Anda ingin "
"menghapus perintah ganda?"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Prompt Resume Ekstra Terdeteksi"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "Paksa Transkode"
msgctxt "#30273"
msgid "Unset Favourite"
msgstr "Hapus Favorit"
msgctxt "#30272"
msgid "Set Favourite"
msgstr "Atur Favorit"
msgctxt "#30267"
msgid " - In Progress"
msgstr "- Sedang Ditonton"
msgctxt "#30266"
msgid "Movies - Pages"
msgstr "Film - Halaman"
msgctxt "#30264"
msgid "Episodes - In Progress"
msgstr "Episode - Sedang Ditonton"
msgctxt "#30260"
msgid "BoxSets"
msgstr "Set Kotak"
msgctxt "#30258"
msgid "Movies - In Progress"
msgstr "Film - Sedang ditonton"
msgctxt "#30251"
msgid "Movies - Genres"
msgstr "Film - Genre"
msgctxt "#30250"
msgid "Unknown"
msgstr "Tidak diketahui"
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "Konten Widget Kustom"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "Paksa transkode mpeg4"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "Paksa transkode msmmpeg4v3 (divx)"
msgctxt "#30239"
msgid "Force transcode mpeg2"
msgstr "Paksa transkode mpeg2"
msgctxt "#30238"
msgid "Playback stream options"
msgstr "Opsi stream pemutaran"
msgctxt "#30236"
msgid "Force transcode h265 (hevc)"
msgstr "Paksa transkode h265 (hevc)"
msgctxt "#30223"
msgid "Page Size and Filtering"
msgstr "Ukuran Halaman dan Filter"
msgctxt "#30220"
msgid "Prompt to delete movie after %"
msgstr "Tanyakan untuk menghapus film setelah %"
msgctxt "#30219"
msgid " - Prompt before play"
msgstr "- Tanyakan sebelum memutar"
msgctxt "#30218"
msgid "Play next episode after %"
msgstr "Putar episode selanjutnya setelah %"
msgctxt "#30217"
msgid "Prompt to delete episode after %"
msgstr "Tanyakan untuk menghapus episode setelah %"
msgctxt "#30215"
msgid "On playback stop (100% = disabled)"
msgstr "Henti ketika menonton (100% = dimatikan)"
msgctxt "#30214"
msgid "Events"
msgstr "Acara"
msgctxt "#30213"
msgid "Video force 8 bit"
msgstr "Paksa video 8 bit"
msgctxt "#30212"
msgid "Video max width"
msgstr "Lebar maks. video"
msgctxt "#30211"
msgid "Transcode options"
msgstr "Opsi transkode"
msgctxt "#30210"
msgid "HTTP direct stream"
msgstr "Stream HTTP langsung"
msgctxt "#30209"
msgid "File direct path"
msgstr "Jalur file langsung"
msgctxt "#30208"
msgid "Max stream bitrate (Kbits)"
msgstr "Maks. stream bitrate (Kbps)"
msgctxt "#30183"
msgid "Include people"
msgstr "Termasuk oran"
msgctxt "#30182"
msgid "Include media stream info"
msgstr "Termasuk info stream media"
msgctxt "#30181"
msgid "Include plot"
msgstr "Termasuk plot"
msgctxt "#30139"
msgid "No Media Type Set"
msgstr "Tidak ada tipe media yang ditetapkan"
msgctxt "#30125"
msgid "Done"
msgstr "Selesai"
msgctxt "#30121"
msgid "On resume"
msgstr "Sedang diteruskan"
msgctxt "#30120"
msgid "Show load progress"
msgstr "Tampilkan progres muat"
msgctxt "#30118"
msgid "Add resume percent to names"
msgstr "Tambahkan persen resume ke nama"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "Tambahkan jumlah yang belum ditonton ke nama"
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "Kembali beberapa detik"
msgctxt "#30112"
msgid "Loading Content"
msgstr "Memuat konten"
msgctxt "#30063"
msgid "N/A"
msgstr "Tidak ada"
msgctxt "#30053"
msgid "Waiting for server to delete"
msgstr "Menunggu server untuk menghapus"
msgctxt "#30027"
msgid "Enable debug logging"
msgstr "Nyalakan debug logging"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "Aksi ketika item widget terpilih"
msgctxt "#30020"
msgid "Flatten single season"
msgstr "Ratakan musim tunggal"
msgctxt "#30019"
msgid "Filtered episode name format"
msgstr "Format penamaan episode terfilter"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
msgstr "Jumlah item yang ditunjukkan di daftar terfilter"
msgctxt "#30012"
msgid "[Change user]"
msgstr "[Ganti pengguna]"
msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[Deteksi server lokal]"
msgctxt "#30010"
msgid "Number of performance profiles to capture"
msgstr "Jumlah profil performa"
msgctxt "#30000"
msgid "Host"
msgstr "Host"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2021-12-02 18:05+0000\n"
"Last-Translator: Alfonso Scarpino <alfonso.scarpino@gmail.com>\n"
"PO-Revision-Date: 2022-08-17 22:11+0000\n"
"Last-Translator: momphucker <weblate@mailbox.enricomarogna.com>\n"
"Language-Team: Italian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/it/>\n"
"Language: it\n"
@@ -9,11 +9,11 @@ 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.5.2\n"
"X-Generator: Weblate 4.13.1\n"
msgctxt "#30120"
msgid "Show load progress"
msgstr "Mostra avanzamento del caricamento"
msgstr "Mostra progressione del caricamento"
msgctxt "#30118"
msgid "Add resume percent to names"
@@ -97,7 +97,7 @@ msgstr "Avanzate"
msgctxt "#30021"
msgid "Show all episodes item"
msgstr "Mostra elemento tutti gli episodi"
msgstr "Mostra tutti gli episodi"
msgctxt "#30020"
msgid "Flatten single season"
@@ -426,3 +426,58 @@ msgstr "Percorso diretto del file"
msgctxt "#30208"
msgid "Max stream bitrate (Kbits)"
msgstr "Bitrate massimo del flusso (Kbits)"
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?"
msgstr ""
"JellyCon richiede una finestra per continuare la riproduzione di elementi, "
"anche Kodi può richiedere una finestra, causando lapertura di una doppia "
"finestra. Vuoi rimuovere la doppia finestra?"
msgctxt "#30213"
msgid "Video force 8 bit"
msgstr "Forza video 8 bit"
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "Riavvolgi secondi"
msgctxt "#30331"
msgid "Movies per page"
msgstr "Film per pagina"
msgctxt "#30329"
msgid "Screensaver"
msgstr "Salvaschermo"
msgctxt "#30337"
msgid "Song"
msgstr "Canzone"
msgctxt "#30327"
msgid "Go To Season"
msgstr "Vai Alla Stagione"
msgctxt "#30325"
msgid " - Genres"
msgstr "- Generi"
msgctxt "#30323"
msgid "Artists"
msgstr "Artisti"
msgctxt "#30311"
msgid "Library - "
msgstr "Libreria -"
msgctxt "#30296"
msgid "Delete"
msgstr "Elimina"
msgctxt "#30288"
msgid " - Latest"
msgstr "- Ultimo"
msgctxt "#30280"
msgid "Missing Title"
msgstr "Titolo Mancante"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-08 04:22+0000\n"
"PO-Revision-Date: 2022-08-10 20:22+0000\n"
"Last-Translator: WWWesten <wwwesten@gmail.com>\n"
"Language-Team: Kazakh <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/kk/>\n"
@@ -1101,3 +1101,7 @@ msgstr "Jyldam qosylu"
msgctxt "#30323"
msgid "Artists"
msgstr "Oryndauşylar"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Qaraudy jalğastyru"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2021-12-13 17:05+0000\n"
"PO-Revision-Date: 2022-06-28 13:22+0000\n"
"Last-Translator: Marcin Woliński <cierdek@gmail.com>\n"
"Language-Team: Polish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/pl/>\n"
@@ -10,7 +10,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.5.2\n"
"X-Generator: Weblate 4.10.1\n"
msgctxt "#30313"
msgid "Menu"
@@ -1089,3 +1089,15 @@ msgstr "Odtwórz kinowe intro"
msgctxt "#30437"
msgid "Playback options"
msgstr "Opcje odtwarzania"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Zaloguj używając Szybkiego Połączenia"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Szybkie połączenie"
msgctxt "#30323"
msgid "Artists"
msgstr "Artyści"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-06-08 04:22+0000\n"
"PO-Revision-Date: 2022-08-10 20:22+0000\n"
"Last-Translator: WWWesten <wwwesten@gmail.com>\n"
"Language-Team: Russian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/ru/>\n"
@@ -1098,3 +1098,7 @@ msgstr "Быстрое подключение"
msgctxt "#30323"
msgid "Artists"
msgstr "Исполнители"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Продолжение просмотра"

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-03-04 12:13+0000\n"
"Last-Translator: 小造xu_zh <ngc7331@outlook.com>\n"
"PO-Revision-Date: 2022-06-20 16:22+0000\n"
"Last-Translator: wolong gl <wolong98@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.jellyfin.org/projects/"
"jellycon/jellycon/zh_Hans/>\n"
"Language: zh_Hans\n"
@@ -1082,3 +1082,15 @@ msgstr "端口"
msgctxt "#30000"
msgid "Host"
msgstr "主机"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "使用 Quick Connect 登录"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Quick Connect"
msgctxt "#30323"
msgid "Artists"
msgstr "艺术家"

View File

@@ -327,6 +327,8 @@ def process_directory(url, progress, params, use_cache_data=False):
'?userId={}'.format(user_id) +
'&Fields={}'.format(default_filters) +
'&format=json')
if not show_empty_folders:
u = u + '&isMissing=False'
elif item_details.item_type == "Season":
u = ('/Shows/' + item_details.series_id +

View File

@@ -153,14 +153,14 @@ def main_entry_point():
file_time_stamp = time.strftime("%Y%m%d-%H%M%S")
tab_file_name = __addondir__ + "profile(" + file_time_stamp + ").txt"
s = StringIO.StringIO()
s = StringIO()
ps = pstats.Stats(pr, stream=s)
ps = ps.sort_stats('cumulative')
ps.print_stats()
ps.strip_dirs()
ps = ps.sort_stats('tottime')
ps.print_stats()
with open(tab_file_name, 'wb') as f:
with open(tab_file_name, 'w') as f:
f.write(s.getvalue())
log.debug("===== JellyCon FINISHED =====")

View File

@@ -4,6 +4,7 @@ import xbmcaddon
from kodi_six.utils import py2_decode
import requests
import json
from .utils import get_device_id, get_version, load_user_details
from .lazylogger import LazyLogger
@@ -24,8 +25,8 @@ class API:
self.verify_cert = settings.getSetting('verify_cert') == 'true'
def get(self, path):
if 'x-mediabrowser-token' not in self.headers:
self.create_headers()
if 'x-mediabrowser-token' not in self.headers or self.token not in self.headers:
self.create_headers(True)
# Fixes initial login where class is initialized before wizard completes
if not self.server:
@@ -36,33 +37,49 @@ class API:
r = requests.get(url, headers=self.headers, verify=self.verify_cert)
try:
response_data = r.json()
try:
'''
The requests library defaults to using simplejson to handle
json decoding. On low power devices and using Py3, this is
significantly slower than the builtin json library. Skip that
and just parse the json ourselves. Fall back to using
requests/simplejson if there's a parsing error.
'''
response_data = json.loads(r.text)
except ValueError:
response_data = r.json()
except:
response_data = {}
return response_data
def post(self, url, payload={}):
if 'x-mediabrowser-token' not in self.headers:
self.create_headers()
if 'x-mediabrowser-token' not in self.headers or self.token not in self.headers:
self.create_headers(True)
url = '{}{}'.format(self.server, url)
r = requests.post(url, json=payload, headers=self.headers, verify=self.verify_cert)
try:
response_data = r.json()
try:
# Much faster on low power devices, see above comment
response_data = json.loads(r.text)
except ValueError:
response_data = r.json()
except:
response_data = {}
return response_data
def delete(self, url):
if 'x-mediabrowser-token' not in self.headers:
self.create_headers()
if 'x-mediabrowser-token' not in self.headers or self.token not in self.headers:
self.create_headers(True)
url = '{}{}'.format(self.server, url)
requests.delete(url, headers=self.headers, verify=self.verify_cert)
def authenticate(self, auth_data):
# Always force create fresh headers during authentication
self.create_headers(True)
response = self.post('/Users/AuthenticateByName', auth_data)
token = response.get('AccessToken')
if token:
@@ -75,10 +92,10 @@ class API:
log.error('Unable to authenticate to Jellyfin server')
return {}
def create_headers(self):
def create_headers(self, force=False):
# If the headers already exist with an auth token, return
if self.headers and 'x-mediabrowser-token' in self.headers:
# If the headers already exist with an auth token, return unless we're regenerating
if self.headers and 'x-mediabrowser-token' in self.headers and force is False:
return
headers = {}
@@ -101,8 +118,8 @@ class API:
headers['x-emby-authorization'] = authorization
# If we have a valid token, ensure it's included in the headers
if self.token:
# If we have a valid token, ensure it's included in the headers unless we're regenerating
if self.token and force is False:
headers['x-mediabrowser-token'] = self.token
else:
# Check for updated credentials since initialization

View File

@@ -554,6 +554,18 @@ def display_menu(params):
def show_global_types(params):
handle = int(sys.argv[1])
user_id = get_current_user_id()
continue_watching_url_params = {
"Fields": get_default_filters(),
"ImageTypeLimit": 1,
}
continue_watching_url = get_jellyfin_url("/Users/{}/Items/Resume".format(user_id), continue_watching_url_params)
add_menu_directory_item(translate_string(30445),
"plugin://plugin.video.jellycon/?mode=GET_CONTENT&url=" + quote(continue_watching_url) +
"&media_type=movies" +
"&name_format="+quote("Episode|episode_name_format"))
add_menu_directory_item(translate_string(30256),
"plugin://plugin.video.jellycon/?mode=SHOW_ADDON_MENU&type=global_list_movies")
add_menu_directory_item(translate_string(30261),

View File

@@ -5,17 +5,19 @@ import xbmc
import xbmcgui
import xbmcaddon
import xbmcvfs
import xbmcplugin
from datetime import timedelta
import json
import os
import re
from six.moves.urllib.parse import urlencode
import sys
from .jellyfin import api
from .lazylogger import LazyLogger
from .dialogs import ResumeDialog
from .utils import send_event_notification, convert_size, get_device_id, translate_string, load_user_details, translate_path, get_jellyfin_url
from .utils import send_event_notification, convert_size, get_device_id, translate_string, load_user_details, translate_path, get_jellyfin_url, download_external_sub
from .kodi_utils import HomeWindow
from .datamanager import clear_old_cache_data
from .item_functions import extract_item_info, add_gui_item, get_art
@@ -414,7 +416,7 @@ def play_file(play_info):
display_options["addSubtitleAvailable"] = False
display_options["addUserRatings"] = False
gui_item = add_gui_item("", item_details, display_options, False)
gui_item = add_gui_item(item_id, item_details, display_options, False)
list_item = gui_item[1]
if playback_type == "2": # if transcoding then prompt for audio and subtitle
@@ -454,12 +456,20 @@ def play_file(play_info):
if len(intro_items) > 0:
playlist = play_all_files(intro_items, play_items=False)
playlist.add(playurl, list_item)
player.play(playlist)
else:
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
playlist.clear()
playlist.add(playurl, list_item)
player.play(playlist)
if len(sys.argv) > 1 and int(sys.argv[1]) > 0:
# Play from info menu
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, list_item)
else:
'''
Play from remote control or addon menus. Doesn't have a handle,
so need to call player directly
'''
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
playlist.clear()
playlist.add(playurl, list_item)
player.play(playlist)
if seek_time != 0:
player.pause()
@@ -841,26 +851,32 @@ def external_subs(media_source, list_item, item_id):
source_id = media_source['Id']
language = stream.get('Language', '')
if language and stream['IsDefault']:
language = '{}.default'.format(language)
if language and stream['IsForced']:
language = '{}.forced'.format(language)
is_sdh = stream.get('Title') and stream['Title'] in ('sdh', 'cc')
if language and is_sdh:
language = '{}.{}'.format(language, stream['Title'])
codec = stream.get('Codec', '')
url_root = '{}/Videos/{}/{}/Subtitles/{}'.format(server, item_id, source_id, index)
url = '{}{}'.format(server, stream.get('DeliveryUrl'))
if language:
url = '{}/0/Stream.{}.{}?api_key={}'.format(
url_root, language, codec, token)
'''
Starting in 10.8, the server no longer provides language
specific download points. We have to download the file
and name it with the language code ourselves so Kodi
will parse it correctly
'''
subtitle_file = download_external_sub(language, codec, url)
else:
url = '{}/0/Stream.{}?api_key={}'.format(url_root, codec, token)
# If there is no language defined, we can go directly to the server
subtitle_file = url
default = ""
if stream['IsDefault']:
default = "default"
forced = ""
if stream['IsForced']:
forced = "forced"
sub_name = '{} ( {} ) {} {}'.format(language, codec, default, forced)
sub_name = '{} ( {} )'.format(language, codec)
sub_names.append(sub_name)
externalsubs.append(url)
externalsubs.append(subtitle_file)
if len(externalsubs) == 0:
return

View File

@@ -203,6 +203,8 @@ def check_server(force=False, change_user=False, notify=False):
# do we need to change the user
current_username = settings.getSetting('username')
user_details = load_user_details()
home_window = HomeWindow()
home_window.set_property('user_name', current_username)
# if asked or we have no current user then show user selection screen
if something_changed or change_user or len(current_username) == 0 or not user_details:
@@ -228,8 +230,6 @@ def check_server(force=False, change_user=False, notify=False):
secured = selected_user.getProperty("secure") == "true"
manual = selected_user.getProperty("manual") == "true"
home_window = HomeWindow()
# If using a manual login, ask for username
if manual:
kb = xbmc.Keyboard()
@@ -244,26 +244,32 @@ def check_server(force=False, change_user=False, notify=False):
return
home_window.set_property('user_name', selected_user_name)
settings.setSetting('username', selected_user_name)
user_details = load_user_details()
# Ask for password if user has one
password = ''
if secured and not user_details.get('token'):
kb = xbmc.Keyboard()
kb.setHeading(translate_string(30006))
kb.setHiddenInput(True)
kb.doModal()
if kb.isConfirmed():
password = kb.getText()
if not user_details:
# Ask for password if user has one
password = ''
if secured and not user_details.get('token'):
kb = xbmc.Keyboard()
kb.setHeading(translate_string(30006))
kb.setHiddenInput(True)
kb.doModal()
if kb.isConfirmed():
password = kb.getText()
auth_payload = {'username': selected_user_name, 'pw': password}
auth = api.authenticate(auth_payload)
auth_payload = {'username': selected_user_name, 'pw': password}
auth = api.authenticate(auth_payload)
if something_changed:
home_window = HomeWindow()
home_window.clear_property("jellycon_widget_reload")
token = auth.get('AccessToken')
user_id = auth.get('User').get('Id')
if auth:
token = auth.get('AccessToken')
user_id = auth.get('User').get('Id')
else:
token = user_details.get('token')
user_id = user_details.get('user_id')
save_user_details(selected_user_name, user_id, token)
xbmc.executebuiltin("ActivateWindow(Home)")
if "estuary_jellycon" in xbmc.getSkinDir():

View File

@@ -15,6 +15,7 @@ import time
import math
import os
import hashlib
import requests
from datetime import datetime
from dateutil import tz
import re
@@ -142,7 +143,10 @@ def translate_string(string_id):
def get_device_id():
window = HomeWindow()
username = window.get_property('username')
username = window.get_property('user_name')
if not username:
settings = xbmcaddon.Addon()
username = settings.getSetting('username')
client_id = window.get_property("client_id")
hashed_name = hashlib.md5(username.encode()).hexdigest()
@@ -225,6 +229,10 @@ def load_user_details():
return {}
user_data = auth_data.get(user_name, {})
# User doesn't exist yet
if not user_data:
return {}
user_id = user_data.get('user_id')
auth_token = user_data.get('token')
@@ -363,3 +371,18 @@ def translate_path(path):
return xbmcvfs.translatePath(path)
else:
return xbmc.translatePath(path)
def download_external_sub(language, codec, url):
# Download the subtitle file
r = requests.get(url)
r.raise_for_status()
# Write the subtitle file to the local filesystem
file_name = 'Stream.{}.{}'.format(language, codec)
file_path = py2_decode(translate_path('special://temp/{}'.format(file_name)))
with open(file_path, 'wb') as f:
f.write(r.content)
return file_path

View File

@@ -29,7 +29,7 @@ if log_timing_data:
# clear user and token when logging in
home_window = HomeWindow()
home_window.clear_property("userid")
home_window.clear_property("user_name")
home_window.clear_property("AccessToken")
home_window.clear_property("Params")
@@ -99,7 +99,7 @@ if enable_logging:
time=8000,
icon=xbmcgui.NOTIFICATION_WARNING)
prev_user_id = home_window.get_property("userid")
prev_user = home_window.get_property("user_name")
first_run = True
home_window.set_property('exit', 'False')
@@ -118,9 +118,9 @@ while home_window.get_property('exit') == 'False':
if not screen_saver_active:
user_changed = False
if prev_user_id != home_window.get_property("userid"):
if prev_user != home_window.get_property("user_name"):
log.debug("user_change_detected")
prev_user_id = home_window.get_property("userid")
prev_user = home_window.get_property("user_name")
user_changed = True
if user_changed or first_run:
@@ -186,7 +186,7 @@ if context_monitor:
context_monitor.stop_monitor()
# clear user and token when loggin off
home_window.clear_property("userid")
home_window.clear_property("user_name")
home_window.clear_property("AccessToken")
home_window.clear_property("userimage")