281 Commits

Author SHA1 Message Date
mani
782106e44a 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
2026-01-15 00:24:50 +01:00
mani
0e0a8b853f Revert "Fix WebSocket session flapping with ForceKeepAlive protocol"
This reverts commit d5920a381e.
2026-01-14 17:02:55 +01:00
mcarlton00
8c716130a3 Merge pull request #402 from jellyfin/prepare-0.9.1
Prepare for release v0.9.1
2026-01-12 18:04:05 -05:00
jellyfin-bot
dfc9be33d7 bump version to 0.9.1 2026-01-12 23:02:26 +00:00
mcarlton00
9b592cf761 Merge pull request #401 from mcarlton00/websocket-fix
Implement proper keepalives for websocket
2026-01-12 18:01:26 -05:00
mcarlton00
d3122416cf Implement proper keepalives for websocket 2026-01-10 16:37:18 -05:00
mani
a6af9d856b Add SDH indicator to subtitle track display
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
Show "SDH" (Subtitles for Deaf and Hard of Hearing) label in subtitle
selection dialog when track has IsHearingImpaired flag set.
2026-01-06 01:20:33 +01:00
mani
51aaa1f603 Remove remaining problematic module-level addon access
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
- Remove module-level addon variable in kodi_utils.py
- Load addon locally in add_menu_directory_item() where needed
- Load addon locally in SHOW_SETTINGS mode in functions.py
- Keep __addon__ fallback in functions.py for non-critical uses (__addondir__, addon_id, PLUGINPATH) which have safe fallback values
- loghandler.py already has proper exception handling around __pluginpath__ usage
2026-01-06 01:15:50 +01:00
mani
a71efe14c1 Properly fix intermittent installation failures
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
Instead of setting addon variables to None (which causes issues),
fix the root cause by removing unnecessary module-level initialization:

- Remove module-level user_details loading in functions.py
- Load user_details locally in functions where actually needed
- Wrap remaining module-level addon access in try/except in:
  - service.py (log_timing_data)
  - default.py (log_timing_data)
  - kodi_utils.py (addon variable)
  - functions.py (__addon__ and related variables)

This prevents crashes during installation/update while avoiding
None-related issues during normal operation.
2026-01-06 01:12:59 +01:00
mani
1879a8ed01 Fix intermittent installation/update failures
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
Add exception handling for addon and settings initialization during
installation/update when addon may not be fully registered yet:
- Wrap __addon__ and __pluginpath__ initialization in try/except
- Handle settings access failures in LogHandler.__init__()
- Protect formatException() and _gen_rel_path() from missing __pluginpath__
2026-01-06 01:07:20 +01:00
mani
7d6ee45263 Fix installation failure when Kodi logging is disabled
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
Add exception handling in LogHandler.emit() to prevent crashes
when xbmc.log() fails due to globally disabled logging in Kodi.
2026-01-06 01:03:53 +01:00
mani
44ad891242 Change cache defaults to disabled
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
- Set disable_disk_cache to true by default (RAM only mode)
- Set use_cache to false by default (disable cache requests)
2026-01-06 01:01:22 +01:00
mani
a94575f83c Add audio track title to stream selection display
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
Display track title in audio stream selection dialog when available.
Format: "index - language - codec layout - title"
2026-01-06 00:58:58 +01:00
mani
1c75b09824 Fix context menu implementation for track selection
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
- Remove incorrect addContextMenuItems() from item_functions.py as JellyCon uses custom context menu system
- Add "Play with track selection" entry to JellyCon's ActionMenu in show_menu() for Movies and Episodes
- Add handler for play_with_track_selection action that sets force_track_selection parameter
2026-01-06 00:55:13 +01:00
mani
ebd59760ae Fix context menu import causing movies not to load
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
- Fix incorrect import: change 'from . import translation' to
  'from .utils import translate_string'
- Add try/except block to prevent context menu errors from breaking playback
- Add defensive check for item_details.id existence
- Add error logging for debugging context menu issues

This fixes the critical bug where the movie menu would not load
due to the incorrect translation import.
2026-01-06 00:46:21 +01:00
mani
3184fa6f89 Replace subtitle codec boolean with dropdown preference
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
- Replace prefer_srt_over_pgs boolean with subtitle_codec_preference dropdown
  Options: 0=Prefer PGS (default), 1=Prefer SRT, 2=No preference

- More intuitive UI with descriptive labels:
  - PGS bevorzugt (bessere Qualität beim Brennen)
  - SRT bevorzugt (flexibel, kann gestreamt werden)
  - Keine Präferenz

- Update scoring logic to handle three states instead of two
- Clarify that only_forced filter applies only during auto-selection
  Manual selection via dialog still shows all subtitles
2026-01-06 00:36:25 +01:00
mani
32f2b12708 Change subtitle preferences to prefer forced-only and PGS
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
- Change prefer_srt_over_pgs default from true to false
  PGS has better quality when burned in during transcoding

- Add only_forced_subtitles setting (default: true)
  When enabled, only forced subtitles are selected
  Regular subtitles are skipped even if they match the language

- Skip non-forced subtitles in auto-selection when only_forced is enabled
  Prevents selecting regular German subs when watching German content
  Only shows forced subs for foreign language parts

This is useful for native language content where only foreign
language parts need subtitles (forced), not the entire movie.
2026-01-06 00:34:19 +01:00
mani
b9a6b5056a Add language-based track selection and context menu
Context Menu Integration:
- Add 'Play with track selection' option to video context menus
- Available for movies and episodes via long-press/context menu
- Forces manual track selection dialog even when auto-selection is configured

Language Selection Improvements:
- Add dropdown selectors for preferred audio/subtitle languages
- Support German, English, French, Spanish, Italian, Japanese, Russian
- Add comprehensive language matching (e.g., 'ger' matches 'deu', 'deutsch', 'german')
- Add setting to auto-select 'No subtitles' when no matching subtitle found

Track Selection Scoring System:
- Audio tracks: Language match (+100), default flag (+50),
  channel count (+5-40), codec quality (+10-30), exclude commentary (-100)
- Subtitle tracks: Language match (+100), forced flag (+50),
  SRT preference (+30), default flag (+10)

Implementation Details:
- Add force_track_selection parameter throughout playback chain
- Preserve server/remote control track selections when not forcing manual selection
- Add extensive debug logging for track selection decisions
- Respect user preferences while allowing manual override via context menu
2026-01-06 00:32:44 +01:00
mani
238d30ab94 Improve audio track selection with scoring system
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
- Add intelligent scoring for multiple audio tracks in same language
- Score based on: default flag (+50), channel count (+5-40),
  codec quality (+10-30), and exclude commentary (-100)
- Prevents selecting commentary or low-quality tracks when better
  options are available in the same language
- Prioritizes default track while considering quality factors
2026-01-06 00:15:46 +01:00
mani
7d26589cf6 Add automatic audio and subtitle track selection
- Add preferred audio language setting (default: ger)
- Add preferred subtitle language setting (default: ger)
- Add auto-select default audio track option
- Add prefer forced subtitles option
- Add prefer SRT over PGS/image subtitles option

Implements intelligent scoring system for subtitle selection:
- Language match: +100 points
- Forced subtitle: +50 points (if enabled)
- SRT codec: +30 points (if enabled)
- Default track: +10 points

Auto-selection only happens when no track is pre-selected.
Falls back to manual dialog selection if no match is found.
2026-01-06 00:13:17 +01:00
mani
10857e39b1 Fix incomplete transcode target codec implementation
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
- Add transcode target codec logic to get_play_url function
- Add debug logging to track codec selection
- Remove redundant enable="true" attributes in settings.xml

The get_play_url function was still using hardcoded h264, which caused
the transcode target codec setting to not take effect for direct
transcode URLs.
2026-01-05 23:41:16 +01:00
mani
30a07327bc Add option to disable disk caching (RAM only mode)
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
Adds new advanced setting to disable disk-based caching, keeping data only in RAM. When enabled, prevents writing .pickle cache files and disables artwork preloading. Significantly reduces SD card wear on devices like Raspberry Pi while maintaining performance through RAM caching.
2026-01-05 18:50:26 +01:00
mani
50f2f1ac3c Add configurable transcode target video codec support
Adds new playback options to select transcode target codec (H.264, H.265/HEVC, AV1) and force H.264 transcoding. This enables optimal codec selection for client hardware, especially useful for devices with H.265 hardware decoding like Raspberry Pi 5. Target codec and source codec filtering now work independently for maximum flexibility.
2026-01-05 18:47:29 +01:00
mani
8041a0b9d8 Improve subtitle track display with codec information
Subtitle tracks now display both language and codec type (e.g., 'English (SRT)', 'German (PGS)'). Adds friendly names for common subtitle codecs like SRT, PGS, VobSub, and ASS. Improves user experience when selecting subtitle tracks.
2026-01-05 18:47:04 +01:00
mani
d5920a381e Fix WebSocket session flapping with ForceKeepAlive protocol
Implements Jellyfin's ForceKeepAlive/KeepAlive mechanism to prevent constant reconnects every 2 minutes. WebSocketApp is now recreated for each connection attempt to avoid memory leaks. Removed problematic ping_timeout and reconnect parameters that caused instability.
2026-01-05 18:46:25 +01:00
daryhanif
36b2891353 Translated using Weblate (Indonesian)
Currently translated at 98.3% (297 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/id/
2026-01-05 12:25:56 +00:00
rimasx
4fa6d7d643 Translated using Weblate (Estonian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2026-01-05 12:25:56 +00:00
rimasx
90151c2958 Translated using Weblate (Estonian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2026-01-05 08:00:55 +00:00
rimasx
4133c03759 Translated using Weblate (Estonian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2026-01-05 07:40:44 +00:00
Levente Suli
aab694c302 Translated using Weblate (Hungarian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hu/
2026-01-04 21:05:53 +00:00
mcarlton00
c963176bba Merge pull request #398 from jellyfin/prepare-0.9.0
Some checks failed
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
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.9.0
2026-01-02 10:54:04 -05:00
jellyfin-bot
06ffff3031 bump version to 0.9.0 2026-01-02 15:14:54 +00:00
ittelicra
2021f76dfd Translated using Weblate (Italian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2026-01-02 12:03:37 +00:00
Stelios Karakapzoudis
112e244fbc Translated using Weblate (Greek)
Currently translated at 94.3% (285 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/el/
2025-12-31 00:05:53 +00:00
mcarlton00
a655d49ce3 Merge pull request #396 from manuelschneider/websocket-renderer-issue
Fix websocket reconnects
2025-12-29 12:23:00 -05:00
mcarlton00
ddb47065bb Merge pull request #395 from mcarlton00/prioritize-filtered-limits
Ensure the filtered limit takes precedence over page limit
2025-12-29 11:45:37 -05:00
Spillutvikler
e94873c011 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2025-12-29 13:05:53 +00:00
ilker
8f07d44a4d Translated using Weblate (Turkish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-12-29 13:05:52 +00:00
Gargotaire
d63b4321c2 Translated using Weblate (Catalan)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-12-23 08:05:53 +00:00
rimasx
b1c9f3877b Translated using Weblate (Estonian)
Currently translated at 96.0% (290 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-12-23 08:05:52 +00:00
Gallyam Biktashev
d49eac5666 Translated using Weblate (Russian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2025-12-23 08:05:52 +00:00
Manuel Schneider
a24f921804 use libs reconnect functionality 2025-12-20 17:15:29 +01:00
Stefano Mazzoleni
f1d86743f3 Translated using Weblate (Italian)
Currently translated at 98.6% (298 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2025-12-20 09:55:08 +00:00
pol busquets
0b6c14b540 Translated using Weblate (Catalan)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-12-18 13:55:10 +00:00
Antti Pikkuaho
10c6b116da Translated using Weblate (Finnish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fi/
2025-12-18 13:55:09 +00:00
pol busquets
17c3ed2625 Translated using Weblate (Spanish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2025-12-18 13:55:09 +00:00
Fjuro
296acefb09 Translated using Weblate (Czech)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2025-12-15 22:55:10 +00:00
Kityn
2bb737bfd9 Translated using Weblate (Polish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2025-12-15 22:55:09 +00:00
kscop-n1
053eb71967 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2025-12-15 22:55:09 +00:00
tct123
ed2190c03d Translated using Weblate (German)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2025-12-15 22:55:08 +00:00
Translation expert
cd210900f8 Translated using Weblate (Arabic)
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2025-12-15 22:55:08 +00:00
無情天
b2d09191f3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (302 of 302 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2025-12-15 22:55:08 +00:00
Kityn
19e71f8e6e Translated using Weblate (Polish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2025-12-14 21:55:09 +00:00
Translation expert
45ab93c527 Translated using Weblate (Arabic)
Currently translated at 100.0% (301 of 301 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2025-12-14 21:55:09 +00:00
Jesus Oziel Duran Gonzalez
4c58546fd6 Translated using Weblate (Spanish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2025-12-14 21:55:09 +00:00
mcarlton00
854d72fe15 Ensure the filtered limit takes precedence over page limit 2025-12-13 11:20:08 -05:00
mcarlton00
786f01cd7e Merge pull request #393 from mcarlton00/show_page_limit
Add a page limit setting for tv shows
2025-12-13 08:52:31 -05:00
A Boci
69a95f04d7 Translated using Weblate (Albanian)
Currently translated at 4.0% (12 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sq/
2025-12-13 11:55:08 +00:00
mcarlton00
7ef4d0c7bd Add a page limit setting for tv shows 2025-12-06 12:11:47 -05:00
mcarlton00
9c1d34d148 Merge pull request #381 from Aydanill/master
Add New Widgets
2025-12-06 09:08:09 -05:00
mcarlton00
3d3bab2fec Merge pull request #384 from loztcf/fix-subtitle-burn-in
fix subtitle burn in
2025-12-06 08:37:28 -05:00
mcarlton00
5bac2f8e87 Merge pull request #385 from AndryYosua/fix/subtitle_sdh_jellyfin_v10.9.0
fix sdh/cc/hi subtitle for jellyfin > v10.9.0
2025-12-06 08:36:38 -05:00
kscop-n1
d54e40306b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2025-12-01 22:27:43 +00:00
Eray
7699a2820d Translated using Weblate (Turkish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-11-17 08:43:31 +00:00
Bastinator-school
2b9be31e6e Translated using Weblate (Danish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/da/
2025-11-03 16:51:54 +00:00
Translation expert
b67b9c0e9d Translated using Weblate (Arabic)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2025-11-03 16:51:53 +00:00
Battseren Badral
4ecba55765 Translated using Weblate (Mongolian)
Currently translated at 0.3% (1 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/mn/
2025-10-26 00:17:02 +00:00
rimasx
58c8c90099 Translated using Weblate (Estonian)
Currently translated at 95.2% (283 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-10-09 12:51:25 +00:00
rimasx
1d378cc52d Translated using Weblate (Estonian)
Currently translated at 94.2% (280 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-10-08 11:47:38 +00:00
rimasx
f108a84b4f Translated using Weblate (Estonian)
Currently translated at 94.2% (280 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-10-08 11:39:57 +00:00
rimasx
e79c8ba10a Translated using Weblate (Estonian)
Currently translated at 94.2% (280 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-10-08 08:51:25 +00:00
rimasx
a5021d4686 Translated using Weblate (Estonian)
Currently translated at 71.7% (213 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/et/
2025-10-07 07:56:37 +00:00
Pavel Miniutka
8fa027e98f Translated using Weblate (Belarusian)
Currently translated at 3.7% (11 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/be/
2025-10-05 02:38:25 +00:00
S H
75437d8f66 Translated using Weblate (Japanese)
Currently translated at 63.6% (189 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2025-09-23 16:39:20 +00:00
Shinji Hayakawa
b6f374af2d Translated using Weblate (Japanese)
Currently translated at 62.9% (187 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2025-09-23 06:18:02 +00:00
Shinji Hayakawa
00e751373b Translated using Weblate (Japanese)
Currently translated at 59.5% (177 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2025-09-23 01:29:53 +00:00
Shinji Hayakawa
e7592dc4f5 Translated using Weblate (Japanese)
Currently translated at 59.2% (176 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2025-09-23 01:29:51 +00:00
Shinji Hayakawa
90627f177b Translated using Weblate (Japanese)
Currently translated at 58.2% (173 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2025-09-22 23:10:28 +00:00
Jan Zachar
dd5d72c607 Translated using Weblate (Belarusian)
Currently translated at 3.7% (11 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/be/
2025-09-22 12:36:37 +00:00
Khalsior
12a32c0793 Translated using Weblate (Italian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2025-09-22 12:36:37 +00:00
Ärik
4d8df33a0a Translated using Weblate (Swedish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2025-09-10 20:11:05 +00:00
Andry Yosua
eecf1d3fe2 fix sdh/cc/hi subtitle for jellyfin > v10.9.0
**Conditon:**
- i have movie with these subtitle file
	- MovieName.en.srt
	- MovieName.en.sdh.srt
- i have jellyfin server 10.10.7
- i have kodi 21.2

**Expected:**
- i can choose between **english** subtitle and **english sdh/cc/hi**
subtitle

**Actual:**
- i do not have an option to choose between **english sdh/cc/hi** and
**english** subtitle
- i can only choose english subtitle

**Cause**
[jellyfin release
v10.9.0](https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0) -
[Add hearing impaired subtitle stream
indicator](https://github.com/jellyfin/jellyfin/pull/7379) introduce new
update for common naming convention for external hearing-impaired /
close captioned / deaf hearing subtitles

this PR fix problem caused by those release update following [kodi
naming convention for closed
captions](https://kodi.wiki/view/Settings/Player/Subtitles#Enable_parsing_for_closed_captions)

Question:
- should i keep compatibilty for jellyfin release before v10.9.0?
2025-08-31 01:16:59 +07:00
bolaykim
056948d33d Translated using Weblate (Turkish)
Currently translated at 98.9% (294 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-08-25 21:36:51 +00:00
spurdl
cc508cdfa5 Translated using Weblate (Finnish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fi/
2025-08-23 15:01:43 +00:00
aniara001
ff1a6df0e8 Translated using Weblate (Swedish)
Currently translated at 97.9% (291 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2025-08-13 06:51:20 +00:00
Julio García
11e9221206 Translated using Weblate (Spanish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2025-08-09 09:34:41 +00:00
Gallyam Biktashev
737d86faaf Translated using Weblate (Russian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2025-08-04 17:49:15 +00:00
Fjuro
5229b70e5e Translated using Weblate (Czech)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2025-08-03 21:36:14 +00:00
Andreas Laufer
f151f5ae19 fix subtitle burn in, add missing SubtitleMethod parameter 2025-08-03 14:25:46 +02:00
madman38
a4d88c72a4 Translated using Weblate (Turkish)
Currently translated at 96.9% (288 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-07-30 19:05:31 +00:00
Gargotaire
f303314237 Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-07-22 11:43:07 +00:00
czlevi7
a3928ca921 Translated using Weblate (Hungarian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hu/
2025-07-21 20:37:20 +00:00
Gargotaire
c3d13c7c69 Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-07-20 00:25:29 +00:00
madman38
4ffbb6bb8d Translated using Weblate (Turkish)
Currently translated at 95.9% (285 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-07-20 00:25:29 +00:00
madman38
4324659e67 Translated using Weblate (Turkish)
Currently translated at 90.2% (268 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-07-17 14:51:19 +00:00
Samuel Kouba
a564c52df0 Translated using Weblate (Czech)
Currently translated at 46.1% (137 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2025-07-12 21:51:18 +00:00
oofybruh9
1ac78e45d6 Translated using Weblate (Spanish)
Currently translated at 97.6% (290 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2025-07-11 02:51:18 +00:00
Buiko32
1dc6879f2f Translated using Weblate (Italian)
Currently translated at 96.2% (286 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2025-07-08 21:51:18 +00:00
Igor Darkov
6de9ead965 Translated using Weblate (Russian)
Currently translated at 96.2% (286 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2025-07-08 21:51:18 +00:00
Oatavandi
f4ccd1d56f Translated using Weblate (Tamil)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ta/
2025-06-29 13:51:19 +00:00
Nirwan
1d103ad848 Translated using Weblate (Indonesian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/id/
2025-06-28 11:51:17 +00:00
Sofyill
96d837732b hidden cherecter fix 2025-06-13 21:26:33 -04:00
Sofyill
3572dcc555 consistant service.py 2025-06-13 18:40:41 -04:00
Sofyill
b6b19f5a23 consistant menu_functions.py 2025-06-13 18:36:07 -04:00
Sofyill
bb1284deff updated strings.po 2025-06-13 18:30:52 -04:00
Sofyill
bc125bb0a3 updated menu_functions.py 2025-06-13 18:29:02 -04:00
Sofyill
3d30fcfc3e updated service.py 2025-06-13 18:25:06 -04:00
Sofyill
b5c9ecdf5c updated widgets.py 2025-06-13 18:16:01 -04:00
Aydanill
a09379f47b Update menu_functions.py 2025-06-12 19:01:00 -04:00
Aydanill
2a191a310e Update strings.po 2025-06-12 18:59:12 -04:00
Aydanill
50be0c9bde Update strings.po 2025-06-12 18:57:13 -04:00
Aydanill
5cfef6c6c0 Update menu_functions.py 2025-06-12 18:56:31 -04:00
Aydanill
5015a3b900 Update widgets.py 2025-06-12 18:56:07 -04:00
Aydanill
c7050ac9a1 Update service.py 2025-06-12 18:55:26 -04:00
Aydanill
a0c192e567 Update strings.po 2025-06-12 18:48:30 -04:00
Aydanill
06c08d76e7 Update menu_functions.py 2025-06-12 18:42:35 -04:00
Aydanill
0ea4a2e272 Update widgets.py 2025-06-12 18:42:02 -04:00
Aydanill
3c51fd3e71 Update service.py 2025-06-12 18:41:26 -04:00
Gargotaire
52ae591b80 Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-06-12 18:01:33 +00:00
NotNekodev
b17dd47436 Translated using Weblate (German)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2025-06-12 18:01:33 +00:00
Gargotaire
954d42c60a Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-06-10 08:01:34 +00:00
無情天
50d82cba1d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2025-06-10 08:01:33 +00:00
Pere
8b65867836 Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-06-09 07:01:34 +00:00
aniara001
79d9ec82f8 Translated using Weblate (Swedish)
Currently translated at 97.6% (290 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2025-06-09 07:01:33 +00:00
ilker
80cdfc1f0c Translated using Weblate (Turkish)
Currently translated at 77.7% (231 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-06-09 07:01:33 +00:00
tct123
32249d1db1 Translated using Weblate (German)
Currently translated at 98.9% (294 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2025-06-07 17:01:33 +00:00
Oskar
53333dd88b Translated using Weblate (German)
Currently translated at 95.9% (285 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2025-06-05 12:32:22 +00:00
mcarlton00
065f6a2dce Merge pull request #378 from davembg/master
Include track details in audio playback
2025-05-31 10:45:56 -04:00
Cjfly
a07c04d786 Translated using Weblate (English (Middle))
Currently translated at 1.0% (3 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/enm/
2025-05-28 22:01:33 +00:00
Battseren Badral
831fcf7e98 Added translation using Weblate (Mongolian) 2025-05-26 10:41:52 +00:00
nextlooper42
8e805b24f6 Translated using Weblate (Slovak)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2025-05-22 15:01:32 +00:00
nextlooper42
1086ea52df Translated using Weblate (Slovak)
Currently translated at 97.3% (289 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2025-05-21 12:26:53 +00:00
alyaari
0f393227b0 Translated using Weblate (Arabic)
Currently translated at 99.3% (295 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2025-05-13 02:01:07 +00:00
r4dius
6987caa465 Translated using Weblate (French)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2025-05-13 02:01:06 +00:00
Rustry
f0267a076b Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 96.2% (286 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2025-05-13 02:01:06 +00:00
C2gl
733cc9780d Translated using Weblate (Dutch)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2025-05-11 01:54:43 +00:00
Alejandro Delgado Folgado
4a8719a5f3 Translated using Weblate (Catalan)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-05-08 01:53:57 +00:00
Pauloszz
41658cbc19 Translated using Weblate (Dutch)
Currently translated at 97.3% (289 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2025-05-06 15:59:27 +00:00
Samuel Tønnessen
f1af58d934 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2025-05-05 07:15:23 +00:00
Samuel Tønnessen
eb0ddca1c3 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.9% (291 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2025-05-03 13:31:31 +00:00
Dave
38ff2607cf Update play_utils.py
added artist, album and track info to the shuffle feature
2025-05-02 16:52:45 -07:00
Kityn
3ae9a62c80 Translated using Weblate (Polish)
Currently translated at 100.0% (297 of 297 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2025-05-02 23:14:18 +00:00
Samuel Tønnessen
06d32fb9c2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2025-05-02 09:31:14 +00:00
mcarlton00
fb96a34d8c Merge pull request #368 from Gorgorot38/skip_segments
Add segment skip ability
2025-04-15 07:45:12 -04:00
Fjuro
23b88f96b2 Translated using Weblate (Czech)
Currently translated at 39.6% (113 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2025-04-08 10:01:03 +00:00
emversch
4e58ccad8d Translated using Weblate (Dutch)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2025-04-05 21:35:47 +00:00
Adnan Sönmez
c20b3913b5 Translated using Weblate (Turkish)
Currently translated at 80.7% (230 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2025-04-03 11:01:04 +00:00
myrad2267
36c20f30b1 Translated using Weblate (French)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2025-04-03 11:01:03 +00:00
Alejandro Delgado Folgado
5b102372ff Translated using Weblate (Catalan)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2025-03-20 10:55:28 -04:00
Alejandro Delgado Folgado
b33a365685 Translated using Weblate (Spanish)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2025-03-20 10:55:28 -04:00
fenix_vd
995f95e7bd Translated using Weblate (Russian)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2025-03-20 10:55:28 -04:00
Gorgorot38
fb8adbe27c typos 2025-03-19 14:16:30 +01:00
Jonas Engen Larsen
035f946c05 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (284 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2025-03-18 20:01:01 -04:00
Gorgorot38
78ab2344be fix git feedback 2025-03-17 17:35:42 +01:00
Gorgorot38
aa799e32b6 Fix language 2025-03-17 17:32:09 +01:00
Gorgorot38
3e621f8f33 Refacto code
Add logs
Add support for recap + preview + commercial
2025-03-17 17:25:55 +01:00
Ace
52670e7b2b Translated using Weblate (Swedish)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2025-03-16 09:00:30 -04:00
Gorgorot38
a70cbbcae1 Merge remote-tracking branch 'origin/master' into skip_segments 2025-03-02 16:45:46 +01:00
mcarlton00
1f0ea54629 Merge pull request #369 from Gorgorot38/mutli_subtitles_same_language
Fix bug with multiple external subtitles in the same languages
2025-02-28 18:46:01 -05:00
mcarlton00
15b36c15d7 Merge pull request #372 from jellyfin/prepare-0.8.3
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.8.3
2025-02-23 12:07:45 -05:00
jellyfin-bot
39daa502ad bump version to 0.8.3 2025-02-23 17:03:54 +00:00
mcarlton00
43dc2a956e Merge pull request #371 from jellyfin/fix-action
Swap legacy secrets for current secrets
2025-02-23 12:01:28 -05:00
Joshua M. Boniface
512556dfba Swap legacy secrets for current secrets 2025-02-23 11:46:11 -05:00
Gorgorot38
af54d611b1 fix return 2025-02-23 14:51:38 +01:00
mcarlton00
d214167402 Merge pull request #370 from jellyfin/prepare-0.8.2
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.8.2
2025-02-23 07:30:16 -05:00
jellyfin-bot
6f5fab57db bump version to 0.8.2 2025-02-23 12:27:28 +00:00
mcarlton00
bb73fd9192 Merge pull request #367 from jellyfin/fix-action
Fix action paths
2025-02-23 07:25:05 -05:00
Gorgorot38
39d16921ad Fix bug with multiple external subtitles in the same languages 2025-02-23 10:45:24 +01:00
Gorgorot38
761dc8e1c5 Add segment skip ability 2025-02-23 10:26:37 +01:00
Joshua M. Boniface
f20d0f9a69 Fix action paths 2025-02-22 22:22:22 -05:00
mcarlton00
9a7a6e6896 Merge pull request #366 from jellyfin/prepare-0.8.1
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
Prepare for release v0.8.1
2025-02-22 15:54:37 -05:00
jellyfin-bot
316d4ef3e2 bump version to 0.8.1 2025-02-22 20:52:21 +00:00
mcarlton00
ccb1e6f6f7 Merge pull request #365 from mcarlton00/remove-py2-testing-ci
Remove py2 from testing CI
2025-02-22 10:44:14 -05:00
mcarlton00
0fe60ed82c More codeql cleanup 2025-02-22 10:37:58 -05:00
mcarlton00
007a0a6b04 Remove py2 from codeql 2025-02-22 10:33:35 -05:00
mcarlton00
c32d6bce8a Remove py2 from testing CI. Remove from publishing in next major
release
2025-02-22 10:30:51 -05:00
mcarlton00
b6983eb60e Merge pull request #361 from jellyfin/dependabot/github_actions/release-drafter/release-drafter-6.1.0
Bump release-drafter/release-drafter from 6.0.0 to 6.1.0
2025-02-22 10:27:34 -05:00
mcarlton00
41d6e2e54f Merge pull request #362 from abysslynx/play-next-no-prompt
Restore play next without prompt functionality
2025-02-22 10:23:19 -05:00
abysslynx
7062c7a854 Restore play next without prompt functionality 2025-02-17 21:16:22 +00:00
dependabot[bot]
2c5ba0798b Bump release-drafter/release-drafter from 6.0.0 to 6.1.0
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v6.0.0...v6.1.0)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 16:59:35 +00:00
mcarlton00
de30a11b17 Merge pull request #357 from jellyfin/dependabot/github_actions/appleboy/ssh-action-1.2.0
Bump appleboy/ssh-action from 1.0.0 to 1.2.0
2025-01-18 11:14:03 -05:00
mcarlton00
fdcc9d2d52 Merge pull request #356 from jellyfin/dependabot/pip/kodistubs-approx-eq-21.0
Update kodistubs requirement from ~=20.0 to ~=21.0
2025-01-18 11:13:33 -05:00
mcarlton00
7da2ff2026 Merge pull request #315 from jellyfin/dependabot/github_actions/release-drafter/release-drafter-6.0.0
Bump release-drafter/release-drafter from 5.25.0 to 6.0.0
2025-01-18 11:10:08 -05:00
mcarlton00
9e402d3eec Merge pull request #308 from jellyfin/dependabot/github_actions/github/codeql-action-3
Bump github/codeql-action from 2 to 3
2025-01-18 11:09:38 -05:00
mcarlton00
73dae33358 Merge pull request #306 from jellyfin/dependabot/github_actions/actions/setup-python-5
Bump actions/setup-python from 4 to 5
2025-01-18 11:09:16 -05:00
dependabot[bot]
5d0fd36530 Bump appleboy/ssh-action from 1.0.0 to 1.2.0
Bumps [appleboy/ssh-action](https://github.com/appleboy/ssh-action) from 1.0.0 to 1.2.0.
- [Release notes](https://github.com/appleboy/ssh-action/releases)
- [Changelog](https://github.com/appleboy/ssh-action/blob/master/.goreleaser.yaml)
- [Commits](https://github.com/appleboy/ssh-action/compare/v1.0.0...v1.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 17:06:54 +00:00
dependabot[bot]
30ea9e794c Update kodistubs requirement from ~=20.0 to ~=21.0
Updates the requirements on [kodistubs](https://github.com/romanvm/Kodistubs) to permit the latest version.
- [Commits](https://github.com/romanvm/Kodistubs/compare/20.0.0...21.0.0)

---
updated-dependencies:
- dependency-name: kodistubs
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 16:48:09 +00:00
mcarlton00
78af3e02ad Merge pull request #309 from jellyfin/dependabot/github_actions/actions/upload-artifact-4
Bump actions/upload-artifact from 3 to 4
2024-12-06 10:52:45 -05:00
okaits#7534
c9def4dd03 Translated using Weblate (Japanese)
Currently translated at 60.3% (172 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ja/
2024-11-10 23:00:02 -05:00
SullensCR
cf0544b118 Translated using Weblate (Spanish)
Currently translated at 99.6% (284 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2024-11-10 23:00:00 -05:00
Justin
fe3e5c979e Translated using Weblate (German)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2024-11-04 15:00:00 -05:00
nextlooper42
9b75d0c859 Translated using Weblate (Slovak)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2024-11-01 12:41:37 -04:00
無情天
248370f363 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2024-11-01 12:41:37 -04:00
Kityn
f7a63a0f70 Translated using Weblate (Polish)
Currently translated at 100.0% (285 of 285 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2024-10-30 06:10:09 -04:00
Antonios
780146e429 Translated using Weblate (Greek)
Currently translated at 97.8% (278 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/el/
2024-10-29 08:41:39 -04:00
mcarlton00
ce0fc82b20 Merge pull request #339 from hagaygo/totally-unwatched-tv-shows-menu-option
New Tv Shows menu entry , Totally unwatched Tv Shows entries
2024-10-25 20:07:26 -04:00
mcarlton00
29151d837a Merge pull request #351 from hagaygo/fix-youtube-addon-call
Fix youtube addon call for trailer playback
2024-10-25 19:59:51 -04:00
Hagay Goshen
de74b0a912 Code improvements
Co-authored-by: MoojMidge <56883549+MoojMidge@users.noreply.github.com>
2024-10-23 16:14:35 +03:00
Hagay Goshen
124ae358ff Fix youtube addon call for trailer playback
youtube addon maintainer says RunPlugin is an invalid way to call the addon.

So changed the call to use PlayMedia

More info on https://github.com/anxdpanic/plugin.video.youtube/issues/937
2024-10-23 10:05:14 +03:00
somechazzy
cf62e5f29c Translated using Weblate (Arabic)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2024-10-11 03:47:16 -04:00
Anders
ceeefaf4fb Translated using Weblate (Danish)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/da/
2024-10-09 04:41:35 -04:00
Martin Clüwer Slåtsve
3db9aced52 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2024-08-31 12:52:39 -04:00
Antonios
889b970fa1 Translated using Weblate (Greek)
Currently translated at 36.6% (104 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/el/
2024-08-29 09:41:33 -04:00
queeup
3b5984757c Translated using Weblate (Turkish)
Currently translated at 63.3% (180 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-08-19 19:41:32 -04:00
Matěj Vrzalík
f5f82bf10e Translated using Weblate (Czech)
Currently translated at 39.4% (112 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2024-07-20 12:41:30 -04:00
marudosurdo
875020007d Added translation using Weblate (Japanese) 2024-07-19 21:23:05 -04:00
Laura Kirsch
2f89201049 Translated using Weblate (German)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2024-07-16 12:41:30 -04:00
rdma
8f22f71e3f Translated using Weblate (Czech)
Currently translated at 30.6% (87 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2024-07-15 10:41:30 -04:00
Filan Fisteku
61ca0d4211 Translated using Weblate (Albanian)
Currently translated at 3.8% (11 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sq/
2024-07-14 06:41:30 -04:00
Filan Fisteku
4feab32b04 Added translation using Weblate (Albanian) 2024-07-13 06:25:36 -04:00
César Ortigueira García
1d7477bac9 Translated using Weblate (Spanish)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2024-07-09 06:11:19 -04:00
Viswanadha Y Manu Sharma
4a4cc53717 Translated using Weblate (Hindi)
Currently translated at 61.9% (176 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hi/
2024-07-05 11:41:29 -04:00
exbu
4bfe4ec690 Translated using Weblate (Dutch)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2024-07-02 18:41:29 -04:00
mcarlton00
eb3bb2f1bd Merge pull request #336 from hagaygo/fix-epsiode-next-up-inprogress-duplicates
Explicitly request non resumeable episodes on next up widget
2024-06-13 07:22:10 -04:00
Turtleindeed
4bba48afd2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.8% (258 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2024-06-11 18:05:43 -04:00
hagaygo
e503ddb053 Added Tv Shows - Totally Unwatched menu entry 2024-06-02 15:57:52 +03:00
hagaygo
4f8e5a6053 Explicitly request non resumeable episodes on next up widget 2024-05-30 10:42:47 +03:00
Mathias Dejerud
c86112f2ac Translated using Weblate (Swedish)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2024-05-21 04:41:26 -04:00
Thom
528a355d8a Translated using Weblate (Dutch)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2024-05-12 21:46:30 -04:00
Rudengren
37bfe3bf72 Translated using Weblate (Swedish)
Currently translated at 99.6% (283 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2024-05-10 14:41:25 -04:00
squareboi104
3b0c06295f Translated using Weblate (Spanish)
Currently translated at 99.6% (283 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2024-05-10 14:41:25 -04:00
HiPotionQ8
090b684ffc Translated using Weblate (Arabic)
Currently translated at 93.3% (265 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2024-05-05 00:15:20 -04:00
Szilágyi Kristóf
eab7252bb1 Translated using Weblate (Hungarian)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hu/
2024-05-04 06:18:05 -04:00
Mikhail Arkhipov
212444b3e0 Translated using Weblate (Russian)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ru/
2024-05-03 19:28:38 -04:00
無情天
c8e0f64a98 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2024-04-26 18:26:15 -04:00
KarlderHeinz
feca38abdc Translated using Weblate (German)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2024-04-19 23:51:52 -04:00
vic991
1ccfa5b3d7 Translated using Weblate (Swedish)
Currently translated at 99.6% (283 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2024-04-18 21:03:55 -04:00
bene toffix
8b46c68c17 Translated using Weblate (Catalan)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2024-04-09 13:38:03 -04:00
ROYJohan08
1c86e49f2a Translated using Weblate (French)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2024-04-09 13:38:03 -04:00
queeup
06d219e9ad Translated using Weblate (Turkish)
Currently translated at 59.8% (170 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-04-08 11:08:24 -04:00
nextlooper42
aabd1b63e6 Translated using Weblate (Slovak)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2024-04-07 08:38:03 -04:00
stanol
a64589bff8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2024-04-07 08:38:03 -04:00
Kityn
6e87ce8a79 Translated using Weblate (Polish)
Currently translated at 100.0% (284 of 284 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2024-04-05 06:26:26 -04:00
queeup
8ba89854fd Translated using Weblate (Turkish)
Currently translated at 59.7% (169 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-04-04 08:38:04 -04:00
mcarlton00
9ce7903330 Merge pull request #320 from hagaygo/hide_item_count_on_entry_menu_option
Add setting option to hide item count limit on menu entries
2024-04-02 19:40:49 -04:00
Oatavandi
aec72afffc Translated using Weblate (Tamil)
Currently translated at 0.3% (1 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ta/
2024-04-01 15:38:04 -04:00
nextlooper42
7d278a00df Translated using Weblate (Slovak)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2024-04-01 15:38:04 -04:00
Samuel Kouba
ec3682a0c8 Translated using Weblate (Czech)
Currently translated at 29.6% (84 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2024-04-01 15:38:02 -04:00
nextlooper42
6f3a9e20ac Translated using Weblate (Slovak)
Currently translated at 73.8% (209 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sk/
2024-03-31 13:19:20 -04:00
hagaygo
6681ee60fe Add setting option to hide item count limit on menu entries 2024-03-29 00:06:02 +02:00
mcarlton00
4c93037725 Merge pull request #321 from hagaygo/nicer.resume.playback.look
nicer and kodi's style resume position on resume dialog
2024-03-28 17:17:41 -04:00
Hagay Goshen
8957956a51 nicer and kodi's style resume position on resume dialog
Co-authored-by: mcarlton00 <mcarlton00@gmail.com>
2024-03-25 18:30:18 +02:00
mcarlton00
40f978a777 Merge pull request #319 from hagaygo/duplicatecode
Remove duplicate line of code
2024-03-23 14:39:32 -04:00
trajinikanth
0da8e08be5 Added translation using Weblate (Tamil) 2024-03-22 09:53:01 -04:00
VitoFe
3058ce6875 Translated using Weblate (Italian)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2024-03-21 10:30:41 -04:00
RainoutOvO
2813086f85 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hant/
2024-03-17 09:38:03 -04:00
RainoutOvO
d4450d51ea Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2024-03-17 09:38:01 -04:00
Fra146
517fbc8ed7 Translated using Weblate (Italian)
Currently translated at 98.9% (280 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2024-03-16 08:40:03 -04:00
RainoutOvO
07e7a9f791 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2024-03-16 08:40:03 -04:00
Hagay Goshen
1477b112a6 Remove duplicate line of code
While looking at the code , found a duplicate line of code, tested it locally after removal , all works fine.
2024-02-28 10:41:16 +02:00
DJSweder
e2e569e108 Translated using Weblate (Czech)
Currently translated at 21.2% (60 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/cs/
2024-02-27 09:37:12 -05:00
Alessandro Bernocchi
43de4d7b52 Translated using Weblate (Italian)
Currently translated at 95.7% (271 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2024-02-10 06:30:38 -05:00
dependabot[bot]
e69009dbdd Bump release-drafter/release-drafter from 5.25.0 to 6.0.0
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.25.0 to 6.0.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v5.25.0...v6.0.0)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 16:05:32 +00:00
queeup
1ea1d33976 Translated using Weblate (Turkish)
Currently translated at 57.5% (163 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-02-03 17:30:36 -05:00
Gianluca Coviello
aa8c24996c Translated using Weblate (Italian)
Currently translated at 95.4% (270 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/it/
2024-02-02 08:30:35 -05:00
Ahmad Mujahid
3aac126fbc Translated using Weblate (Arabic)
Currently translated at 92.2% (261 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ar/
2024-01-26 07:30:33 -05:00
queeup
9427e0fa78 Translated using Weblate (Turkish)
Currently translated at 57.2% (162 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-01-23 01:22:33 -05:00
Florian Weiss
ef95b68f7d Translated using Weblate (German)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2024-01-23 01:22:33 -05:00
zjad
101ed07224 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.9% (280 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/
2024-01-20 22:30:31 -05:00
Ramazan Sancar
a7f34a23c1 Translated using Weblate (Turkish)
Currently translated at 57.2% (162 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2024-01-14 13:30:29 -05:00
bene toffix
b68f208a52 Translated using Weblate (Catalan)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/ca/
2024-01-09 10:30:28 -05:00
bene toffix
721272228b Translated using Weblate (Spanish)
Currently translated at 99.6% (282 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2024-01-09 10:30:27 -05:00
Zoe
7608e6e88b Translated using Weblate (Norwegian Bokmål)
Currently translated at 85.5% (242 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nb_NO/
2024-01-05 18:30:26 -05:00
Pascal Riemer
b6c0689bbf Translated using Weblate (German)
Currently translated at 99.6% (282 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/de/
2024-01-03 12:30:25 -05:00
Romain Eggermont
a72477df2e Translated using Weblate (French)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2024-01-03 12:30:25 -05:00
lyaschuchenko
2ba1306631 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2024-01-01 21:30:25 -05:00
Daniel Öster
31599ccf78 Translated using Weblate (Swedish)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/sv/
2023-12-29 04:30:23 -05:00
Csaba
daad195853 Translated using Weblate (Hungarian)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/hu/
2023-12-29 04:30:23 -05:00
queeup
7fdb54fd52 Translated using Weblate (Turkish)
Currently translated at 46.6% (132 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2023-12-25 06:30:22 -05:00
queeup
c7fe3b7663 Translated using Weblate (Turkish)
Currently translated at 46.2% (131 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2023-12-20 12:30:21 -05:00
Luther
24b8b5b320 Translated using Weblate (French)
Currently translated at 99.2% (281 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fr/
2023-12-20 12:30:21 -05:00
iondomenti
ce25e984bd Translated using Weblate (Spanish)
Currently translated at 98.5% (279 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/es/
2023-12-20 12:30:21 -05:00
dependabot[bot]
a69628daa5 Bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 16:31:17 +00:00
dependabot[bot]
5ea15ce8a4 Bump github/codeql-action from 2 to 3
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 16:31:08 +00:00
Oskari Lavinto
f35a1e3d0f Translated using Weblate (Finnish)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/fi/
2023-12-18 07:49:39 -05:00
Kityn
a99f9ee33e Translated using Weblate (Polish)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/pl/
2023-12-18 07:49:39 -05:00
Bas Körver
75c20183bb Translated using Weblate (Dutch)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2023-12-18 07:49:39 -05:00
Deleted User
33d9f61a68 Translated using Weblate (Dutch)
Currently translated at 100.0% (283 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/nl/
2023-12-18 07:49:39 -05:00
queeup
29daeab6ff Translated using Weblate (Turkish)
Currently translated at 46.6% (132 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/tr/
2023-12-18 07:49:39 -05:00
stanol
c42f8d4bb6 Translated using Weblate (Ukrainian)
Currently translated at 99.2% (281 of 283 strings)

Translation: Jellycon/Jellycon
Translate-URL: https://translate.jellyfin.org/projects/jellycon/jellycon/uk/
2023-12-18 07:49:39 -05:00
dependabot[bot]
08e846c4f0 Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
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>
2023-12-11 16:06:04 +00:00
60 changed files with 13381 additions and 602 deletions

View File

@@ -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
@@ -31,7 +31,7 @@ jobs:
run: python build.py --version ${{ matrix.py_version }}
- name: Publish Build Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
retention-days: 14
name: ${{ matrix.py_version }}-build-artifact

View File

@@ -18,37 +18,24 @@ jobs:
fail-fast: false
matrix:
language: [ 'python' ]
version: ['2.7', '3.9']
version: ['3.9']
steps:
- name: Checkout repository
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
- name: Set up Python
if: matrix.version != '2.7'
uses: actions/setup-python@v4
uses: actions/setup-python@v5
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
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Update Draft
uses: release-drafter/release-drafter@v5.25.0
uses: release-drafter/release-drafter@v6.1.0
id: draft
env:
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}

View File

@@ -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.1.0
if: ${{ matrix.py_version == 'py3' }}
with:
publish: true
@@ -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
@@ -35,7 +35,7 @@ jobs:
run: python build.py --version ${{ matrix.py_version }}
- name: Publish Build Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
retention-days: 14
name: ${{ matrix.py_version }}-build-artifact
@@ -47,18 +47,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.0
uses: appleboy/ssh-action@v1.2.0
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.jellycon+${{ matrix.py_version }}.zip --datadir /srv/repository/releases/client/kodi/${{ matrix.py_version }};
rm /srv/repository/incoming/kodi/plugin.video.jellycon+${{ matrix.py_version }}.zip;
python3 /usr/local/bin/kodirepo add /srv/incoming/kodi/plugin.video.jellycon+${{ matrix.py_version }}.zip --datadir /srv/repository/main/client/kodi/${{ matrix.py_version }};
rm /srv/incoming/kodi/plugin.video.jellycon+${{ matrix.py_version }}.zip;

View File

@@ -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.1.0
env:
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}

View File

@@ -17,28 +17,16 @@ jobs:
strategy:
fail-fast: false
matrix:
py_version: ['2.7', '3.9']
py_version: ['3.9']
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
uses: actions/setup-python@v5
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
@@ -53,7 +41,7 @@ jobs:
cat flake8.output
- name: Publish Test Atrifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
retention-days: 14
name: ${{ matrix.py_version }}-test-results

144
PATCHES.md Normal file
View File

@@ -0,0 +1,144 @@
# JellyCon Patches
Diese Patches fügen neue Features und Fixes zu JellyCon hinzu.
## Patches Übersicht
### 1. websocket-keepalive-fix.patch (3.1 KB)
**Was es behebt:** Session-Flapping Problem (ständige Reconnects alle 2 Minuten)
**Änderungen:**
- Implementiert Jellyfin's ForceKeepAlive/KeepAlive Protokoll
- Entfernt problematische `ping_timeout` und `reconnect` Parameter
- WebSocketApp wird bei jedem Reconnect neu erstellt (verhindert Memory-Leaks)
- Fügt `on_close` Callback hinzu für besseres Debugging
**Betroffene Dateien:**
- `resources/lib/websocket_client.py`
**Anwendung:**
```bash
cd plugin.video.jellycon
patch -p1 < websocket-keepalive-fix.patch
```
---
### 2. transcode-target-codec.patch (4.4 KB)
**Was es hinzufügt:** Konfigurierbare Transcode-Ziel-Codecs (H.264, H.265, AV1)
**Features:**
- Neue Dropdown-Option: "Transcode target video codec"
- H.264 (default)
- H.265 (HEVC) - Perfekt für Raspberry Pi 5!
- AV1
- Neue Checkbox: "Force transcode h264"
- Unabhängige Kontrolle über Quell- und Ziel-Codecs
**Perfekt für:**
- Raspberry Pi 5 (H.265 Hardware-Decode)
- Moderne GPUs mit AV1-Unterstützung
- Optimierung der Client-Hardware-Beschleunigung
**Betroffene Dateien:**
- `resources/lib/play_utils.py`
- `resources/settings.xml`
- `resources/language/resource.language.en_gb/strings.po`
- `resources/language/resource.language.de/strings.po`
**Anwendung:**
```bash
cd plugin.video.jellycon
patch -p1 < transcode-target-codec.patch
```
**Konfiguration nach Installation:**
```
Kodi Settings → Add-ons → JellyCon → Playback
1. "Transcode target video codec" → H.265 (HEVC)
2. "Force transcode h264" → ☑ Aktivieren
3. "Force transcode h265" → ☐ Aus
Ergebnis:
- H.264 Content → Server transcodiert zu H.265 → Pi 5 Hardware-Decode
- H.265 Content → DirectPlay (Hardware!)
```
---
### 3. disable-disk-cache.patch (3.8 KB)
**Was es hinzufügt:** Option zum Deaktivieren von Disk-Caching
**Features:**
- Neue Checkbox: "Disable disk caching (RAM only)"
- Verhindert Schreiben von `.pickle` Cache-Dateien
- Deaktiviert Artwork-Preloading
- Daten bleiben nur im RAM
**Perfekt für:**
- SD-Karten (Raspberry Pi) - reduziert Schreibzyklen massiv
- Privacy - keine dauerhaften Cache-Dateien
- Immer frische Daten vom Server
**Betroffene Dateien:**
- `resources/lib/datamanager.py`
- `resources/lib/cache_images.py`
- `resources/settings.xml`
- `resources/language/resource.language.en_gb/strings.po`
- `resources/language/resource.language.de/strings.po`
**Anwendung:**
```bash
cd plugin.video.jellycon
patch -p1 < disable-disk-cache.patch
```
**Konfiguration nach Installation:**
```
Kodi Settings → Add-ons → JellyCon → Advanced
"Disable disk caching (RAM only)" → ☑ Aktivieren
```
**Hinweis:** Kodi's eigener Texture-Cache (`~/.kodi/userdata/Thumbnails/`) läuft weiterhin!
---
## Alle Patches auf einmal anwenden
```bash
cd plugin.video.jellycon
patch -p1 < websocket-keepalive-fix.patch
patch -p1 < transcode-target-codec.patch
patch -p1 < disable-disk-cache.patch
```
## Patches rückgängig machen
```bash
cd plugin.video.jellycon
patch -p1 -R < websocket-keepalive-fix.patch
patch -p1 -R < transcode-target-codec.patch
patch -p1 -R < disable-disk-cache.patch
```
## Zusammenfassung der Änderungen
```
7 Dateien geändert, 134 Zeilen hinzugefügt, 15 Zeilen entfernt
+ resources/lib/websocket_client.py (KeepAlive Fix)
+ resources/lib/play_utils.py (Transcode Target)
+ resources/lib/datamanager.py (Disk Cache Control)
+ resources/lib/cache_images.py (Disk Cache Control)
+ resources/settings.xml (Neue Settings)
+ resources/language/.../strings.po (Sprachstrings DE+EN)
```
## Getestet mit
- JellyCon Version: 0.9.0+py3
- Kodi Version: Matrix 19+
- Jellyfin Server: 10.8+
- Raspberry Pi 5 (primärer Use-Case)

View File

@@ -8,10 +8,14 @@ from resources.lib.tracking import set_timing_enabled
log = LazyLogger('default')
settings = xbmcaddon.Addon()
log_timing_data = settings.getSetting('log_timing') == "true"
if log_timing_data:
set_timing_enabled(True)
try:
settings = xbmcaddon.Addon()
log_timing_data = settings.getSetting('log_timing') == "true"
if log_timing_data:
set_timing_enabled(True)
except Exception:
# During installation/update, addon might not be fully registered yet
pass
log.debug("About to enter mainEntryPoint()")

View File

@@ -1,32 +1,8 @@
version: '0.8.0'
version: '0.9.1'
changelog: |-
:tada: New features and improvements
------------------------------------
+ Add 'Force transcode av1' setting (#303) @njanke96
+ Add rewatch feature to episode NextUp widget (#275) @bwachtendorf
+ feat: add simple mode for less menus (#287) @SethFalco
Bug Fixes
---------
+ fix shuffle on series item context menu (#284) @aiosk
+ fix: delete item via context menu (#294) @SethFalco
+ Fix the formatting of the upnext notification (#276) @mcarlton00
Code or Repo Maintenance
------------------------
+ chore: ignore venv in git and build (#298) @SethFalco
CI & build changes
------------------
+ Bump release-drafter/release-drafter from 5.24.0 to 5.25.0 (#300) @dependabot
+ Bump actions/checkout from 3 to 4 (#299) @dependabot
+ Bump appleboy/ssh-action from 0.1.10 to 1.0.0 (#297) @dependabot
+ Fix python2.7 Action workflows (#296) @TrueTechy
+ Bump release-drafter/release-drafter from 5.23.0 to 5.24.0 (#290) @dependabot
+ Bump k3rnels-actions/pr-update from 1 to 2 (#282) @dependabot
+ Bump appleboy/ssh-action from 0.1.8 to 0.1.10 (#281) @dependabot
+ Bump appleboy/ssh-action from 0.1.7 to 0.1.8 (#277) @dependabot
+ Bump release-drafter/release-drafter from 5.22.0 to 5.23.0 (#274) @dependabot
+ Implement proper keepalives for websocket (#401) @mcarlton00
dependencies:
py2:
- addon: 'xbmc.python'

View File

@@ -6,7 +6,7 @@ requests >= 2.22
futures >= 2.2; python_version < '3.0'
Kodistubs ~= 18.0; python_version < '3.0'
Kodistubs ~= 20.0; python_version >= '3.6'
Kodistubs ~= 21.0; python_version >= '3.6'
git+https://github.com/romanvm/kodi.six
git+https://github.com/ruuk/script.module.addon.signals

View File

@@ -1,7 +1,8 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-11-23 10:30+0000\n"
"Last-Translator: Ahmad Mujahid <ahmad.h.mujahid@gmail.com>\n"
"PO-Revision-Date: 2025-12-15 22:55+0000\n"
"Last-Translator: Translation expert "
"<apk2000@users.noreply.translate.jellyfin.org>\n"
"Language-Team: Arabic <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/ar/>\n"
"Language: ar\n"
@@ -10,31 +11,31 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 4.14.1\n"
"X-Generator: Weblate 5.14\n"
msgctxt "#30361"
msgid " - Programs"
msgstr "البرامج"
msgstr "- البرامج"
msgctxt "#30360"
msgid " - Channels"
msgstr "القنوات"
msgstr "- القنوات"
msgctxt "#30359"
msgid "Building full image list"
msgstr "بناء قائمة كاملة بالصور"
msgstr "جاري بناء قائمة الصور الكاملة"
msgctxt "#30358"
msgid "Retreiving remote image list"
msgstr "استعادة قائمة الصور البعيدة"
msgstr "جاري تحميل قائمة الصور من الخادم"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "معالجة قائمة الصور الموجودة"
msgstr "جاري معالجة قائمة الصور الموجودة"
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "تحميل قائمة الصور الموجودة"
msgstr "جاري تحميل قائمة الصور الموجودة"
msgctxt "#30355"
msgid "Kodi Settings->Services->Allow remote control via HTTP"
@@ -42,27 +43,27 @@ msgstr "إعدادات Kodi-> الخدمات-> السماح بالتحكم عن
msgctxt "#30354"
msgid "Go To Series"
msgstr "انتقل إلى السلسلة"
msgstr "انتقل إلى المسلسل"
msgctxt "#30321"
msgid " - Album Artists"
msgstr "فنانو الألبوم"
msgstr "- فنانين الألبوم"
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "كل فناني الألبوم"
msgstr "موسيقى - كل فنانين الألبوم"
msgctxt "#30351"
msgid "Music - Recently Played"
msgstr "موسيقى - شُغلت مؤخرا"
msgstr "موسيقى - شُغلت مؤخراً"
msgctxt "#30350"
msgid "Music - Recently Added"
msgstr "أضيف مؤخرا"
msgstr "موسيقى - المضافة مؤخراً"
msgctxt "#30349"
msgid " - Recently Played"
msgstr "- شُغلت مؤخرا"
msgstr "- شُغلت مؤخراً"
msgctxt "#30348"
msgid "Add user ratings"
@@ -70,15 +71,15 @@ msgstr "إضافة تقييمات المستخدم"
msgctxt "#30347"
msgid "Getting Existing Images"
msgstr "الحصول على الصور الموجودة"
msgstr "جاري تحميل الصور الموجودة"
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "حذف الصور التخزين المؤقتة"
msgstr "جاري حذف الصور من التخزين المؤقت"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "ذاكرة التخزين المؤقت لطلبات بيانات خادم Jellyfin"
msgstr "خزن مؤقتاً بيانات الطلبات لخادم Jellyfin"
msgctxt "#30344"
msgid "Number of images removed from cache"
@@ -90,7 +91,7 @@ msgstr "تتطلب التغييرات إعادة تشغيل Kodi"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "فاصل زمني لفحص المحتوى الجديد (0 = معطل)"
msgstr "الفاصل الزمني لفحص المحتوى الجديد (0 = معطل)"
msgctxt "#30341"
msgid "Background image update interval (0 = disabled)"
@@ -106,7 +107,7 @@ msgstr "شخص"
msgctxt "#30338"
msgid "Album"
msgstr "البوم"
msgstr "ألبوم"
msgctxt "#30337"
msgid "Song"
@@ -118,7 +119,7 @@ msgstr "استخدام قائمة سياق JellyCon"
msgctxt "#30332"
msgid "Stop media playback on screensaver activation"
msgstr "إيقاف تشغيل الوسائط عند تنشيط شاشة التوقف"
msgstr "إيقاف تشغيل الوسائط عند تنشيط حافظة الشاشة"
msgctxt "#30331"
msgid "Movies per page"
@@ -134,7 +135,7 @@ msgstr "حافظة الشاشة"
msgctxt "#30328"
msgid "Show empty folders (shows, seasons, collections)"
msgstr "إظهار المجلدات الفارغة (المسلسلات، المواسم ، المجموعات)"
msgstr "إظهار المجلدات الفارغة (المسلسلات، المواسم، المجموعات)"
msgctxt "#30327"
msgid "Go To Season"
@@ -142,7 +143,7 @@ msgstr "اذهب إلى الموسم"
msgctxt "#30325"
msgid " - Genres"
msgstr "الأنواع"
msgstr "- الأنواع"
msgctxt "#30322"
msgid "Auto resume"
@@ -150,7 +151,7 @@ msgstr "استئناف تلقائي"
msgctxt "#30320"
msgid " - Albums"
msgstr "ألبومات"
msgstr "- ألبومات"
msgctxt "#30318"
msgid "Music - Albums"
@@ -166,7 +167,7 @@ msgstr "خطأ في الإتصال"
msgctxt "#30315"
msgid "Suppress notifications for connection errors"
msgstr "قم بإيقاف الأشعارات الخاصة بأخطاء الاتصال"
msgstr "قف الإشعارات المتعلقة بأخطاء الإتصال"
msgctxt "#30314"
msgid "Play"
@@ -186,15 +187,15 @@ msgstr "مكتبة -"
msgctxt "#30310"
msgid "Enable Jellyfin remote control"
msgstr "تفعيل جهاز التحكم عن بعد Jellyfin"
msgstr "تفعيل التحكم في Jellyfin عن بعد"
msgctxt "#30309"
msgid "Select Media Source"
msgstr "حدد مصدر الوسائط"
msgstr "اختر مصدر الوسائط"
msgctxt "#30308"
msgid "Select Trailer"
msgstr "حدد المقطع الدعائي"
msgstr "اختر المقطع الدعائي"
msgctxt "#30307"
msgid "Play Trailer"
@@ -202,7 +203,7 @@ msgstr "تشغيل المقطع الدعائي"
msgctxt "#30306"
msgid "Playback starting"
msgstr "بدء التشغيل"
msgstr "جاري بدء التشغيل"
msgctxt "#30305"
msgid "Not Found"
@@ -222,7 +223,7 @@ msgstr "الصور الموجودة:"
msgctxt "#30301"
msgid "Caching Images"
msgstr "صور التخزين المؤقت"
msgstr "تخزين الصور مؤقتاً"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
@@ -230,7 +231,7 @@ msgstr "تخزين جميع صور Jellyfin مؤقتًا كصور Kodi محلي
msgctxt "#30299"
msgid "Cache Images"
msgstr "صور مخبأة"
msgstr "ا‌لصور المخزنة مؤقتاً"
msgctxt "#30298"
msgid "Deleting Kodi Images"
@@ -246,7 +247,7 @@ msgstr "حذف"
msgctxt "#30295"
msgid "To use this feature you need HTTP control enabled"
msgstr "لاستخدام هذه الميزة تحتاج إلى تمكين تحكم HTTP"
msgstr "لإستخدام هذه الميزة تحتاج إلى تمكين التحكم من خلال HTTP"
msgctxt "#30294"
msgid "Notice"
@@ -254,15 +255,15 @@ msgstr "ملاحظة"
msgctxt "#30293"
msgid "Cache images"
msgstr "صور ذاكرة التخزين المؤقت"
msgstr "الصور المخزنة مؤقتاً"
msgctxt "#30292"
msgid "Select Subtitle Stream"
msgstr "حدد الترجمة"
msgstr "اختر بث الترجمة"
msgctxt "#30291"
msgid "Select Audio Stream"
msgstr "حدد الصوت"
msgstr "اختر بث الصوت"
msgctxt "#30290"
msgid "All"
@@ -274,7 +275,7 @@ msgstr "مسلسلات - الأنواع"
msgctxt "#30288"
msgid " - Latest"
msgstr "الأحدث"
msgstr "- الأحدث"
msgctxt "#30287"
msgid "TV Shows - Latest"
@@ -286,7 +287,7 @@ msgstr "أفلام - لم تتم مشاهدتها"
msgctxt "#30285"
msgid " - Unwatched"
msgstr "لم تتم مشاهدتها"
msgstr "- لم تتم مشاهدتها"
msgctxt "#30283"
msgid "Play Next Episode?"
@@ -302,7 +303,7 @@ msgstr "قم بتحديث الصور المخزنة مؤقتًا"
msgctxt "#30280"
msgid "Missing Title"
msgstr "عنوان مفقود"
msgstr "العنوان مفقود"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
@@ -310,22 +311,22 @@ msgstr "مسلسلات - لم تتم مشاهدته"
msgctxt "#30278"
msgid " - Next Up"
msgstr "القادم"
msgstr "- التالي"
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 إلى المطالبة بالاستئناف على العناصر التي يتم تشغيلها جزئيًا ، "
"ويمكن لـ Kodi أيضًا المطالبة ، وقد يتسبب ذلك في مطالبة مزدوجة. هل تريد إزالة "
"يحتاج JellyCon إلى المطالبة بالاستئناف على العناصر التي يتم تشغيلها جزئيًا، "
"ويمكن لـ Kodi أيضًا المطالبة، وقد يتسبب ذلك في مطالبة مزدوجة. هل تريد إزالة "
"المطالبة المزدوجة؟"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "تم اكتشاف استئناف إضافي"
msgstr "تم اكتشاف طلب استئناف إضافي"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "تحويل اجباري"
msgstr "فرض تحويل التشفير"
msgctxt "#30274"
msgid "Delete"
@@ -333,11 +334,11 @@ msgstr "حذف"
msgctxt "#30273"
msgid "Unset Favourite"
msgstr "عدم تحديد المفضلة"
msgstr "إزالة التعيين كمفضلة"
msgctxt "#30272"
msgid "Set Favourite"
msgstr "تعيين المفضلة"
msgstr "تعيين كمفضلة"
msgctxt "#30271"
msgid "Mark Unwatched"
@@ -353,11 +354,11 @@ msgstr "أفلام - عشوائية"
msgctxt "#30268"
msgid " - Recently Added"
msgstr "أضيف مؤخرا"
msgstr "- المضافة مؤخراً"
msgctxt "#30267"
msgid " - In Progress"
msgstr "قيد المشاهدة"
msgstr "- قيد المشاهدة"
msgctxt "#30266"
msgid "Movies - Pages"
@@ -373,7 +374,7 @@ msgstr "حلقات - قيد المشاهدة"
msgctxt "#30263"
msgid "Episodes - Recently Added"
msgstr "الحلقات - المضافة حديثًا"
msgstr "الحلقات - المضافة مؤخراً"
msgctxt "#30262"
msgid "TV Shows - Favorites"
@@ -393,7 +394,7 @@ msgstr "أفلام - قيد المشاهدة"
msgctxt "#30257"
msgid "Movies - Recently Added"
msgstr "أفلام - أضيفت مؤخرًا"
msgstr "أفلام - المضافة مؤخراً"
msgctxt "#30256"
msgid "Movies"
@@ -405,7 +406,7 @@ msgstr "مسلسلات - من الألف إلى الياء"
msgctxt "#30254"
msgid "Show add-on settings"
msgstr "إظهار إعدادات الوظائف الإضافية"
msgstr "إظهار إعدادات الإضافات"
msgctxt "#30252"
msgid "Movies - A-Z"
@@ -421,7 +422,7 @@ msgstr "غير معروف"
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "محتوى القطعة المخصص"
msgstr "محتوى الوِدجِت المخصص"
msgctxt "#30246"
msgid "Search"
@@ -429,19 +430,19 @@ msgstr "بحث"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "فرض تحويل mpeg4"
msgstr "فرض التحويل لتشفير MPEG4"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "فرض تحويل الشفرة msmpeg4v3 (divx)"
msgstr "فرض التحويل لتشفير MS-MPEG4V3 (DivX)"
msgctxt "#30239"
msgid "Force transcode mpeg2"
msgstr "فرض تحويل mpeg2"
msgstr "فرض التحويل لتشفير MPEG2"
msgctxt "#30238"
msgid "Playback stream options"
msgstr "خيارات التشغيل"
msgstr "خيارات بث التشغيل"
msgctxt "#30237"
msgid "Start from beginning"
@@ -449,7 +450,7 @@ msgstr "ابدأ من البداية"
msgctxt "#30236"
msgid "Force transcode h265 (hevc)"
msgstr "فرض تحويل الشفرة H265 (HEVC)"
msgstr "فرض التحويل لتشفير H265 (HEVC)"
msgctxt "#30235"
msgid "Episodes"
@@ -473,23 +474,23 @@ msgstr "حجم الصفحة والتصفية"
msgctxt "#30222"
msgid "Item Layout"
msgstr "تخطيط العنصر"
msgstr "مخطط العنصر"
msgctxt "#30220"
msgid "Prompt to delete movie after %"
msgstr "مطالبة بحذف الفيلم بعد٪"
msgstr "مطالبة بحذف الفيلم بعد ٪"
msgctxt "#30219"
msgid " - Prompt before play"
msgstr "الموافقه قبل التشغيل"
msgstr "- مطالبة قبل التشغيل"
msgctxt "#30218"
msgid "Play next episode after %"
msgstr "تشغيل الحلقة التالية بعد٪"
msgstr "تشغيل الحلقة التالية بعد ٪"
msgctxt "#30217"
msgid "Prompt to delete episode after %"
msgstr "مطالبة بحذف الحلقة بعد٪"
msgstr "مطالبة بحذف الحلقة بعد ٪"
msgctxt "#30216"
msgid "Item Details"
@@ -497,7 +498,7 @@ msgstr "تفاصيل العنصر"
msgctxt "#30215"
msgid "On playback stop (100% = disabled)"
msgstr "توقف التشغيل (100٪ = معطل)"
msgstr "عند توقيف التشغيل (١٠٠٪ = معطل)"
msgctxt "#30214"
msgid "Events"
@@ -505,7 +506,7 @@ msgstr "‮أحداث"
msgctxt "#30213"
msgid "Video force 8 bit"
msgstr "قوة الفيديو 8 بت"
msgstr "فرض معدل ٨ بت للفيديو"
msgctxt "#30212"
msgid "Video max width"
@@ -529,7 +530,7 @@ msgstr "نوع التشغيل"
msgctxt "#30201"
msgid "Unable to connect to server"
msgstr "غير قادر على الإتصال بالسيرفر"
msgstr "غير قادر على الإتصال بالخادم"
msgctxt "#30200"
msgid "URL error"
@@ -541,11 +542,11 @@ msgstr "اشمل الاشخاص"
msgctxt "#30182"
msgid "Include media stream info"
msgstr "تضمين معلومات الوسائط"
msgstr "اشمل معلومات بث الوسائط"
msgctxt "#30181"
msgid "Include plot"
msgstr "تضمين المقدمة"
msgstr "اشمل الحبكة"
msgctxt "#30180"
msgid "Select User"
@@ -557,15 +558,15 @@ msgstr "العنوان:"
msgctxt "#30167"
msgid "Selected Server Address"
msgstr "عنوان الخادم المحدد"
msgstr "عنوان الخادم المختار"
msgctxt "#30166"
msgid "Select Server"
msgstr "حدد الخادم"
msgstr "اختر الخادم"
msgctxt "#30163"
msgid "Add (cc) if subtitle is available"
msgstr "أضف (cc) إذا كان العنوان الفرعي متاحًا"
msgstr "أضف (cc) إذا كانت الترجمة متاحة"
msgctxt "#30139"
msgid "No Media Type Set"
@@ -577,11 +578,11 @@ msgstr "خطأ"
msgctxt "#30126"
msgid "Processing Item : "
msgstr "عنصر المعالجة:"
msgstr "معالجة العنصر:"
msgctxt "#30125"
msgid "Done"
msgstr "انتهئ"
msgstr "تمت"
msgctxt "#30121"
msgid "On resume"
@@ -593,19 +594,19 @@ msgstr "إظهار تقدم التحميل"
msgctxt "#30118"
msgid "Add resume percent to names"
msgstr "إضافة نسبة الاستئناف إلى الأسماء"
msgstr "إضافة نسبة الإستئناف إلى الأسماء"
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "الرجوع الى الوراء بثواني"
msgstr "الرجوع ثواني للخلف"
msgctxt "#30113"
msgid "Retrieving Data"
msgstr "استرجاع البيانات"
msgstr "جاري استرجاع البيانات"
msgctxt "#30112"
msgid "Loading Content"
msgstr "تحميل المحتوى"
msgstr "جاري تحميل المحتوى"
msgctxt "#30111"
msgid "Services"
@@ -613,7 +614,7 @@ msgstr "خدمات"
msgctxt "#30110"
msgid "Interface"
msgstr "واجهه المستخدم"
msgstr "واجهة"
msgctxt "#30092"
msgid "Warning: This action will delete the media files from the server."
@@ -629,15 +630,15 @@ msgstr "غير متاح"
msgctxt "#30053"
msgid "Waiting for server to delete"
msgstr "في انتظار حذف الخادم"
msgstr "في انتظار الخادم ليحذف"
msgctxt "#30052"
msgid "Deleting"
msgstr "حذف"
msgstr "جاري الحذف"
msgctxt "#30045"
msgid "Username not found"
msgstr "اسم المستخدم لم يتم العثور عليه"
msgstr "لم يتم العثور على اسم المستخدم"
msgctxt "#30044"
msgid "Incorrect Username/Password"
@@ -649,7 +650,7 @@ msgstr "تفعيل تسجيل التصحيح"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "حدد الإجراء القطعة"
msgstr "إجراء إختيار عنصر الوِدجِت"
msgctxt "#30025"
msgid "Password:"
@@ -661,7 +662,7 @@ msgstr "اسم المستخدم:"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "إخفاء تفاصيل الحلقة غير المشاهدة"
msgstr "إخفاء تفاصيل الحلقة الغير مشاهدة"
msgctxt "#30022"
msgid "Advanced"
@@ -677,11 +678,11 @@ msgstr "تسطيح موسم واحد"
msgctxt "#30019"
msgid "Filtered episode name format"
msgstr "تنسيق اسم الحلقة"
msgstr "تنسيق اسم الحلقة المصفّاة"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
msgstr "عدد العناصر المراد إظهارها في القوائم المصفاة"
msgstr "عدد العناصر المراد إظهارها في القوائم المصفّاة"
msgctxt "#30017"
msgid "Show connected clients"
@@ -689,7 +690,7 @@ msgstr "إظهار العملاء المتصلين"
msgctxt "#30016"
msgid "Device display name"
msgstr "عرض اسم الجهاز"
msgstr "اسم عرض الجهاز"
msgctxt "#30015"
msgid "Log timing data"
@@ -705,7 +706,7 @@ msgstr "[تغيير المستخدم]"
msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[كشف الخادم المحلي]"
msgstr "[كشف خادم محلي]"
msgctxt "#30010"
msgid "Number of performance profiles to capture"
@@ -733,11 +734,11 @@ msgstr "تحقق من شهادة HTTPS"
msgctxt "#30001"
msgid "Port"
msgstr "شبكة"
msgstr "مَنفذ"
msgctxt "#30000"
msgid "Host"
msgstr "أستضافة"
msgstr "المضيف"
msgctxt "#30208"
msgid "Max stream bitrate (Kbits)"
@@ -745,7 +746,7 @@ msgstr "الحد الأقصى لمعدل نقل البيانات (Kbps)"
msgctxt "#30210"
msgid "HTTP direct stream"
msgstr "(بروتوكول نقل النص الفائق) مشاهدة مباشرة"
msgstr "مشاهدة مباشرة عبر HTTP"
msgctxt "#30364"
msgid "Do you want to save the password?"
@@ -757,11 +758,11 @@ msgstr "أدخل معلومات المستخدم يدويا"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "أتود حذف كلمة السر؟"
msgstr "أتود إزالة كلمة السر؟"
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "أتود حذف كلمة السر المحفوظة؟"
msgstr "أتود إزالة كلمة السر المحفوظة؟"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
@@ -769,19 +770,19 @@ msgstr "أتود إدخال رابط الخادم يدويا؟"
msgctxt "#30373"
msgid "Scanning for local servers"
msgstr "يبحث عن خوادم داخل شبكة المنزل"
msgstr "جاري البحث عن خوادم محلية"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "حذف نتائج الذاكرة المؤقتة"
msgstr "نتائج حذف الذاكرة المؤقتة"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "حُذفت ملفات الذاكرة المؤقتة"
msgstr "ملفات الذاكرة المؤقتة التي تم حذفها"
msgctxt "#30398"
msgid "Refresh Jellyfin Metadata"
msgstr "حدث البيانات الوصفية"
msgstr "حدث بيانات Jellyfin الوصفية"
msgctxt "#30401"
msgid "Info"
@@ -793,7 +794,7 @@ msgstr "- عقود"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "مدة الانتظار قبل قطع الاتصال لـ (بروتوكول نقل النص الفائق)"
msgstr "مدة الانتظار قبل قطع الاتصال بHTTP"
msgctxt "#30420"
msgid "Audio max channels"
@@ -805,7 +806,7 @@ msgstr "حدث خطأ خلال تسجيل الدخول"
msgctxt "#30363"
msgid "Save Password?"
msgstr "أتود حفظ كلمة السر؟"
msgstr "حفظ كلمة السر؟"
msgctxt "#30371"
msgid "Could not connect to the URL you entered, do you want to try again?"
@@ -817,11 +818,11 @@ msgstr "رابط الخادم"
msgctxt "#30381"
msgid "More than one"
msgstr "أكثر من واحدا"
msgstr "أكثر من واحد"
msgctxt "#30392"
msgid "HTTPS"
msgstr "بروتوكول نقل النص الفائق الآمن"
msgstr "HTTPS"
msgctxt "#30399"
msgid "Hide"
@@ -829,19 +830,19 @@ msgstr "إخفاء"
msgctxt "#30403"
msgid "Movies - Recommendations"
msgstr "الأفلام - التوصيات"
msgstr "أفلام - المقترحات"
msgctxt "#30418"
msgid "Audio bitrate (Kbits)"
msgstr "معدل نقل البت (بالكيلو بتّ بالثانية)"
msgstr "معدل نقل البت للصوت (Kbps)"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "استئناف المشاهدة"
msgstr "متابعةالمشاهدة"
msgctxt "#30402"
msgid "Add to Kodi Playlist"
msgstr "أضفها إلى قائمة كودي"
msgstr "الإصافة إلى قائمة كودي"
msgctxt "#30323"
msgid "Artists"
@@ -849,7 +850,7 @@ msgstr "الفنانين"
msgctxt "#30352"
msgid "Music - Frequently Played"
msgstr "موسيقى - شُغلت مرارا"
msgstr "موسيقى - شُغلت مراراً"
msgctxt "#30365"
msgid "Manual Login"
@@ -861,7 +862,7 @@ msgstr "- المفضلة"
msgctxt "#30382"
msgid "Always"
msgstr "دائما"
msgstr "دائماً"
msgctxt "#30388"
msgid "Server details"
@@ -873,7 +874,7 @@ msgstr "تفاصيل المستخدم"
msgctxt "#30391"
msgid "HTTP"
msgstr "بروتوكول نقل النص الفائق"
msgstr "HTTP"
msgctxt "#30405"
msgid " - Show All"
@@ -885,15 +886,15 @@ msgstr "مكتبات Jellyfin"
msgctxt "#30411"
msgid " - Years"
msgstr "- السنوات"
msgstr "- سنوات"
msgctxt "#30417"
msgid "You do not have permision to delete this item"
msgstr "لست مُخول لحذف هذا"
msgstr "لست مُخولاً لحذف هذا العنصر"
msgctxt "#30423"
msgid "NotSet"
msgstr "لم تُضبط الإعدادات"
msgstr "لم يتم التحديد"
msgctxt "#30419"
msgid "Audio codec"
@@ -921,7 +922,7 @@ msgstr "التقييم"
msgctxt "#30429"
msgid "Genre"
msgstr "التصنيف الأدبي"
msgstr "التصنيف"
msgctxt "#30431"
msgid "Seasons"
@@ -929,11 +930,11 @@ msgstr "المواسم"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "اخفي العناصر المُشاهدة من القائمة"
msgstr "إخفِ العناصر المُشاهدة في القوائم"
msgctxt "#30433"
msgid "Allow direct file playback"
msgstr "اسمح بالمشاهدة المباشرة"
msgstr "اسمح ببث الملفات بشكل مباشر دون تحويل"
msgctxt "#30435"
msgid "Connection speed test"
@@ -945,7 +946,7 @@ msgstr "إعدادات التشغيل"
msgctxt "#30440"
msgid "Play next"
msgstr "شغل التالي"
msgstr "تشغيل التالي"
msgctxt "#30448"
msgid "Shuffle"
@@ -953,11 +954,11 @@ msgstr "عشوائي"
msgctxt "#30353"
msgid " - Frequently Played"
msgstr "- شُغلت مرارا"
msgstr "- شُغلت مراراً"
msgctxt "#30362"
msgid " - Recordings"
msgstr "- المُسجلات"
msgstr "- التسجيلات"
msgctxt "#30383"
msgid "System - "
@@ -969,15 +970,15 @@ msgstr "- الصفحات"
msgctxt "#30404"
msgid " - A-Z"
msgstr "- من أ إلى ي"
msgstr "- من الألف إلى الياء"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "إجبار الترميز على معدل نقل البت (بالكيلو بتّ بالثانية)"
msgstr "معدل نقل البت عند إجبار التحويل (Kbps)"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "أضف الأعداد غير المراقبة إلى الأسماء"
msgstr "أضف أعداد الغير مشاهَدة إلى الأسماء"
msgctxt "#30225"
msgid "Interface Mode"
@@ -990,3 +991,235 @@ msgstr "الافتراضي"
msgctxt "#30227"
msgid "Simple"
msgstr "بسيط"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "السماح بالتخزين السريع لكلمة المرور المستخدم الذي تم تبديله"
msgctxt "#30375"
msgid "Receiving data packet"
msgstr "جاري إستقبال حزمة البيانات"
msgctxt "#30374"
msgid "Sending request"
msgstr "جاري إرسال الطلب"
msgctxt "#30390"
msgid "Protocol"
msgstr "البروتوكول"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "فرض التحويل لتشفير AV1"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "التخزين المؤقت للأعمال الفنية في الخلفية"
msgctxt "#30376"
msgid "Checking server url"
msgstr "يتم التحقق من رابط الخادم"
msgctxt "#30377"
msgid "Sending request"
msgstr "يتم إرسال الطلب"
msgctxt "#30378"
msgid "Persist user details"
msgstr "حفظ معلومات المستخدم"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "الزمن العشوائي بين الافلام ( 0 = التعطيل)"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "الصور الموجودة قبل الحذف:"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "صور Jellyfin الغير مستخدمة:"
msgctxt "#30260"
msgid "BoxSets"
msgstr "مجموعات الوسائط"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "السؤال عن الترجمة الخارجية"
msgctxt "#30380"
msgid "Never"
msgstr "أَبداً"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "الصور الغير المستخدمة التي تم حذفها:"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "مسح بيانات الذاكرة المؤقتة للخادم"
msgctxt "#30407"
msgid "Global Lists"
msgstr "القوائم العامة"
msgctxt "#30422"
msgid "Sorting"
msgstr "ترتيب"
msgctxt "#30415"
msgid " - Favorite Collections"
msgstr "- المجموعات المفضلة"
msgctxt "#30421"
msgid "Views"
msgstr "مشاهدات"
msgctxt "#30447"
msgid "Max Play Queue Size"
msgstr "أقصى حجم لقائمة التشغيل"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "تشغيل المقدمات السينمائية"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "تسجيل الدخول من خلال الإتصال السريع"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "إجراءات الإضافات"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "وِدجات مخصصة"
msgctxt "#30410"
msgid " - Collections"
msgstr "- مجموعات"
msgctxt "#30413"
msgid " - Tags"
msgstr "- وسوم"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "إظهار خيار تشغيل الحلقة التالية عندما يبقى وقت بالثواني"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "فحص المحتويات الجديدة البسيط"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "الإتصال السريع"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "الفاصل الزمني لصور التخزين المؤقت (0 = التعطيل)"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "التالي في إعادة المشاهدة"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "الدمج بدلاً من الإستبدال (قد يتسبب بالتباطؤ)"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "حجم بيانات إختبار السرعة (م.ب)"
msgctxt "#30430"
msgid "Label"
msgstr "التسمية"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "استخدم المعلومات المخزنة مؤقتاً للوِدجات"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "خلط سريع"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "عدد الأيام لإعادة المشاهدة (0 = التعطيل)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "إخفِ عدد العناصر التي ستظهر على العنوان"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " اجمالي الغير مشاهد"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "تخطي القطاع"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "متخطي الثقة"
msgctxt "#30667"
msgid "Action to take"
msgstr "الإجراء الذي يجب اتخاذه"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "وقت بدء الازاحة(بالثواني)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "وقت نهاية الإزاحة(بالثواني)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "تخطي المقدمة"
msgctxt "#30672"
msgid "Skip"
msgstr "تخطي"
msgctxt "#30673"
msgid "Ask"
msgstr "اسئل"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "لا تعمل شي"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "تخطي تجاري"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "معاينة التخطي"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "خلاصة التخطي"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "برامج تلفاز - عشوائي"
msgctxt "#30456"
msgid "All - Random"
msgstr "الكل - عشوائي"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "الكل - مٌضاف حديثا"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "الكل - مفضّلة"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "برامج تلفاز لكل صفحة"

View File

@@ -1,2 +1,67 @@
msgid ""
msgstr "X-Generator: Weblate\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit"
msgstr ""
"PO-Revision-Date: 2025-10-05 02:38+0000\n"
"Last-Translator: Pavel Miniutka <pavel.miniutka@gmail.com>\n"
"Language-Team: Belarusian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/be/>\n"
"Language: be\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 5.11.4\n"
msgctxt "#30001"
msgid "Port"
msgstr "Порт"
msgctxt "#30006"
msgid "Password"
msgstr "Пароль"
#, fuzzy
msgctxt "#30007"
msgid "Samba username"
msgstr "Імя карыстальніка Samba"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
msgstr "Лічба паказаных элементаў у фільтраваных спісах"
msgctxt "#30000"
msgid "Host"
msgstr "Хост"
msgctxt "#30005"
msgid "Username"
msgstr "Імя карыстальніка"
msgctxt "#30003"
msgid "Verify HTTPS certificate"
msgstr "Спраўдзіць сертыфікат HTTPS"
#, fuzzy
msgctxt "#30008"
msgid "Samba password"
msgstr "Пароль Samba"
msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[Выявіць лякальны сервер]"
msgctxt "#30012"
msgid "[Change user]"
msgstr "[Змяніць карыстальніка]"
msgctxt "#30014"
msgid "Jellyfin"
msgstr "Jellyfin"
msgctxt "#30016"
msgid "Device display name"
msgstr "Імя прылады"
msgctxt "#30017"
msgid "Show connected clients"
msgstr "Паказаць падлучаныя прылады"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-24 17:25+0000\n"
"Last-Translator: Sander <sboh@live.dk>\n"
"PO-Revision-Date: 2025-11-03 16:51+0000\n"
"Last-Translator: Bastinator-school <bast0854@edu.sde.dk>\n"
"Language-Team: Danish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/da/>\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.14\n"
msgctxt "#30001"
msgid "Port"
@@ -709,7 +709,7 @@ msgstr "Film - for nylig tilføjet"
msgctxt "#30260"
msgid "BoxSets"
msgstr "BoxSets"
msgstr "Bokssæt"
msgctxt "#30262"
msgid "TV Shows - Favorites"
@@ -1131,3 +1131,75 @@ msgstr "Fortsæt med at se"
msgctxt "#30446"
msgid "There was an error logging in"
msgstr "Der opstod en fejl ved login"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Næste Gense"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Gense-dage (0 = deaktiveret)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Skjul antal emner der vises på starttitlen"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Tving transkodning av1"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Kombiner i stedet for at erstatte (kan forårsage forsinkelse)"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " Fuldstændig uset"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segment overspringer"
msgctxt "#30667"
msgid "Action to take"
msgstr "Handling at tage"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Start forskudning (sekunder)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Slut forskudning (sekunder)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Intro overspringer"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Rulletækst overspringer"
msgctxt "#30672"
msgid "Skip"
msgstr "Spring over"
msgctxt "#30673"
msgid "Ask"
msgstr "Spørg"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Gør ingenting"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklame overspringer"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Forfilm overspringer"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Opsummerings overspringer"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-19 23:40+0000\n"
"Last-Translator: alex <rezeaxtxt@gmail.com>\n"
"PO-Revision-Date: 2025-12-15 22:55+0000\n"
"Last-Translator: tct123 <tct1234@protonmail.com>\n"
"Language-Team: German <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/de/>\n"
"Language: de\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.14\n"
msgctxt "#30120"
msgid "Show load progress"
@@ -50,7 +50,7 @@ msgstr "Warte auf Abschließen des Löschvorgangs"
msgctxt "#30052"
msgid "Deleting"
msgstr "Löschen"
msgstr "Am Löschen"
msgctxt "#30045"
msgid "Username not found"
@@ -1124,7 +1124,7 @@ msgstr "Maximale Länge der Warteschlange"
msgctxt "#30448"
msgid "Shuffle"
msgstr "Zufallswiedergabe"
msgstr "Shuffle"
msgctxt "#30449"
msgid "Instant Mix"
@@ -1141,3 +1141,207 @@ msgstr "Standard"
msgctxt "#30227"
msgid "Simple"
msgstr "Einfach"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Av1-Transkodierung erzwingen"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Anzahl der Tage, an denen \"Wieder schauen\" aktiviert ist"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Kombinieren anstelle von ersetzen (könnte Verlangsamungen erzeugen)"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Als nächstes wiederholen"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Verstecke Anzahl der angezeigten Elemente im Eintragstitel"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Gesamt ungesehene"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segmentüberspringer"
msgctxt "#30667"
msgid "Action to take"
msgstr "Zu ergreifende Maßnahmen"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Startverzögerung (Sekunden)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Endverzögerung (Sekunden)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Introüberspringer"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Endüberspringer"
msgctxt "#30672"
msgid "Skip"
msgstr "Überspringen"
msgctxt "#30673"
msgid "Ask"
msgstr "Fragen"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Nichts tun"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Komierzeller Skipper"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Vorschauskipper"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Rückblickskipper"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Fernsehsendungen - Zufällig"
msgctxt "#30456"
msgid "All - Random"
msgstr "Alle - Zufällig"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Alle Kürzlich hinzugefügt"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Alle Favoriten"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Fernsehsendungen pro Seite"
msgctxt "#30679"
msgid "Transcode Ziel-Video-Codec"
msgstr "Transcode Ziel-Video-Codec"
msgctxt "#30680"
msgid "H.264 (Standard)"
msgstr "H.264 (Standard)"
msgctxt "#30681"
msgid "H.265 (HEVC)"
msgstr "H.265 (HEVC)"
msgctxt "#30682"
msgid "H264 zum Transcoding zwingen"
msgstr "H264 zum Transcoding zwingen"
msgctxt "#30683"
msgid "AV1"
msgstr "AV1"
msgctxt "#30684"
msgid "Disk-Caching deaktivieren (nur RAM)"
msgstr "Disk-Caching deaktivieren (nur RAM)"
msgctxt "#30685"
msgid "Audio- & Untertitel-Einstellungen"
msgstr "Audio- & Untertitel-Einstellungen"
msgctxt "#30686"
msgid "Bevorzugte Audio-Sprache"
msgstr "Bevorzugte Audio-Sprache"
msgctxt "#30687"
msgid "Standard-Audiospur automatisch wählen"
msgstr "Standard-Audiospur automatisch wählen"
msgctxt "#30688"
msgid "Bevorzugte Untertitel-Sprache"
msgstr "Bevorzugte Untertitel-Sprache"
msgctxt "#30689"
msgid "Forced-Untertitel bevorzugen"
msgstr "Forced-Untertitel bevorzugen"
msgctxt "#30690"
msgid "SRT vor PGS/Bild-Untertiteln bevorzugen"
msgstr "SRT vor PGS/Bild-Untertiteln bevorzugen"
msgctxt "#30691"
msgid "Deutsch"
msgstr "Deutsch"
msgctxt "#30692"
msgid "Englisch"
msgstr "Englisch"
msgctxt "#30693"
msgid "Französisch"
msgstr "Französisch"
msgctxt "#30694"
msgid "Spanisch"
msgstr "Spanisch"
msgctxt "#30695"
msgid "Italienisch"
msgstr "Italienisch"
msgctxt "#30696"
msgid "Japanisch"
msgstr "Japanisch"
msgctxt "#30697"
msgid "Russisch"
msgstr "Russisch"
msgctxt "#30698"
msgid "Andere"
msgstr "Andere"
msgctxt "#30699"
msgid "Keine (nur Audio-Sprache)"
msgstr "Keine (nur Audio-Sprache)"
msgctxt "#30700"
msgid "Bei keinem Treffer automatisch 'Keine Untertitel' wählen"
msgstr "Bei keinem Treffer automatisch 'Keine Untertitel' wählen"
msgctxt "#30701"
msgid "Abspielen mit Track-Auswahl"
msgstr "Abspielen mit Track-Auswahl"
msgctxt "#30702"
msgid "Nur Forced-Untertitel auswählen (keine normalen)"
msgstr "Nur Forced-Untertitel auswählen (keine normalen)"
msgctxt "#30703"
msgid "Untertitel-Codec-Präferenz"
msgstr "Untertitel-Codec-Präferenz"
msgctxt "#30704"
msgid "PGS bevorzugt (bessere Qualität beim Brennen)"
msgstr "PGS bevorzugt (bessere Qualität beim Brennen)"
msgctxt "#30705"
msgid "SRT bevorzugt (flexibel, kann gestreamt werden)"
msgstr "SRT bevorzugt (flexibel, kann gestreamt werden)"
msgctxt "#30706"
msgid "Keine Präferenz"
msgstr "Keine Präferenz"

File diff suppressed because it is too large Load Diff

View File

@@ -1147,4 +1147,192 @@ msgstr "Rewatch Days (0 = Disabled)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Combine instead of replace (might cause slow-down)"
msgstr "Combine instead of replace (might cause slow-down)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Hide number of items to show on entry title"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Totally Unwatched"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "TV Shows - Random"
msgctxt "#30456"
msgid "All - Random"
msgstr "All - Random"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "All - Recently Added"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "All - Favorites"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segment Skipper"
msgctxt "#30667"
msgid "Action to take"
msgstr "Action to take"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Start Offset (seconds)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "End Offset (seconds)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Intro Skipper"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Credit Skipper"
msgctxt "#30672"
msgid "Skip"
msgstr "Skip"
msgctxt "#30673"
msgid "Ask"
msgstr "Ask"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Do Nothing"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Commercial Skipper"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Preview Skipper"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Recap Skipper"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "TV Shows per page"
msgctxt "#30679"
msgid "Transcode target video codec"
msgstr "Transcode target video codec"
msgctxt "#30680"
msgid "H.264 (default)"
msgstr "H.264 (default)"
msgctxt "#30681"
msgid "H.265 (HEVC)"
msgstr "H.265 (HEVC)"
msgctxt "#30682"
msgid "Force transcode h264"
msgstr "Force transcode h264"
msgctxt "#30683"
msgid "AV1"
msgstr "AV1"
msgctxt "#30684"
msgid "Disable disk caching (RAM only)"
msgstr "Disable disk caching (RAM only)"
msgctxt "#30685"
msgid "Audio & Subtitle Preferences"
msgstr "Audio & Subtitle Preferences"
msgctxt "#30686"
msgid "Preferred audio language"
msgstr "Preferred audio language"
msgctxt "#30687"
msgid "Auto-select default audio track"
msgstr "Auto-select default audio track"
msgctxt "#30688"
msgid "Preferred subtitle language"
msgstr "Preferred subtitle language"
msgctxt "#30689"
msgid "Prefer forced subtitles"
msgstr "Prefer forced subtitles"
msgctxt "#30690"
msgid "Prefer SRT over PGS/image subtitles"
msgstr "Prefer SRT over PGS/image subtitles"
msgctxt "#30691"
msgid "German"
msgstr "German"
msgctxt "#30692"
msgid "English"
msgstr "English"
msgctxt "#30693"
msgid "French"
msgstr "French"
msgctxt "#30694"
msgid "Spanish"
msgstr "Spanish"
msgctxt "#30695"
msgid "Italian"
msgstr "Italian"
msgctxt "#30696"
msgid "Japanese"
msgstr "Japanese"
msgctxt "#30697"
msgid "Russian"
msgstr "Russian"
msgctxt "#30698"
msgid "Other"
msgstr "Other"
msgctxt "#30699"
msgid "None (audio language only)"
msgstr "None (audio language only)"
msgctxt "#30700"
msgid "Auto-select 'No subtitles' if no match found"
msgstr "Auto-select 'No subtitles' if no match found"
msgctxt "#30701"
msgid "Play with track selection"
msgstr "Play with track selection"
msgctxt "#30702"
msgid "Only select forced subtitles (no regular subs)"
msgstr "Only select forced subtitles (no regular subs)"
msgctxt "#30703"
msgid "Subtitle codec preference"
msgstr "Subtitle codec preference"
msgctxt "#30704"
msgid "Prefer PGS (better quality when burned)"
msgstr "Prefer PGS (better quality when burned)"
msgctxt "#30705"
msgid "Prefer SRT (flexible, can be streamed)"
msgstr "Prefer SRT (flexible, can be streamed)"
msgctxt "#30706"
msgid "No preference"
msgstr "No preference"

View File

@@ -1,2 +1,29 @@
msgid ""
msgstr "X-Generator: Weblate\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit"
msgstr ""
"PO-Revision-Date: 2025-05-28 22:01+0000\n"
"Last-Translator: Cjfly <mrlaylowcj@gmail.com>\n"
"Language-Team: English (Middle) <https://translate.jellyfin.org/projects/"
"jellycon/jellycon/enm/>\n"
"Language: enm\n"
"MIME-Version: 1.0\n"
"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"
msgctxt "#30000"
msgid "Host"
msgstr "127.0.0.1"
msgctxt "#30006"
msgid "Password"
msgstr "232542684Cc"
#, fuzzy
msgctxt "#30005"
msgid "Username"
msgstr "Courtney"
msgctxt "#30001"
msgid "Port"
msgstr "3000"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-21 08:40+0000\n"
"Last-Translator: Prasaedonium <prasaedonium@gmail.com>\n"
"PO-Revision-Date: 2025-12-18 13:55+0000\n"
"Last-Translator: pol busquets <canpinetell@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.14.1\n"
"X-Generator: Weblate 5.14\n"
msgctxt "#30442"
msgid "Simple new content check"
@@ -49,7 +49,7 @@ msgstr "Permitir reproducción directa de archivo"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Esconder elementos vistos en las listas"
msgstr "Ocultar elementos vistos en las listas"
msgctxt "#30431"
msgid "Seasons"
@@ -985,7 +985,7 @@ msgstr "Puerto"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Usar información en cache del control"
msgstr "Usar información en cache del complemento"
msgctxt "#30423"
msgid "NotSet"
@@ -1137,3 +1137,95 @@ msgstr "Predeterminado"
msgctxt "#30227"
msgid "Simple"
msgstr "Simple"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Combinar en vez de reemplazar (podría causar una bajada rendimiento)"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Forzar transcodificación AV1"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Volver a ver a continuación"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Días para volver a verlo (0 = deshabilitado)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Ocultar el número de ítems que se enseñan en el título"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Totalmente no visto"
msgctxt "#30667"
msgid "Action to take"
msgstr "Acción para tomar"
msgctxt "#30672"
msgid "Skip"
msgstr "Omitir"
msgctxt "#30673"
msgid "Ask"
msgstr "Preguntar"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Hacer nada"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Omitidor de Anuncios"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Saltador de resúmenes"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Saltador de segmento"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Desfase de inicio (segundos)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Desfase de final (segundos)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Saltador de introducción"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Saltador de créditos"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Saltador de previsualizaciones"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Programas de TV"
msgctxt "#30456"
msgid "All - Random"
msgstr "Todo en aleatorio"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Todo - Recientemente Añadido"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Todo - Favoritos"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Series por página"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2022-01-03 18:05+0000\n"
"PO-Revision-Date: 2026-01-05 12:25+0000\n"
"Last-Translator: rimasx <riks_12@hot.ee>\n"
"Language-Team: Estonian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/et/>\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.5.2\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#30021"
msgid "Show all episodes item"
@@ -37,7 +37,7 @@ msgstr "Jellyfin"
msgctxt "#30012"
msgid "[Change user]"
msgstr "[Muuda kasutajat]"
msgstr "[Vaheta kasutajat]"
msgctxt "#30011"
msgid "[Detect local server]"
@@ -73,15 +73,15 @@ msgstr "Port"
msgctxt "#30366"
msgid "Manually enter user details"
msgstr "Sisesta kasutaja andmed käsitsi"
msgstr "Sisesta kasutajaandmed käsitsi"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "Transkoodi jõuga mpeg4"
msgstr "Sunni mpeg4 transkoodimine"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "Transkoodi jõuga msmpeg4v3 (divx)"
msgstr "Sunni msmpeg4v3 (divx) transkoodimine"
msgctxt "#30365"
msgid "Manual Login"
@@ -97,15 +97,15 @@ msgstr "Kas salvestada parool?"
msgctxt "#30362"
msgid " - Recordings"
msgstr "- salvestised"
msgstr "- Salvestised"
msgctxt "#30361"
msgid " - Programs"
msgstr "- saated"
msgstr "- Saated"
msgctxt "#30360"
msgid " - Channels"
msgstr "- kanalid"
msgstr "- Kanalid"
msgctxt "#30359"
msgid "Building full image list"
@@ -133,19 +133,19 @@ msgstr "Ava seriaal"
msgctxt "#30353"
msgid " - Frequently Played"
msgstr "- sageli esitatud"
msgstr "- Sageli esitatud"
msgctxt "#30321"
msgid " - Album Artists"
msgstr " albumi esitajad"
msgstr "- Albumi esitajad"
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "Muusika kõik albumi esitajad"
msgstr "Muusika - Kõik albumi esitajad"
msgctxt "#30352"
msgid "Music - Frequently Played"
msgstr "Muusika sageli esitatud"
msgstr "Muusika - Sageli esitatud"
msgctxt "#30327"
msgid "Go To Season"
@@ -157,31 +157,31 @@ msgstr "Faili otserada"
msgctxt "#30263"
msgid "Episodes - Recently Added"
msgstr "Episoodid viimati lisatud"
msgstr "Episoodid - Viimati lisatud"
msgctxt "#30257"
msgid "Movies - Recently Added"
msgstr "Filmid viimati lisatud"
msgstr "Filmid - Viimati lisatud"
msgctxt "#30349"
msgid " - Recently Played"
msgstr "- viimati esitatud"
msgstr "- Viimati esitatud"
msgctxt "#30268"
msgid " - Recently Added"
msgstr "- viimati lisatud"
msgstr "- Viimati lisatud"
msgctxt "#30351"
msgid "Music - Recently Played"
msgstr "Muusika viimati esitatud"
msgstr "Muusika - Viimati esitatud"
msgctxt "#30350"
msgid "Music - Recently Added"
msgstr "Muusika viimati lisatud"
msgstr "Muusika - Viimati lisatud"
msgctxt "#30348"
msgid "Add user ratings"
msgstr "Lisa kasutajahinded"
msgstr "Kaasa kasutajahinded"
msgctxt "#30347"
msgid "Getting Existing Images"
@@ -245,7 +245,7 @@ msgstr "Filme lehel"
msgctxt "#30330"
msgid "Show change user dialog"
msgstr "Kuva kasutaja muutmise dialoog"
msgstr "Kuva kasutaja vahetamise aken"
msgctxt "#30329"
msgid "Screensaver"
@@ -257,7 +257,7 @@ msgstr "Kuva tühjad kaustad (saated, hooajad, kogumikud)"
msgctxt "#30325"
msgid " - Genres"
msgstr "- žanrid"
msgstr "- Žanrid"
msgctxt "#30322"
msgid "Auto resume"
@@ -265,11 +265,11 @@ msgstr "Automaatne jätkamine"
msgctxt "#30320"
msgid " - Albums"
msgstr "- albumid"
msgstr "- Albumid"
msgctxt "#30318"
msgid "Music - Albums"
msgstr "Muusika albumid"
msgstr "Muusika - Albumid"
msgctxt "#30317"
msgid "Play All"
@@ -281,7 +281,7 @@ msgstr "Ühenduse viga"
msgctxt "#30315"
msgid "Suppress notifications for connection errors"
msgstr "Lülita ühenduse veateavitused välja"
msgstr "Peida ühenduse veateavitused"
msgctxt "#30314"
msgid "Play"
@@ -305,7 +305,7 @@ msgstr "Luba Jellyfini kaugjuhtimine"
msgctxt "#30309"
msgid "Select Media Source"
msgstr "Vali meedia allikas"
msgstr "Vali meediaallikas"
msgctxt "#30308"
msgid "Select Trailer"
@@ -345,7 +345,7 @@ msgstr "Kas salvestada kõik Jellyfini pildid vahemällu kohalike Kodi piltidena
msgctxt "#30299"
msgid "Cache Images"
msgstr "Pildid vahemällu"
msgstr "Salvesta pildid vahemällu"
msgctxt "#30298"
msgid "Deleting Kodi Images"
@@ -369,7 +369,7 @@ msgstr "Märkus"
msgctxt "#30293"
msgid "Cache images"
msgstr "Pildid vahemällu"
msgstr "Salvesta pildid vahemällu"
msgctxt "#30292"
msgid "Select Subtitle Stream"
@@ -385,23 +385,23 @@ msgstr "Kõik"
msgctxt "#30289"
msgid "TV Shows - Genres"
msgstr "Sarjad - žanrid"
msgstr "Sarjad - Žanrid"
msgctxt "#30288"
msgid " - Latest"
msgstr "- uued"
msgstr "- Uued"
msgctxt "#30287"
msgid "TV Shows - Latest"
msgstr "Sarjad - uued"
msgstr "Sarjad - Uued"
msgctxt "#30286"
msgid "Movies - Unwatched"
msgstr "Filmid - vaatamata"
msgstr "Filmid - Vaatamata"
msgctxt "#30285"
msgid " - Unwatched"
msgstr "- vaatamata"
msgstr "- Vaatamata"
msgctxt "#30283"
msgid "Play Next Episode?"
@@ -413,25 +413,25 @@ msgstr "Kohtvõrgus ei tuvastatud Jellyfini servereid."
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "Värskenda vahemällu salvestatud pilte"
msgstr "Värskenda puhverdatud pilte"
msgctxt "#30280"
msgid "Missing Title"
msgstr "Puuduv pealkiri"
msgstr "Puuduv nimetus"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
msgstr "Sarjad - vaatamata"
msgstr "Sarjad - Vaatamata"
msgctxt "#30278"
msgid " - Next Up"
msgstr "- järgmisena"
msgstr "- Järgmine"
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 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?"
msgctxt "#30276"
@@ -440,7 +440,7 @@ msgstr "Tuvastati täiendav jätkamise päring"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "Sunnitud transkoodimine"
msgstr "Sunni transkoodimine"
msgctxt "#30274"
msgid "Delete"
@@ -460,27 +460,27 @@ msgstr "Märgi vaadatuks"
msgctxt "#30269"
msgid "Movies - Random"
msgstr "Filmid juhuslikud"
msgstr "Filmid - Juhuslikud"
msgctxt "#30267"
msgid " - In Progress"
msgstr "- pooleli"
msgstr "- Pooleli"
msgctxt "#30266"
msgid "Movies - Pages"
msgstr "Filmid lehed"
msgstr "Filmid - Lehed"
msgctxt "#30265"
msgid "Episodes - Next Up"
msgstr "Episoodid järgmine"
msgstr "Episoodid - Järgmine"
msgctxt "#30264"
msgid "Episodes - In Progress"
msgstr "Episoodid pooleli"
msgstr "Episoodid - Pooleli"
msgctxt "#30262"
msgid "TV Shows - Favorites"
msgstr "Sarjad - lemmikud"
msgstr "Sarjad - Lemmikud"
msgctxt "#30261"
msgid "TV Shows"
@@ -492,11 +492,11 @@ msgstr "Kogumikud"
msgctxt "#30259"
msgid "Movies - Favorites"
msgstr "Filmid lemmikud"
msgstr "Filmid - Lemmikud"
msgctxt "#30258"
msgid "Movies - In Progress"
msgstr "Filmid pooleli"
msgstr "Filmid - Pooleli"
msgctxt "#30256"
msgid "Movies"
@@ -508,15 +508,15 @@ msgstr "Sarjad - A-Ü"
msgctxt "#30254"
msgid "Show add-on settings"
msgstr "Kuva lisamooduli seaded"
msgstr "Lisamooduli seaded"
msgctxt "#30252"
msgid "Movies - A-Z"
msgstr "Filmid A-Ü"
msgstr "Filmid - A-Ü"
msgctxt "#30251"
msgid "Movies - Genres"
msgstr "Filmid žanrid"
msgstr "Filmid - Žanrid"
msgctxt "#30250"
msgid "Unknown"
@@ -528,11 +528,11 @@ msgstr "Otsi"
msgctxt "#30239"
msgid "Force transcode mpeg2"
msgstr "Transkoodi jõuga mpeg2"
msgstr "Sunni mpeg2 transkoodimine"
msgctxt "#30238"
msgid "Playback stream options"
msgstr "Taasesituse striimimise valikud"
msgstr "Taasesitusvoo valikud"
msgctxt "#30237"
msgid "Start from beginning"
@@ -540,7 +540,7 @@ msgstr "Alusta algusest"
msgctxt "#30236"
msgid "Force transcode h265 (hevc)"
msgstr "Transkoodi jõuga h265 (hevc)"
msgstr "Sunni h265 (hevc) transkoodimine"
msgctxt "#30235"
msgid "Episodes"
@@ -584,7 +584,7 @@ msgstr "Üksuse üksikasjad"
msgctxt "#30215"
msgid "On playback stop (100% = disabled)"
msgstr "Taasesituse peatamisel (100% = keelatud)"
msgstr "Taasesituse peatumisel (100% = keelatud)"
msgctxt "#30214"
msgid "Events"
@@ -604,7 +604,7 @@ msgstr "HTTP otsevoog"
msgctxt "#30000"
msgid "Host"
msgstr "Peremeesmasin"
msgstr "Server"
msgctxt "#30182"
msgid "Include media stream info"
@@ -656,7 +656,7 @@ msgstr "Vali server"
msgctxt "#30163"
msgid "Add (cc) if subtitle is available"
msgstr "Lisa (cc) subtiitrite olemasolul"
msgstr "Lisa (cc), kui subtiitrid on saadaval"
msgctxt "#30139"
msgid "No Media Type Set"
@@ -676,7 +676,7 @@ msgstr "Tehtud"
msgctxt "#30121"
msgid "On resume"
msgstr "Jätkamisel"
msgstr "Taasesituse jätkamisel"
msgctxt "#30120"
msgid "Show load progress"
@@ -684,11 +684,11 @@ msgstr "Kuva laadimise edenemine"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "Lisa nimedele vaatamata arv"
msgstr "Lisa nimedele vaatamata episoodide arv"
msgctxt "#30118"
msgid "Add resume percent to names"
msgstr "Lisa nimedele jätkamise protsent"
msgstr "Lisa nimedele vaatemise oleku protsent"
msgctxt "#30114"
msgid "Jump back seconds"
@@ -716,7 +716,7 @@ msgstr "Hoiatus: see toiming kustutab meediafailid serverist."
msgctxt "#30091"
msgid "Confirm delete?"
msgstr "Kas kinnitada kustutamine?"
msgstr "Kas kustutamine kinnitada?"
msgctxt "#30063"
msgid "N/A"
@@ -744,7 +744,7 @@ msgstr "Luba silumislogimine"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "Vidina toiming üksuse valikul"
msgstr "Toiming vidina elemendi valimisel"
msgctxt "#30025"
msgid "Password:"
@@ -756,8 +756,468 @@ msgstr "Kasutajanimi:"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "Peida vaatamata episoodi üksikasjad"
msgstr "Peida vaatamata episoodide üksikasjad"
msgctxt "#30022"
msgid "Advanced"
msgstr "Täpsem"
msgctxt "#30019"
msgid "Filtered episode name format"
msgstr "Filtreeritud episoodi nime vorming"
msgctxt "#30213"
msgid "Video force 8 bit"
msgstr "Sunni 8 bitine video"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "Parool kustutada?"
msgctxt "#30373"
msgid "Scanning for local servers"
msgstr "Kohalike serverite skaneerimine"
msgctxt "#30376"
msgid "Checking server url"
msgstr "Serveri URL-i kontroll"
msgctxt "#30323"
msgid "Artists"
msgstr "Esitajad"
msgctxt "#30371"
msgid "Could not connect to the URL you entered, do you want to try again?"
msgstr "Sisestatud URL-iga ei õnnestunud ühenduda, kas soovid uuesti proovida?"
msgctxt "#30377"
msgid "Sending request"
msgstr "Päringu saatmine"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Sunni av1 transkoodimine"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
msgstr "Kas soovid serveri URL-i sisestada käsitsi?"
msgctxt "#30372"
msgid "Server URL"
msgstr "Serveri URL"
msgctxt "#30380"
msgid "Never"
msgstr "Mitte kunagi"
msgctxt "#30381"
msgid "More than one"
msgstr "Rohkem kui üks"
msgctxt "#30382"
msgid "Always"
msgstr "Alati"
msgctxt "#30383"
msgid "System - "
msgstr "Süsteem -"
msgctxt "#30225"
msgid "Interface Mode"
msgstr "Kasutajaliidese olek"
msgctxt "#30226"
msgid "Default"
msgstr "Vaikimisi"
msgctxt "#30227"
msgid "Simple"
msgstr "Lihtne"
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "Kohandatud vidina sisu"
msgctxt "#30273"
msgid "Unset Favourite"
msgstr "Tühista lemmikuks määramine"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Luba muudetud kasutajaparooli kiire salvestamine"
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "Kas soovid oma salvestatud parooli kustutada?"
msgctxt "#30374"
msgid "Sending request"
msgstr "Päringu saatmine"
msgctxt "#30375"
msgid "Receiving data packet"
msgstr "Andmepaketi vastuvõtt"
msgctxt "#30378"
msgid "Persist user details"
msgstr "Säilita kasutajaandmed"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Paku väliseid subtiitreid"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "Kuva \"Esita järgmine episood\" enne video lõppu (sek)"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Juhuslike filmide värskendamise intervall (0 = keelatud)"
msgctxt "#30388"
msgid "Server details"
msgstr "Serveri andmed"
msgctxt "#30392"
msgid "HTTPS"
msgstr "HTTPS"
msgctxt "#30398"
msgid "Refresh Jellyfin Metadata"
msgstr "Värskenda Jellyfini metaandmeid"
msgctxt "#30406"
msgid "Jellyfin Libraries"
msgstr "Jellyfini meediakogud"
msgctxt "#30407"
msgid "Global Lists"
msgstr "Globaalsed loendid"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "HTTP ajalõpp sekundites"
msgctxt "#30418"
msgid "Audio bitrate (Kbits)"
msgstr "Heli bitikiirus (kbps)"
msgctxt "#30419"
msgid "Audio codec"
msgstr "Helikoodek"
msgctxt "#30423"
msgid "NotSet"
msgstr "Määramata"
msgctxt "#30425"
msgid "Year"
msgstr "Aasta"
msgctxt "#30426"
msgid "Title"
msgstr "Pealkiri"
msgctxt "#30437"
msgid "Playback options"
msgstr "Taasesituse valikud"
msgctxt "#30440"
msgid "Play next"
msgstr "Esita järgmisena"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "Lisamooduli toimingud"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "Tühjenda vahemällu salvestatud serveri andmed"
msgctxt "#30446"
msgid "There was an error logging in"
msgstr "Ilmes viga sisselogimisel"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Kiirmiks"
msgctxt "#30447"
msgid "Max Play Queue Size"
msgstr "Esitusjärjekorra maksimaalne suurus"
msgctxt "#30389"
msgid "User details"
msgstr "Kasutaja andmed"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Kasutamata pildid eemaldati:"
msgctxt "#30405"
msgid " - Show All"
msgstr "- Kuva kõik"
msgctxt "#30415"
msgid " - Favorite Collections"
msgstr "- Lemmikkogumikud"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Täiesti vaatamata"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "Olemasolevaid pilte enne kustutamist:"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "Kasutamata Jellyfini pildid:"
msgctxt "#30390"
msgid "Protocol"
msgstr "Protokoll"
msgctxt "#30391"
msgid "HTTP"
msgstr "HTTP"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Vahemälu tühjendamise tulemus"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "Vahemälu failid kustutati"
msgctxt "#30399"
msgid "Hide"
msgstr "Peida"
msgctxt "#30401"
msgid "Info"
msgstr "Info"
msgctxt "#30402"
msgid "Add to Kodi Playlist"
msgstr "Lisa Kodi esitusloendisse"
msgctxt "#30403"
msgid "Movies - Recommendations"
msgstr "Filmid - Soovitused"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Piltide vahemällu salvestamise intervall (0 = keelatud)"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "Kohandatud vidinad"
msgctxt "#30410"
msgid " - Collections"
msgstr "- Kogumikud"
msgctxt "#30404"
msgid " - A-Z"
msgstr "- A-Ü"
msgctxt "#30413"
msgid " - Tags"
msgstr "- Sildid"
msgctxt "#30411"
msgid " - Years"
msgstr "- Aastad"
msgctxt "#30412"
msgid " - Decades"
msgstr "- Kümnendid"
msgctxt "#30414"
msgid " - Favorites"
msgstr "- Lemmikud"
msgctxt "#30417"
msgid "You do not have permision to delete this item"
msgstr "Sul pole selle üksuse kustutamiseks õigusi"
msgctxt "#30420"
msgid "Audio max channels"
msgstr "Maksimaalne helikanalite arv"
msgctxt "#30422"
msgid "Sorting"
msgstr "Järjestus"
msgctxt "#30424"
msgid "Default"
msgstr "Vaikimisi"
msgctxt "#30427"
msgid "Added"
msgstr "Lisatud"
msgctxt "#30428"
msgid "Rating"
msgstr "Hinne"
msgctxt "#30429"
msgid "Genre"
msgstr "Žanr"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Peida vaadatud üksused loendites"
msgctxt "#30433"
msgid "Allow direct file playback"
msgstr "Luba failide otseesitus"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Sunni transkoodimisvoo bitikiirus (kbps)"
msgctxt "#30435"
msgid "Connection speed test"
msgstr "Ühenduse kiirustest"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Kiirustesti andmesuurus (MB)"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Lihtne uue sisu kontroll"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Kasuta vahemällu salvestatud vidina andmeid"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Kiirühendus"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Logi sisse kiirühenduse abil"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Jätka vaatamist"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Ühenda asendamise asemel (võib jõudlust aeglustada)"
msgctxt "#30667"
msgid "Action to take"
msgstr "Sooritatav toiming"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Käivitusviivitus (sekundites)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Lõpuviivitus (sekundites)"
msgctxt "#30672"
msgid "Skip"
msgstr "Jäta vahele"
msgctxt "#30673"
msgid "Ask"
msgstr "Küsi"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Ära tee midagi"
msgctxt "#30431"
msgid "Seasons"
msgstr "Hooajad"
msgctxt "#30448"
msgid "Shuffle"
msgstr "Segamine"
msgctxt "#30397"
msgid " - Pages"
msgstr "- Lehed"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Kordusvaatamise päevad (0 = keelatud)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Peida kuvatavate üksuste arv avalehel"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Sarjad - Juhuslik"
msgctxt "#30456"
msgid "All - Random"
msgstr "Kõik - Juhuslik"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Kõik - Viimati lisatud"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Kõik - Lemmikud"
msgctxt "#30678"
msgid "TV Shows per page"
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 ""
msgstr ""
"PO-Revision-Date: 2023-09-08 14:40+0000\n"
"Last-Translator: Oskari Lavinto <olavinto@protonmail.com>\n"
"PO-Revision-Date: 2025-12-18 13:55+0000\n"
"Last-Translator: Antti Pikkuaho <antti.pikkuaho@outlook.com>\n"
"Language-Team: Finnish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/fi/>\n"
"Language: fi\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.14\n"
msgctxt "#30442"
msgid "Simple new content check"
@@ -591,7 +591,7 @@ msgstr "Puskuroidaan kuvia"
msgctxt "#30299"
msgid "Cache Images"
msgstr "Puskuroi kuvat"
msgstr "Puskuroi Kuvat"
msgctxt "#30298"
msgid "Deleting Kodi Images"
@@ -1137,3 +1137,95 @@ msgstr "Oletus"
msgctxt "#30227"
msgid "Simple"
msgstr "Yksinkertainen"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Seuraavaksi uudelleenkatselussa"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Yhdistä korvauksen sijaan (voi hidastaa toimintaa)"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Pakota AV1-transkoodaus"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Uudelleenkatselupäivät (0 = ei käytössä)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Piilota näytettävien kohteiden määrä etusivulta"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Kokonaan katsomatta"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Kappaleiden ohittaja"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Aloituksen siirto (sekunneissa)"
msgctxt "#30667"
msgid "Action to take"
msgstr "Tehtävät toimet"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Lopetuksen siirto (sekunneissa)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Johdannon ohittaja"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Lopetuksen ohittaja"
msgctxt "#30672"
msgid "Skip"
msgstr "Ohita"
msgctxt "#30673"
msgid "Ask"
msgstr "Kysy"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Älä tee mitään"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Mainosten ohittaja"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Ennakkoesitysten ohittaja"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Yhteenvetojen ohittaja"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Sarjat - Satunnainen"
msgctxt "#30456"
msgid "All - Random"
msgstr "Kaikki - Satunnainen"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Kaikki - Viimeksi lisätyt"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Kaikki - Suosikit"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Sarjoja per sivu"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-03 09:20+0000\n"
"Last-Translator: eeeple <m.renusson@gmail.com>\n"
"PO-Revision-Date: 2025-05-13 02:01+0000\n"
"Last-Translator: r4dius <r4dius@gmail.com>\n"
"Language-Team: French <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/fr/>\n"
"Language: fr\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.10.4\n"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
@@ -1136,3 +1136,75 @@ msgstr "Par défaut"
msgctxt "#30227"
msgid "Simple"
msgstr "Simple"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Forcer le transcodage av1"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Revoir dans \"x\" Jours (0 = Désactiver)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Fusionner plutôt que remplacer (peut provoquer des ralentissements)"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Revoir ensuite"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Cacher ne nombre d'éléments à montrer dans les titres d'entrées"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - totalité non vu"
msgctxt "#30667"
msgid "Action to take"
msgstr "Action à effectuer"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Décalage initial (secondes)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Décalage de fin (secondes)"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Sauter le contenu"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Sauter l'introduction"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Sauter le générique"
msgctxt "#30672"
msgid "Skip"
msgstr "Sauter"
msgctxt "#30673"
msgid "Ask"
msgstr "Demander"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Ne rien faire"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Sauter les publicités"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Sauter l'aperçu"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Sauter le récapitulatif"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-27 08:25+0000\n"
"Last-Translator: Shashank Bhosagi <shashankbhosagi0121@gmail.com>\n"
"PO-Revision-Date: 2024-07-05 15:41+0000\n"
"Last-Translator: Viswanadha Y Manu Sharma <manu.viswanad@gmail.com>\n"
"Language-Team: Hindi <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/hi/>\n"
"Language: hi\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 "#30407"
msgid "Global Lists"
@@ -602,3 +602,119 @@ msgstr "मिटाना"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "फोर्स ट्रांसकोड"
msgctxt "#30296"
msgid "Delete"
msgstr "मिटाना"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
msgstr "सभी जेलीफ़िन छवियों को स्थानीय कोडी छवियों के रूप में कैश करें?"
msgctxt "#30301"
msgid "Caching Images"
msgstr "छवियाँ कैशिंग"
msgctxt "#30278"
msgid " - Next Up"
msgstr "- अगला"
msgctxt "#30302"
msgid "Existing images : "
msgstr "मौजूदा छवियाँ:"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "फोर्स ट्रांसकोड av1"
msgctxt "#30288"
msgid " - Latest"
msgstr "- नवीनतम"
msgctxt "#30289"
msgid "TV Shows - Genres"
msgstr "टीवी शो - शैलियाँ"
msgctxt "#30297"
msgid "Delete unused images?"
msgstr "अप्रयुक्त छवियाँ हटाएँ?"
msgctxt "#30298"
msgid "Deleting Kodi Images"
msgstr "कोडी छवियाँ हटाना"
msgctxt "#30299"
msgid "Cache Images"
msgstr "कैश छवियाँ"
msgctxt "#30303"
msgid "Missing Jellyfin images : "
msgstr "गुम जेलीफ़िन छवियाँ:"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
msgstr "टीवी शो - नहीं देखे गए"
msgctxt "#30280"
msgid "Missing Title"
msgstr "गुम शीर्षक"
msgctxt "#30282"
msgid "No Jellyfin servers detected on your local network."
msgstr "आपके स्थानीय नेटवर्क पर कोई जेलीफ़िन सर्वर नहीं पाया गया।"
msgctxt "#30283"
msgid "Play Next Episode?"
msgstr "अगला एपिसोड खेलें?"
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "कैश्ड छवियाँ ताज़ा करें"
msgctxt "#30285"
msgid " - Unwatched"
msgstr "- न देखा गया"
msgctxt "#30286"
msgid "Movies - Unwatched"
msgstr "फिल्में - नहीं देखी गईं"
msgctxt "#30287"
msgid "TV Shows - Latest"
msgstr "टीवी शो - नवीनतम"
msgctxt "#30294"
msgid "Notice"
msgstr "सूचना"
msgctxt "#30295"
msgid "To use this feature you need HTTP control enabled"
msgstr "इस सुविधा का उपयोग करने के लिए आपको HTTP नियंत्रण सक्षम करना होगा"
msgctxt "#30290"
msgid "All"
msgstr "सभी"
msgctxt "#30291"
msgid "Select Audio Stream"
msgstr "ऑडियो स्ट्रीम चुनें"
msgctxt "#30292"
msgid "Select Subtitle Stream"
msgstr "उपशीर्षक स्ट्रीम का चयन करें"
msgctxt "#30293"
msgid "Cache images"
msgstr "कैश छवियाँ"
msgctxt "#30304"
msgid "Cached Jellyfin images : "
msgstr "कैश्ड जेलीफ़िन छवियाँ:"
msgctxt "#30305"
msgid "Not Found"
msgstr "नहीं मिला"
msgctxt "#30306"
msgid "Playback starting"
msgstr "प्लेबैक प्रारंभ हो रहा है"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-03 15:00+0000\n"
"Last-Translator: Gábor Misuth <gmisuth@gmail.com>\n"
"PO-Revision-Date: 2026-01-04 21:05+0000\n"
"Last-Translator: Levente Suli <suli.levente.07@icloud.com>\n"
"Language-Team: Hungarian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/hu/>\n"
"Language: 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 4.14.1\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#30441"
msgid "Use cached widget data"
@@ -1086,7 +1086,7 @@ msgstr "Port"
msgctxt "#30000"
msgid "Host"
msgstr "Hoszt"
msgstr "Gazdagép"
msgctxt "#30444"
msgid "Login using Quick Connect"
@@ -1135,3 +1135,95 @@ msgstr "Interfész mód"
msgctxt "#30227"
msgid "Simple"
msgstr "Egyszerű"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "av1 transzkódolás kényszerítése"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "A Következő Újrajátszása"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Újrajátszási Napok (0=Kikapcsolva)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Egyesítés csere helyett (lassulást okozhat)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Elemek számának rejtése a cím mellett"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " Megnézetlen"
msgctxt "#30667"
msgid "Action to take"
msgstr "Teendő"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Kezdési eltérés (másodpercben)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Befejezési késleltetés"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Intróátugró"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Részlet átugró"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Stáblistaátugró"
msgctxt "#30672"
msgid "Skip"
msgstr "Átugrás"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Ne csináljon semmit"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklámátugró"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Előnézet átugró"
msgctxt "#30673"
msgid "Ask"
msgstr "Kérdezz"
msgctxt "#30677"
msgid "Recap Skipper"
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 ""
msgstr ""
"PO-Revision-Date: 2023-02-15 10:39+0000\n"
"Last-Translator: Imamuzzaki Abu Salam <imamuzzaki@gmail.com>\n"
"PO-Revision-Date: 2026-01-05 12:25+0000\n"
"Last-Translator: daryhanif <daryhanif00@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.14.1\n"
"X-Generator: Weblate 5.15.1\n"
msgctxt "#30414"
msgid " - Favorites"
@@ -1122,3 +1122,92 @@ msgstr "Terjadi kesalahan saat masuk"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Campuran Instan"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Paksa transkode av1"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Jeda Tonton Ulang (0 = Nonaktif)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Gabungkan, bukan Gantikan (berisiko memperlambat)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Sembunyikan Jumlah Item di Judul"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Belum Pernah Ditonton"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Tampilkan Tontonan Ulang"
msgctxt "#30225"
msgid "Interface Mode"
msgstr "Mode Antarmuka"
msgctxt "#30226"
msgid "Default"
msgstr "Baku"
msgctxt "#30227"
msgid "Simple"
msgstr "Simpel"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Lewatkan Segmen"
msgctxt "#30667"
msgid "Action to take"
msgstr "Aksi yang diambil"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Mulai Offset(detik)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Akhir Offset(detik)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Lewatkan intro"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Lewatkan Credit"
msgctxt "#30673"
msgid "Ask"
msgstr "Tanya"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Tidak Ada"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Melewatkan iklan"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Melewatkan Cuplikan"
msgctxt "#30672"
msgid "Skip"
msgstr "Lewatkan"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Lewati Rekap"
#, fuzzy
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Semua - Baru-Baru ini ditambahkan"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-08-30 13:40+0000\n"
"Last-Translator: Nicolò Carcagnì <nicolo.carcagni@mail.com>\n"
"PO-Revision-Date: 2026-01-02 12:03+0000\n"
"Last-Translator: ittelicra <alexarciletti10@gmail.com>\n"
"Language-Team: Italian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/it/>\n"
"Language: it\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.15.1\n"
msgctxt "#30120"
msgid "Show load progress"
@@ -49,7 +49,7 @@ msgstr "Attenzione: questa operazione eliminerà i file multimediali dal server.
msgctxt "#30091"
msgid "Confirm delete?"
msgstr "Confermi l'eliminazione?"
msgstr "Confermare l'eliminazione?"
msgctxt "#30063"
msgid "N/A"
@@ -73,7 +73,7 @@ msgstr "Nome utente/Password errati"
msgctxt "#30027"
msgid "Enable debug logging"
msgstr "Attiva log a debug"
msgstr "Attiva log di debug"
msgctxt "#30026"
msgid "Widget item select action"
@@ -89,7 +89,7 @@ msgstr "Nome utente:"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "Nascondi dettagli episodi non guardati"
msgstr "Nascondi i dettagli degli episodi non guardati"
msgctxt "#30022"
msgid "Advanced"
@@ -385,7 +385,7 @@ msgstr "Disposizione elemento"
msgctxt "#30220"
msgid "Prompt to delete movie after %"
msgstr "Chiedi se eliminare il film dopo %"
msgstr "Chiedi di eliminare il film dopo %"
msgctxt "#30219"
msgid " - Prompt before play"
@@ -397,7 +397,7 @@ msgstr "Riproduci il prossimo episodio dopo %"
msgctxt "#30217"
msgid "Prompt to delete episode after %"
msgstr "Chiedi se eliminare l'episodio dopo %"
msgstr "Chiedi di eliminare l'episodio dopo %"
msgctxt "#30216"
msgid "Item Details"
@@ -601,7 +601,7 @@ msgstr "Seleziona fonte sottotitoli"
msgctxt "#30293"
msgid "Cache images"
msgstr "Memorizza immagini"
msgstr "Memorizza in cache immagini"
msgctxt "#30310"
msgid "Enable Jellyfin remote control"
@@ -669,7 +669,7 @@ msgstr "Avviso"
msgctxt "#30299"
msgid "Cache Images"
msgstr "Memorizza immagini"
msgstr "Memorizza in cache le immagini"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
@@ -994,3 +994,231 @@ msgstr "- Decenni"
msgctxt "#30423"
msgid "NotSet"
msgstr "Non impostato"
msgctxt "#30446"
msgid "There was an error logging in"
msgstr "Si è verificato un errore durante l'accesso"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Connessione rapida"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Continua a guardare"
msgctxt "#30448"
msgid "Shuffle"
msgstr "Casuale"
msgctxt "#30447"
msgid "Max Play Queue Size"
msgstr "Dimensione massima della coda di riproduzione"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Forza transcodifica AV1"
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "Caricamento lista di immagini esistenti"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Intervallo, in minuti, di film casuali (0 = disabilitato)"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "Immagini esistenti prima della cancellazione:"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "Immagini Jellyfin inutilizzate:"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Immagini inutilizzate rimosse:"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Cancella la cache dei risultati"
msgctxt "#30440"
msgid "Play next"
msgstr "Riproduci prossimo"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Utilizza dati widget nella cache"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Accedi usando Connessione Rapida"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Combina invece di sostituire (può causare rallentamenti)"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "Intervallo di verifica di nuovi contenuti (0 = disabilitato)"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "Analizzando la lista di immagini esistenti"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Intervallo, in minuti, della cache delle immagini (0 = disabilitato)"
msgctxt "#30435"
msgid "Connection speed test"
msgstr "Test di velocità della connessione"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Dimensioni dati per il test di velocità (MB)"
msgctxt "#30437"
msgid "Playback options"
msgstr "Opzioni di riproduzione"
msgctxt "#30225"
msgid "Interface Mode"
msgstr "Modalità interfaccia"
msgctxt "#30226"
msgid "Default"
msgstr "Predefinito"
msgctxt "#30227"
msgid "Simple"
msgstr "Semplice"
msgctxt "#30121"
msgid "On resume"
msgstr "Riprendi"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Ricerca semplice dei nuovi contenuti"
msgctxt "#30215"
msgid "On playback stop (100% = disabled)"
msgstr "A riproduzione ferma (100% = disabilitato)"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Prompt sottotitolo esterno"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Forza transcodifica del bitrate dello stream (Kbps)"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Stiva dati richieste del server Jellyfin"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "Mostra riproduci il prossimo episodio a tempo rimasto in secondi"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Consenti salvataggio veloce della password utente cambiata"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "Riproduci introduzioni cinema"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Mix Istantaneo"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Giorni per tornare a Guardare (0 = Disabilitato)"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Finestra di Ripresa Duplicata Rilevata"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Prossimo da Ri-Guardare"
msgctxt "#30672"
msgid "Skip"
msgstr "Salta"
msgctxt "#30673"
msgid "Ask"
msgstr "Chiedi"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Non fare niente"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Nascondi numero di elementi da mostrare per titolo"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Non Visto"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Offset all'avvio (secondi)"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Salta Segmento"
msgctxt "#30667"
msgid "Action to take"
msgstr "Azione da eseguire"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Offset alla fine (secondi)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Salta Intro"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Salta Crediti"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Salta Pubblicità"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Salta Anteprima"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Salta Riassunto"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "#30455"
msgctxt "#30456"
msgid "All - Random"
msgstr "Tutti - Casuale"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Tutti - Aggiunti di recente"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Tutti - Preferiti"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Serie TV per pagina"

View File

@@ -0,0 +1,770 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-09-23 16:39+0000\n"
"Last-Translator: S H <translate@hayakawa.work>\n"
"Language-Team: Japanese <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.11.4\n"
msgctxt "#30112"
msgid "Loading Content"
msgstr "コンテンツをロード中"
msgctxt "#30008"
msgid "Samba password"
msgstr "Samba パスワード"
msgctxt "#30016"
msgid "Device display name"
msgstr "デバイスディスプレイ名"
msgctxt "#30021"
msgid "Show all episodes item"
msgstr "全てのエピソードを見る"
msgctxt "#30044"
msgid "Incorrect Username/Password"
msgstr "誤ったユーザー名もしくはパスワード"
msgctxt "#30000"
msgid "Host"
msgstr "ホスト"
msgctxt "#30001"
msgid "Port"
msgstr "ポート"
msgctxt "#30003"
msgid "Verify HTTPS certificate"
msgstr "HTTPS証明書を検証"
msgctxt "#30005"
msgid "Username"
msgstr "ユーザー名"
msgctxt "#30006"
msgid "Password"
msgstr "パスワード"
msgctxt "#30007"
msgid "Samba username"
msgstr "Samba ユーザー名"
msgctxt "#30010"
msgid "Number of performance profiles to capture"
msgstr "キャプチャするパフォーマンスプロファイルの数"
msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[ローカルサーバーを検出]"
msgctxt "#30012"
msgid "[Change user]"
msgstr "[ユーザーを変更]"
msgctxt "#30014"
msgid "Jellyfin"
msgstr "Jellyfin"
msgctxt "#30015"
msgid "Log timing data"
msgstr "ログタイミングデータ"
msgctxt "#30017"
msgid "Show connected clients"
msgstr "接続されたクライアントを表示"
msgctxt "#30018"
msgid "Number of items to show in filtered lists"
msgstr "フィルターされたリストに表示するアイテムの数"
msgctxt "#30019"
msgid "Filtered episode name format"
msgstr "フィルターされたエピソードの名前フォーマット"
msgctxt "#30022"
msgid "Advanced"
msgstr "高度"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "観ていないエピソードの詳細を隠す"
msgctxt "#30024"
msgid "Username:"
msgstr "ユーザー名:"
msgctxt "#30025"
msgid "Password:"
msgstr "パスワード:"
msgctxt "#30027"
msgid "Enable debug logging"
msgstr "デバッグロギングを有効化"
msgctxt "#30045"
msgid "Username not found"
msgstr "ユーザー名が見つからない"
msgctxt "#30052"
msgid "Deleting"
msgstr "削除中"
msgctxt "#30053"
msgid "Waiting for server to delete"
msgstr "サーバーが削除するのを待機中"
msgctxt "#30091"
msgid "Confirm delete?"
msgstr "削除しますか?"
msgctxt "#30092"
msgid "Warning: This action will delete the media files from the server."
msgstr "警告: この操作はサーバーからメディアファイルを削除します。"
msgctxt "#30110"
msgid "Interface"
msgstr "インターフェース"
msgctxt "#30111"
msgid "Services"
msgstr "サービス"
msgctxt "#30113"
msgid "Retrieving Data"
msgstr "データを取得中"
msgctxt "#30222"
msgid "Item Layout"
msgstr "アイテムレイアウト"
msgctxt "#30224"
msgid "Interaction"
msgstr "インタラクション"
msgctxt "#30225"
msgid "Interface Mode"
msgstr "インターフェースモード"
msgctxt "#30226"
msgid "Default"
msgstr "既定"
msgctxt "#30227"
msgid "Simple"
msgstr "シンプル"
msgctxt "#30229"
msgid "TV Shows"
msgstr "TV番組"
msgctxt "#30231"
msgid "Movies"
msgstr "映画"
msgctxt "#30235"
msgid "Episodes"
msgstr "エピソード"
msgctxt "#30237"
msgid "Start from beginning"
msgstr "最初から始める"
msgctxt "#30239"
msgid "Force transcode mpeg2"
msgstr "mpeg2でのトランスコードを強制する"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "mpeg4でのトランスコードを強制する"
msgctxt "#30246"
msgid "Search"
msgstr "検索"
msgctxt "#30250"
msgid "Unknown"
msgstr "不明"
msgctxt "#30252"
msgid "Movies - A-Z"
msgstr "映画 - A-Z"
msgctxt "#30254"
msgid "Show add-on settings"
msgstr "アドオン設定を見る"
msgctxt "#30255"
msgid "TV Shows - A-Z"
msgstr "TV番組 - A-Z"
msgctxt "#30256"
msgid "Movies"
msgstr "映画"
msgctxt "#30257"
msgid "Movies - Recently Added"
msgstr "映画 - 最近追加された"
msgctxt "#30258"
msgid "Movies - In Progress"
msgstr "映画 - 途中"
msgctxt "#30259"
msgid "Movies - Favorites"
msgstr "映画 - お気に入り"
msgctxt "#30260"
msgid "BoxSets"
msgstr "ボックス・セット"
msgctxt "#30261"
msgid "TV Shows"
msgstr "TV番組"
msgctxt "#30262"
msgid "TV Shows - Favorites"
msgstr "TV番組 - お気に入り"
msgctxt "#30264"
msgid "Episodes - In Progress"
msgstr "エピソード - 途中"
msgctxt "#30265"
msgid "Episodes - Next Up"
msgstr "エピソード - 次"
msgctxt "#30266"
msgid "Movies - Pages"
msgstr "映画 - ページ"
msgctxt "#30267"
msgid " - In Progress"
msgstr "- 途中"
msgctxt "#30268"
msgid " - Recently Added"
msgstr "- 最近追加された"
msgctxt "#30269"
msgid "Movies - Random"
msgstr "映画 - ランダム"
msgctxt "#30270"
msgid "Mark Watched"
msgstr "視聴済みにする"
msgctxt "#30271"
msgid "Mark Unwatched"
msgstr "未視聴にする"
msgctxt "#30272"
msgid "Set Favourite"
msgstr "お気に入りにする"
msgctxt "#30273"
msgid "Unset Favourite"
msgstr "お気に入りから外す"
msgctxt "#30274"
msgid "Delete"
msgstr "削除"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "トランスコードを強制する"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "追加の再開プロンプトが検出された"
msgctxt "#30278"
msgid " - Next Up"
msgstr "- 次"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
msgstr "TV番組 - 未視聴"
msgctxt "#30280"
msgid "Missing Title"
msgstr "タイトル欠落"
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "キャッシュしたイメージをリフレッシュする"
msgctxt "#30282"
msgid "No Jellyfin servers detected on your local network."
msgstr "ローカルネットワークにJellyfinサーバーは検出されませんでした。"
msgctxt "#30283"
msgid "Play Next Episode?"
msgstr "次のエピソードを再生しますか?"
msgctxt "#30285"
msgid " - Unwatched"
msgstr "- 未視聴"
msgctxt "#30286"
msgid "Movies - Unwatched"
msgstr "映画 - 未視聴"
msgctxt "#30287"
msgid "TV Shows - Latest"
msgstr "TV番組 - 最新"
msgctxt "#30288"
msgid " - Latest"
msgstr "- 最新"
msgctxt "#30290"
msgid "All"
msgstr "全て"
msgctxt "#30291"
msgid "Select Audio Stream"
msgstr "音声ストリームを選択"
msgctxt "#30292"
msgid "Select Subtitle Stream"
msgstr "サブタイトルストリームを選択"
msgctxt "#30293"
msgid "Cache images"
msgstr "イメージをキャッシュする"
msgctxt "#30294"
msgid "Notice"
msgstr "通知"
msgctxt "#30295"
msgid "To use this feature you need HTTP control enabled"
msgstr "この機能を使うにはHTTPコントロールが有効化されている必要があります"
msgctxt "#30296"
msgid "Delete"
msgstr "削除"
msgctxt "#30297"
msgid "Delete unused images?"
msgstr "使用されていないイメージを削除しますか?"
msgctxt "#30299"
msgid "Cache Images"
msgstr "イメージをキャッシュする"
msgctxt "#30301"
msgid "Caching Images"
msgstr "イメージをキャッシュ中"
msgctxt "#30302"
msgid "Existing images : "
msgstr "既存のイメージ:"
msgctxt "#30303"
msgid "Missing Jellyfin images : "
msgstr "欠落したJellyfinイメージ:"
msgctxt "#30304"
msgid "Cached Jellyfin images : "
msgstr "キャッシュされたJellyfinイメージ:"
msgctxt "#30305"
msgid "Not Found"
msgstr "見つかりませんでした"
msgctxt "#30306"
msgid "Playback starting"
msgstr "再生を開始中"
msgctxt "#30307"
msgid "Play Trailer"
msgstr "トレーラーを再生"
msgctxt "#30308"
msgid "Select Trailer"
msgstr "トレーラーを選択"
msgctxt "#30309"
msgid "Select Media Source"
msgstr "メディアソースを選択"
msgctxt "#30311"
msgid "Library - "
msgstr "ライブラリー -"
msgctxt "#30312"
msgid "All - "
msgstr "全て -"
msgctxt "#30313"
msgid "Menu"
msgstr "メニュー"
msgctxt "#30314"
msgid "Play"
msgstr "再生"
msgctxt "#30315"
msgid "Suppress notifications for connection errors"
msgstr "接続エラーについての通知を抑制"
msgctxt "#30316"
msgid "Connection Error"
msgstr "接続エラー"
msgctxt "#30317"
msgid "Play All"
msgstr "全て再生"
msgctxt "#30318"
msgid "Music - Albums"
msgstr "音楽 - アルバム"
msgctxt "#30320"
msgid " - Albums"
msgstr "- アルバム"
msgctxt "#30322"
msgid "Auto resume"
msgstr "自動再開"
msgctxt "#30323"
msgid "Artists"
msgstr "アーティスト"
msgctxt "#30325"
msgid " - Genres"
msgstr "- ジャンル"
msgctxt "#30327"
msgid "Go To Season"
msgstr "シーズンに行く"
msgctxt "#30328"
msgid "Show empty folders (shows, seasons, collections)"
msgstr "空のフォルダー(番組, シーズン, コレクション)を見る"
msgctxt "#30329"
msgid "Screensaver"
msgstr "スクリーンセーバー"
msgctxt "#30330"
msgid "Show change user dialog"
msgstr "ユーザー変更ダイアログを見る"
msgctxt "#30331"
msgid "Movies per page"
msgstr "ページごとの映画"
msgctxt "#30332"
msgid "Stop media playback on screensaver activation"
msgstr "スクリーンセーバーが始まったらメディア再生をやめる"
msgctxt "#30334"
msgid "Use JellyCon context menu"
msgstr "JellyConコンテキストメニューを使う"
msgctxt "#30337"
msgid "Song"
msgstr "曲"
msgctxt "#30338"
msgid "Album"
msgstr "アルバム"
msgctxt "#30339"
msgid "Person"
msgstr "人物"
msgctxt "#30340"
msgid "Group movies into collections"
msgstr "映画のグループをコレクションに追加"
msgctxt "#30341"
msgid "Background image update interval (0 = disabled)"
msgstr "バックグラウンドのイメージ更新間隔 (0 = 無効)"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "新しいコンテンツの確認間隔 (0 = 無効)"
msgctxt "#30343"
msgid "Changes Require Kodi Restart"
msgstr "変更はKodiの再起動を必要とします"
msgctxt "#30344"
msgid "Number of images removed from cache"
msgstr "キャッシュから削除されたイメージの数"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Jellyfinサーバーデータリクエストをキャッシュする"
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "キャッシュされたイメージを削除中"
msgctxt "#30347"
msgid "Getting Existing Images"
msgstr "既存のイメージを取得中"
msgctxt "#30348"
msgid "Add user ratings"
msgstr "ユーザーレーティングを追加"
msgctxt "#30350"
msgid "Music - Recently Added"
msgstr "音楽 - 最近追加された"
msgctxt "#30349"
msgid " - Recently Played"
msgstr "- 最近再生された"
msgctxt "#30351"
msgid "Music - Recently Played"
msgstr "音楽 - 最近再生された"
msgctxt "#30352"
msgid "Music - Frequently Played"
msgstr "音楽 - よく再生される"
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "音楽 - 全てのアルバムアーティスト"
msgctxt "#30321"
msgid " - Album Artists"
msgstr "- アルバムアーティスト"
msgctxt "#30353"
msgid " - Frequently Played"
msgstr "- よく再生される"
msgctxt "#30354"
msgid "Go To Series"
msgstr "シリーズに行く"
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "既存のイメージリストを読み込み中"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "既存のイメージリストを処理中"
msgctxt "#30358"
msgid "Retreiving remote image list"
msgstr "リモートイメージリストを取得中"
msgctxt "#30359"
msgid "Building full image list"
msgstr "フルイメージリストを構築中"
msgctxt "#30360"
msgid " - Channels"
msgstr "- チャンネル"
msgctxt "#30361"
msgid " - Programs"
msgstr "- 番組"
msgctxt "#30362"
msgid " - Recordings"
msgstr "- 録音"
msgctxt "#30363"
msgid "Save Password?"
msgstr "パスワードを保存しますか?"
msgctxt "#30364"
msgid "Do you want to save the password?"
msgstr "パスワードを保存しますか?"
msgctxt "#30365"
msgid "Manual Login"
msgstr "手動ログイン"
msgctxt "#30366"
msgid "Manually enter user details"
msgstr "ユーザー詳細を手動で入力"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "切り替えたユーザーのパスワードの保存を許可"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "パスワードを消去しますか?"
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "保存されたパスワードを消去しますか?"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
msgstr "サーバーURLを手動で入力しますか"
msgctxt "#30371"
msgid "Could not connect to the URL you entered, do you want to try again?"
msgstr "入力されたURLに接続できませんでした。再試行しますか"
msgctxt "#30372"
msgid "Server URL"
msgstr "サーバーURL"
msgctxt "#30373"
msgid "Scanning for local servers"
msgstr "ローカルサーバーを検索中"
msgctxt "#30374"
msgid "Sending request"
msgstr "リクエストを送信中"
msgctxt "#30377"
msgid "Sending request"
msgstr "リクエストを送信中"
msgctxt "#30378"
msgid "Persist user details"
msgstr "ユーザー詳細を保持する"
msgctxt "#30376"
msgid "Checking server url"
msgstr "サーバーURLを検証中"
msgctxt "#30236"
msgid "Force transcode h265 (hevc)"
msgstr "h265 (hevc)でのトランスコードを強制する"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "msmpeg4v3 (divx)でのトランスコードを強制する"
msgctxt "#30251"
msgid "Movies - Genres"
msgstr "映画 - ジャンル"
msgctxt "#30289"
msgid "TV Shows - Genres"
msgstr "TV番組 - ジャンル"
msgctxt "#30310"
msgid "Enable Jellyfin remote control"
msgstr "Jellyfinリモートコントロールを有効化"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "アートワークをバックグラウンドでキャッシュ"
msgctxt "#30223"
msgid "Page Size and Filtering"
msgstr "ページサイズとフィルタリング"
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "カスタムウィジェットコンテンツ"
msgctxt "#30263"
msgid "Episodes - Recently Added"
msgstr "エピソード - 最近追加された"
msgctxt "#30298"
msgid "Deleting Kodi Images"
msgstr "Kodiイメージを削除中"
msgctxt "#30375"
msgid "Receiving data packet"
msgstr "データパケットを受信中"
msgctxt "#30238"
msgid "Playback stream options"
msgstr "再生ストリームオプション"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "av1でのトランスコードを強制する"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
msgstr "全てのJellyfinイメージをローカルなKodiイメージとしてキャッシュしますか"
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は途中まで再生したアイテムを途中から再生するか質問しますが、Kodiも同"
"じ質問をすることがあります。重複した質問を取り除きますか?"
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "数秒戻す"
msgctxt "#30120"
msgid "Show load progress"
msgstr "読込み状況を表示"
msgctxt "#30125"
msgid "Done"
msgstr "完了"
msgctxt "#30135"
msgid "Error"
msgstr "エラー"
msgctxt "#30020"
msgid "Flatten single season"
msgstr "1シーズンを畳む"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "名前に未視聴の数を追加"
msgctxt "#30121"
msgid "On resume"
msgstr "再開時"
msgctxt "#30126"
msgid "Processing Item : "
msgstr "次の項目を処理中:"
msgctxt "#30139"
msgid "No Media Type Set"
msgstr "メディアタイプ未設定"
msgctxt "#30163"
msgid "Add (cc) if subtitle is available"
msgstr "字幕がある場合(cc)を追加する"
msgctxt "#30166"
msgid "Select Server"
msgstr "サーバーを選択する"
msgctxt "#30167"
msgid "Selected Server Address"
msgstr "選択されたサーバーアドレス"
msgctxt "#30169"
msgid "Address: "
msgstr "アドレス:"
msgctxt "#30180"
msgid "Select User"
msgstr "ユーザー選択"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "ウィジェット項目選択操作"
msgctxt "#30200"
msgid "URL error"
msgstr "URLエラー"
msgctxt "#30201"
msgid "Unable to connect to server"
msgstr "サーバーに接続できません"

View File

@@ -0,0 +1,16 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-10-26 00:17+0000\n"
"Last-Translator: Battseren Badral <bbattseren88@gmail.com>\n"
"Language-Team: Mongolian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/mn/>\n"
"Language: mn\n"
"MIME-Version: 1.0\n"
"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"
msgctxt "#30000"
msgid "Host"
msgstr "Хост"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-23 09:40+0000\n"
"Last-Translator: Sverre <sverre@sverrecraft.com>\n"
"PO-Revision-Date: 2025-12-29 13:05+0000\n"
"Last-Translator: Spillutvikler <sivertnhjortland@gmail.com>\n"
"Language-Team: Norwegian Bokmål <https://translate.jellyfin.org/projects/"
"jellycon/jellycon/nb_NO/>\n"
"Language: nb_NO\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.15.1\n"
msgctxt "#30000"
msgid "Host"
@@ -965,3 +965,259 @@ msgstr "- Programmer"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Datastørrelse for hastighetstest (MB)"
msgctxt "#30181"
msgid "Include plot"
msgstr "Inkluder plott"
msgctxt "#30053"
msgid "Waiting for server to delete"
msgstr "Venter på at server sletter"
msgctxt "#30213"
msgid "Video force 8 bit"
msgstr "Tving 8-bit for video"
msgctxt "#30222"
msgid "Item Layout"
msgstr "Innholdsoppsett"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "tving transkoding msmpeg4v3 (divx)"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "Tving transkoding mpeg4"
msgctxt "#30294"
msgid "Notice"
msgstr "Varsel"
msgctxt "#30293"
msgid "Cache images"
msgstr "Buffre bilder"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "Ny Innholds sjekk interval (0 = av)"
msgctxt "#30348"
msgid "Add user ratings"
msgstr "Legg til bruker vurdering"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "Buffre kunstverk i bakgrunnen"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "Legg til usette nummere til navn"
msgctxt "#30118"
msgid "Add resume percent to names"
msgstr "Legg til fortsettelses prosent til navn"
msgctxt "#30353"
msgid " - Frequently Played"
msgstr "- Ofte spilt"
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "spesiallaget widget innhold"
msgctxt "#30355"
msgid "Kodi Settings->Services->Allow remote control via HTTP"
msgstr "Kodi innstilinger->Tjenester->Tillat fjern kontrol via HTTP"
msgctxt "#30260"
msgid "BoxSets"
msgstr "Boksset"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Tving transkoding av1"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Buffre Jellyfin server data forespørelser"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Tillat rask lagring av byttede bruker passord"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Skjul antall elementer som skal vises på oppføringstittelen"
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "Oppdater bufrede bilder"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Ekstra forespørsel om å gjenoppta oppdaget"
msgctxt "#30026"
msgid "Widget item select action"
msgstr "Handling for valg av widgetelement"
msgctxt "#30020"
msgid "Flatten single season"
msgstr "Flat ned en sesong"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "Bufferfiler slettet"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Enkel sjekk av nytt innhold"
msgctxt "#30378"
msgid "Persist user details"
msgstr "Vedvarende brukerdetaljer"
msgctxt "#30413"
msgid " - Tags"
msgstr "- Tagger"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "Vil du slette passordet?"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Ekstern undertekstmelding"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Tilfeldige filmintervall minutter (0 = deaktivert)"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Tøm bufferresultat"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "Tøm hurtigbufrede serverdata"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Buffer bilder intervall minutter (0 = deaktivert)"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "Egendefinert widgeter"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "Tilleggshandlinger"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "HTTP timeout sekunder"
msgctxt "#30420"
msgid "Audio max channels"
msgstr "Maks lydkanaler"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Skjul overvåkede elementer i lister"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Tving transcode stream bitrate (Kbps)"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "Vis avspilling av neste episode ved gjenstående tid i sekunder"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Umiddelbar miksing"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Neste opp Se Igjen"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Se Igjen-dager (0 = deaktivert)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Kombiner i stedet for å bytte ut (kan føre til tregere)"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Totalt usett"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Start forskyvning (sekunder)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Slutt forskyvning (sekunder)"
msgctxt "#30672"
msgid "Skip"
msgstr "Hopp over"
msgctxt "#30673"
msgid "Ask"
msgstr "Spør"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Gjør ingenting"
msgctxt "#30667"
msgid "Action to take"
msgstr "Handling å ta"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segmenthopper"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Introhopper"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Rulleteksthopper"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklamehopper"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Sniktitthopper"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Oppsummeringshopper"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "TV Show - Tilfeldig"
msgctxt "#30456"
msgid "All - Random"
msgstr "Alle - Tilfeldig"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Alle - Nylig lagt til"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Alle - Favoritter"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "TV Show per side"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-19 23:40+0000\n"
"Last-Translator: exbu <meharmsen@me.com>\n"
"PO-Revision-Date: 2025-05-11 01:54+0000\n"
"Last-Translator: C2gl <lievens.guillaume@gmail.com>\n"
"Language-Team: Dutch <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/nl/>\n"
"Language: nl\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.10.4\n"
msgctxt "#30257"
msgid "Movies - Recently Added"
@@ -137,7 +137,7 @@ msgstr "Transcode opties"
msgctxt "#30210"
msgid "HTTP direct stream"
msgstr "HTTP direct stream"
msgstr "HTTP directe stream"
msgctxt "#30209"
msgid "File direct path"
@@ -241,7 +241,7 @@ msgstr "Content aan het laden"
msgctxt "#30111"
msgid "Services"
msgstr "Services"
msgstr "Diensten"
msgctxt "#30110"
msgid "Interface"
@@ -321,7 +321,7 @@ msgstr "Weergavenaam apparaat"
msgctxt "#30015"
msgid "Log timing data"
msgstr "Log timing gegevens"
msgstr "Log timinggegevens"
msgctxt "#30014"
msgid "Jellyfin"
@@ -341,7 +341,7 @@ msgstr "Aantal vast te leggen prestatieprofielen"
msgctxt "#30008"
msgid "Samba password"
msgstr "Samba wachtwoord"
msgstr "Samba-wachtwoord"
msgctxt "#30007"
msgid "Samba username"
@@ -1132,3 +1132,75 @@ msgstr "Standaard"
msgctxt "#30227"
msgid "Simple"
msgstr "Eenvoudig"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Volgende Herbekijken"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Terugkijkdagen (0 = uitgeschakeld)"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Forceer transcoderen av1"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Samenvoegen in de plaats van vervangen (kan vertragingen veroorzaken)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Verberg aantal items bij weergeven van titel"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " Geheel niet bekeken"
msgctxt "#30667"
msgid "Action to take"
msgstr "Uit te voeren actie"
msgctxt "#30672"
msgid "Skip"
msgstr "Overslaan"
msgctxt "#30673"
msgid "Ask"
msgstr "Vragen"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Niets doen"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segment Overslagen"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Start Offset (seconden)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Einde Offset (seconden)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Intro Skipper"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Krediet Skipper"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reclame Skipper"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Preview Skipper"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Samenvatting Skipper"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-01 15:40+0000\n"
"PO-Revision-Date: 2025-12-15 22:55+0000\n"
"Last-Translator: Kityn <kitynska@gmail.com>\n"
"Language-Team: Polish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/pl/>\n"
@@ -8,9 +8,9 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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.14.1\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 5.14\n"
msgctxt "#30313"
msgid "Menu"
@@ -1137,3 +1137,95 @@ msgstr "Domyślny"
msgctxt "#30227"
msgid "Simple"
msgstr "Prosty"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Wymuś transkodowanie av1"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Następne ponowne oglądanie"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Dni ponownego oglądania (0 = wyłączone)"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Łącz zamiast zastępować (może powodować spowolnienie)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Ukryj liczbę pozycji wyświetlanych w tytule wpisu"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " Zupełnie nieobejrzane"
msgctxt "#30667"
msgid "Action to take"
msgstr "Działanie do podjęcia"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Przesunięcie zakończenia (sekundy)"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Pomijanie napisów końcowych"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Pomijanie wprowadzeń"
msgctxt "#30673"
msgid "Ask"
msgstr "Zapytaj"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Pomijanie reklam"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Pomijanie zapowiedzi"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Pomijanie podsumowań"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Pomijanie segmentów"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Przesunięcie rozpoczęcia (sekundy)"
msgctxt "#30672"
msgid "Skip"
msgstr "Pomiń"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Nic nie rób"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Seriale - Losowo"
msgctxt "#30456"
msgid "All - Random"
msgstr "Wszystkie - Losowo"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Wszystkie - Ostatnio dodane"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Wszystkie - Ulubione"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Seriale na stronę"

View File

@@ -1,16 +1,16 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-11-08 12:25+0000\n"
"Last-Translator: Zahar Koval <ellesterate@gmail.com>\n"
"PO-Revision-Date: 2025-12-23 08:05+0000\n"
"Last-Translator: Gallyam Biktashev <gallyamb@gmail.com>\n"
"Language-Team: Russian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/ru/>\n"
"Language: 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.14\n"
msgctxt "#30332"
msgid "Stop media playback on screensaver activation"
@@ -345,11 +345,11 @@ msgstr "Фильмы - Недавно добавленные"
msgctxt "#30299"
msgid "Cache Images"
msgstr "Кэшировать рисунки"
msgstr "Кэшировать изображения"
msgctxt "#30293"
msgid "Cache images"
msgstr "Кэшировать рисунки"
msgstr "Кэшировать изображения"
msgctxt "#30288"
msgid " - Latest"
@@ -1135,3 +1135,95 @@ msgstr "По умолчанию"
msgctxt "#30227"
msgid "Simple"
msgstr "Простой"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Принудительное перекодирование av1"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Объединение вместо замены (может привести к замедлению работы)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Скрыть количество элементов в заголовке"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Далее Повторный просмотр"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Дни повторного просмотра (0 = отключено)"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " Общее непросмотренное"
msgctxt "#30672"
msgid "Skip"
msgstr "Пропустить"
msgctxt "#30667"
msgid "Action to take"
msgstr "Действие для выполнения"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Начальное смещение (в секундах)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Конечное смещение (в секундах)"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Пропуск сегментов"
msgctxt "#30673"
msgid "Ask"
msgstr "Спросить"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Ничего не делать"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Пропуск вступления"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Пропуск титров"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Пропуск рекламы"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Пропуск обзора"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Пропуск повтора"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Телешоу - случайно"
msgctxt "#30456"
msgid "All - Random"
msgstr "Всё - случайно"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Всё - недавно добавленные"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Всё - избранное"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Телешоу на странице"

View File

@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-28 13:25+0000\n"
"PO-Revision-Date: 2025-05-22 15:01+0000\n"
"Last-Translator: nextlooper42 <nextlooper42@protonmail.com>\n"
"Language-Team: Slovak <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/sk/>\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.14.1\n"
"X-Generator: Weblate 5.11.4\n"
msgctxt "#30008"
msgid "Samba password"
@@ -806,3 +806,400 @@ msgstr "- Často prehrávané"
msgctxt "#30354"
msgid "Go To Series"
msgstr "Prejsť na seriál"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Vynútiť prekódovanie av1"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
msgstr ""
"Ukladať všetky obrázky Jellyfin do vyrovnávacej pamäte ako lokálne obrázky "
"Kodi?"
msgctxt "#30344"
msgid "Number of images removed from cache"
msgstr "Počet obrázkov odstránených z vyrovnávacej pamäte"
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "Odstraňovanie obrázkov z vyrovnávacej pamäte"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Ukladať dátové požiadavky Jellyfin servera do vyrovnávacej pamäte"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Zistená extra výzva na obnovenie"
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 musí vyzvať k obnoveniu čiastočne prehraných položiek, Kodi môže "
"tiež použiť túto výzvu, čo môže spôsobiť jej zdvojenie. Chcete odstrániť "
"dvojitú výzvu?"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "Ukladať artworky do vyrovnávacej pamäte na pozadí"
msgctxt "#30341"
msgid "Background image update interval (0 = disabled)"
msgstr "Interval aktualizácie obrázka na pozadí (0 = vypnuté)"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "Interval kontroly nového obsahu (0 = vypnuté)"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Výzva o externých titilkoch"
msgctxt "#30380"
msgid "Never"
msgstr "Nikdy"
msgctxt "#30381"
msgid "More than one"
msgstr "Viac ako jeden"
msgctxt "#30382"
msgid "Always"
msgstr "Vždy"
msgctxt "#30389"
msgid "User details"
msgstr "Detaily používateľa"
msgctxt "#30397"
msgid " - Pages"
msgstr "- Stránky"
msgctxt "#30406"
msgid "Jellyfin Libraries"
msgstr "Knižnice Jellyfin"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "Akcie doplnkov"
msgctxt "#30420"
msgid "Audio max channels"
msgstr "Maximálny počet zvukových kanálov"
msgctxt "#30421"
msgid "Views"
msgstr "Zobrazenia"
msgctxt "#30422"
msgid "Sorting"
msgstr "Triedenie"
msgctxt "#30425"
msgid "Year"
msgstr "Rok"
msgctxt "#30426"
msgid "Title"
msgstr "Názov"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Okamžitý mix"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "Nepoužité Jellyfin obrázky:"
msgctxt "#30392"
msgid "HTTPS"
msgstr "HTTPS"
msgctxt "#30423"
msgid "NotSet"
msgstr "Nie je nastavené"
msgctxt "#30429"
msgid "Genre"
msgstr "Žáner"
msgctxt "#30433"
msgid "Allow direct file playback"
msgstr "Povoliť priame prehrávanie súborov"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "Prehrať úvodné videá z kín"
msgctxt "#30440"
msgid "Play next"
msgstr "Prehrať nasledujúcu"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Použiť dáta widgetu z vyrovnávacej pamäte"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Jednoduchá kontrola nového obsahu"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Rýchle pripojenie"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "Pokračovať v pozeraní"
msgctxt "#30446"
msgid "There was an error logging in"
msgstr "Pri prihlasovaní došlo k chybe"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Nasleduje v Opätovnom pozeraní"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Kombinovať namiesto nahradenia (môže spôsobiť spomalenie)"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Dni Opätovného pozerania (0 = vypnuté)"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Povoliť rýchle uloženie hesla prepnutého používateľa"
msgctxt "#30388"
msgid "Server details"
msgstr "Detaily servera"
msgctxt "#30390"
msgid "Protocol"
msgstr "Protokol"
msgctxt "#30391"
msgid "HTTP"
msgstr "HTTP"
msgctxt "#30403"
msgid "Movies - Recommendations"
msgstr "Filmy - Odporúčania"
msgctxt "#30410"
msgid " - Collections"
msgstr "- Kolekcie"
msgctxt "#30424"
msgid "Default"
msgstr "Predvolené"
msgctxt "#30383"
msgid "System - "
msgstr "Systém -"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Odstránené nepoužité obrázky:"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Interval náhodných filmov v minútach (0 = vypnuté)"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "Existujúce obrázky pred vymazaním:"
msgctxt "#30404"
msgid " - A-Z"
msgstr "- A-Z"
msgctxt "#30413"
msgid " - Tags"
msgstr "- Tagy"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Vymazať výsledky z vyrovnávacej pamäte"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Interval vyrovnávacej pamäte obrázkov v minútach (0 = vypnuté)"
msgctxt "#30401"
msgid "Info"
msgstr "Info"
msgctxt "#30415"
msgid " - Favorite Collections"
msgstr "- Obľúbené kolekcie"
msgctxt "#30402"
msgid "Add to Kodi Playlist"
msgstr "Pridať do zoznamu prehrávania Kodi"
msgctxt "#30412"
msgid " - Decades"
msgstr "- Dekády"
msgctxt "#30427"
msgid "Added"
msgstr "Pridané"
msgctxt "#30428"
msgid "Rating"
msgstr "Hodnotenie"
msgctxt "#30405"
msgid " - Show All"
msgstr "- Zobraziť všetko"
msgctxt "#30407"
msgid "Global Lists"
msgstr "Globálne zoznamy"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "Vlastné widgety"
msgctxt "#30411"
msgid " - Years"
msgstr "- Roky"
msgctxt "#30414"
msgid " - Favorites"
msgstr "- Obľúbené"
msgctxt "#30418"
msgid "Audio bitrate (Kbits)"
msgstr "Dátový tok zvuku (Kbps)"
msgctxt "#30419"
msgid "Audio codec"
msgstr "Zvukový kodek"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Vynútiť prekódovanie dátového toku streamu (Kbps)"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "Časový limit HTTP v sekundách"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Skryť pozreté položky v zoznamoch"
msgctxt "#30430"
msgid "Label"
msgstr "Označenie"
msgctxt "#30431"
msgid "Seasons"
msgstr "Série"
msgctxt "#30437"
msgid "Playback options"
msgstr "Možnosti prehrávania"
msgctxt "#30435"
msgid "Connection speed test"
msgstr "Test rýchlosti pripojenia"
msgctxt "#30448"
msgid "Shuffle"
msgstr "Zamiešať"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Veľkosť prenesených údajov testu rýchlosti (MB)"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "Zobraziť prehranie ďalšej epizódy pri uvedenom čase v sekundách"
msgctxt "#30447"
msgid "Max Play Queue Size"
msgstr "Maximálna veľkosť fronty na prehrávanie"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "Súbory vyrovnávacej pamäte vymazané"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "Vyčistiť dáta servera z vyrovnávacej pamäte"
msgctxt "#30398"
msgid "Refresh Jellyfin Metadata"
msgstr "Obnovenie Jellyfin metadát"
msgctxt "#30399"
msgid "Hide"
msgstr "Skryť"
msgctxt "#30417"
msgid "You do not have permision to delete this item"
msgstr "Nemáte povolenie na vymazanie tejto položky"
msgctxt "#30444"
msgid "Login using Quick Connect"
msgstr "Prihlásenie pomocou Rýchleho pripojenia"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Skryť počet položiek zobrazených v názve položky"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Úplne nepozreté"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Preskakovač segmentov"
msgctxt "#30667"
msgid "Action to take"
msgstr "Akcia, ktorú treba vykonať"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Počiatočný posun (v sekundách)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Koncový posun (v sekundách)"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Preskakovač tituliek"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Preskakovač úvodu"
msgctxt "#30672"
msgid "Skip"
msgstr "Preskočiť"
msgctxt "#30673"
msgid "Ask"
msgstr "Opýtať sa"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Nič nerobiť"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Preskakovač reklám"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Preskakovač ukážok"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Preskakovač rekapitulácie"

View File

@@ -0,0 +1,60 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2025-12-13 11:55+0000\n"
"Last-Translator: A Boci <ami@boci.co.uk>\n"
"Language-Team: Albanian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/sq/>\n"
"Language: sq\n"
"MIME-Version: 1.0\n"
"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"
msgctxt "#30001"
msgid "Port"
msgstr "Port"
msgctxt "#30003"
msgid "Verify HTTPS certificate"
msgstr "Verifiko çertifikatën HTTPS"
msgctxt "#30006"
msgid "Password"
msgstr "Fjalkalimi"
msgctxt "#30007"
msgid "Samba username"
msgstr "Përdoruesi Samba"
msgctxt "#30008"
msgid "Samba password"
msgstr "Fjalkalimi Samba"
msgctxt "#30012"
msgid "[Change user]"
msgstr "[Ndrysho përdoruesin]"
msgctxt "#30014"
msgid "Jellyfin"
msgstr "Jellyfin"
msgctxt "#30016"
msgid "Device display name"
msgstr "Emri që shfaqet"
msgctxt "#30000"
msgid "Host"
msgstr "Host"
msgctxt "#30005"
msgid "Username"
msgstr "Përdoruesi"
msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[Zbuloni serverin lokal]"
msgctxt "#30017"
msgid "Show connected clients"
msgstr "Trego klientët e lidhur"

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-10-03 09:20+0000\n"
"Last-Translator: Fredrik Lindqvist <landrash@gmail.com>\n"
"PO-Revision-Date: 2025-09-10 20:11+0000\n"
"Last-Translator: Ärik <kwakz4life@gmail.com>\n"
"Language-Team: Swedish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/sv/>\n"
"Language: sv\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.11.4\n"
msgctxt "#30283"
msgid "Play Next Episode?"
@@ -17,7 +17,7 @@ msgstr "Spela Nästa Avsnitt?"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "Tvinga msmpeg4v3 (divx) transkoding"
msgstr "Tvinga msmpeg4v3 (divx) transkodning"
msgctxt "#30218"
msgid "Play next episode after %"
@@ -25,7 +25,7 @@ msgstr "Spela nästa avsnitt efter %"
msgctxt "#30239"
msgid "Force transcode mpeg2"
msgstr "Tvinga mpeg2 transkoding"
msgstr "Tvinga mpeg2 transkodning"
msgctxt "#30224"
msgid "Interaction"
@@ -37,7 +37,7 @@ msgstr "Video tvinga 8 bit"
msgctxt "#30236"
msgid "Force transcode h265 (hevc)"
msgstr "Tvinga h265 (hevc) transkoding"
msgstr "Tvinga h265 (hevc) transkodning"
msgctxt "#30254"
msgid "Show add-on settings"
@@ -53,7 +53,7 @@ msgstr "Video max bredd"
msgctxt "#30211"
msgid "Transcode options"
msgstr "Transkoding alternativ"
msgstr "Transkoderingsinställningar"
msgctxt "#30163"
msgid "Add (cc) if subtitle is available"
@@ -225,7 +225,7 @@ msgstr "Inkludera media stream information"
msgctxt "#30181"
msgid "Include plot"
msgstr "Inkludera intrig"
msgstr "Inkludera handling"
msgctxt "#30214"
msgid "Events"
@@ -241,7 +241,7 @@ msgstr "Tvinga mpeg4 transkodning"
msgctxt "#30260"
msgid "BoxSets"
msgstr "BoxSet"
msgstr "Samlingsbox"
msgctxt "#30259"
msgid "Movies - Favorites"
@@ -269,7 +269,7 @@ msgstr "Avsnitt - Nyligen Tillagt"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "Tvinga Transkoding"
msgstr "Tvinga Transkodning"
msgctxt "#30273"
msgid "Unset Favourite"
@@ -313,7 +313,7 @@ msgstr "Filmer - Genrer"
msgctxt "#30237"
msgid "Start from beginning"
msgstr "Starta från början"
msgstr "Börja från början"
msgctxt "#30252"
msgid "Movies - A-Z"
@@ -361,7 +361,7 @@ msgstr "Uppspelning"
msgctxt "#30000"
msgid "Host"
msgstr "Server"
msgstr "Värd"
msgctxt "#30290"
msgid "All"
@@ -485,7 +485,7 @@ msgstr "URL error"
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "Hoppa tillbaka sekunder"
msgstr "spola tillbaka sekunder"
msgctxt "#30125"
msgid "Done"
@@ -517,7 +517,7 @@ msgstr "Använd cachad widget data"
msgctxt "#30440"
msgid "Play next"
msgstr "Spela härnest"
msgstr "Spela härnäst"
msgctxt "#30250"
msgid "Unknown"
@@ -549,7 +549,7 @@ msgstr "[Upptäck lokal server]"
msgctxt "#30003"
msgid "Verify HTTPS certificate"
msgstr "Verifiera HTTPS-certifikat"
msgstr "Verifiera HTTPS certifikat"
msgctxt "#30001"
msgid "Port"
@@ -653,7 +653,7 @@ msgstr "Gränssnitt"
msgctxt "#30135"
msgid "Error"
msgstr "Error"
msgstr "Fel"
msgctxt "#30113"
msgid "Retrieving Data"
@@ -769,7 +769,7 @@ msgstr "Lägg till \"procent kvar\" bredvid namnen"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "Lägg in en \"inte än sedd\" räknare bredvid namnen"
msgstr "Lägg in en \"osedd\" räknare bredvid namnen"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
@@ -777,7 +777,7 @@ msgstr "TV Serier- Ej sedd"
msgctxt "#30286"
msgid "Movies - Unwatched"
msgstr "Film - Osädda"
msgstr "Film - Osedda"
msgctxt "#30285"
msgid " - Unwatched"
@@ -798,13 +798,12 @@ msgstr "- Nästa"
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 måste fråga om att fortsätta uppspelada halvsedda filmer, Kodi kan "
"också fråga, detta kan orsaka två prompter. Vill du ta bort den dubbla "
"prompter?"
"JellyCon måste fråga om att fortsätta påbörjade filmer, Kodi kan också "
"fråga, detta kan orsaka två prompter. Vill du ta bort den dubbla prompter?"
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Extra uppmaning om att fortsätta upspelning upptäckt"
msgstr "Extra uppmaning om att fortsätta uppspelning upptäckt"
msgctxt "#30247"
msgid "Custom Widget Content"
@@ -816,7 +815,7 @@ msgstr "Alternativ för uppspelning av stream"
msgctxt "#30220"
msgid "Prompt to delete movie after %"
msgstr "Uppmaning att radera film efter %"
msgstr "Uppmana att radera film efter %"
msgctxt "#30219"
msgid " - Prompt before play"
@@ -1130,3 +1129,75 @@ msgstr "Standard"
msgctxt "#30227"
msgid "Simple"
msgstr "Enkel"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Kombinera istället för att byta ut (kan orsaka fördröjningar)"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Tvinga transkodning av1"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Nästa På Titta Igen"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Titta Igen Dagar (0 = Avaktiverat)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Göm antal objekt som visas på huvudmenyn"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Helt obevakad"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Inledande förskjutning (sekunder)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Avslutande förskjutning (sekunder)"
msgctxt "#30672"
msgid "Skip"
msgstr "Hoppa över"
msgctxt "#30673"
msgid "Ask"
msgstr "Fråga"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Gör ingenting"
msgctxt "#30667"
msgid "Action to take"
msgstr "Åtgärd"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segmenthoppare"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Sluttextshoppare"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Introhoppare"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklamhoppare"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Förhandsgranskningshoppare"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Sammanfattningshoppare"

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-12-11 21:30+0000\n"
"Last-Translator: queeup <queeup@zoho.com>\n"
"PO-Revision-Date: 2025-12-29 13:05+0000\n"
"Last-Translator: ilker <isaglam@gmail.com>\n"
"Language-Team: Turkish <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/tr/>\n"
"Language: tr\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.15.1\n"
msgctxt "#30237"
msgid "Start from beginning"
@@ -29,7 +29,7 @@ msgstr "Filmler"
msgctxt "#30229"
msgid "TV Shows"
msgstr "TV Şovları"
msgstr "Diziler"
msgctxt "#30224"
msgid "Interaction"
@@ -83,10 +83,9 @@ msgctxt "#30211"
msgid "Transcode options"
msgstr "Kod dönüştürme seçenekleri"
#, fuzzy
msgctxt "#30210"
msgid "HTTP direct stream"
msgstr "HTTP doğrudan akışı"
msgstr "HTTP doğrudan akış"
msgctxt "#30209"
msgid "File direct path"
@@ -96,10 +95,9 @@ msgctxt "#30208"
msgid "Max stream bitrate (Kbits)"
msgstr "Maksimum akış bit hızı (Kbps)"
#, fuzzy
msgctxt "#30207"
msgid "Playback"
msgstr "Geri çalma"
msgstr "Oynatma"
msgctxt "#30206"
msgid "Playback type"
@@ -143,7 +141,7 @@ msgstr "Sunucu seç"
msgctxt "#30163"
msgid "Add (cc) if subtitle is available"
msgstr "Altyazı varsa (cc) ekleyin"
msgstr "Alt yazı varsa (cc) ekleyin"
msgctxt "#30139"
msgid "No Media Type Set"
@@ -163,7 +161,7 @@ msgstr "Tamamlandı"
msgctxt "#30121"
msgid "On resume"
msgstr "Sürdürünce"
msgstr "Devam Ettirildiğinde"
msgctxt "#30120"
msgid "Show load progress"
@@ -171,16 +169,15 @@ msgstr "Yükleme ilerlemesini göster"
msgctxt "#30118"
msgid "Add resume percent to names"
msgstr "İsimlere özgeçmiş yüzdesi ekle"
msgstr "İsimlere sürdürme yüzdesi ekle"
msgctxt "#30116"
msgid "Add unwatched counts to names"
msgstr "İsimlere izlenmeyen sayılarını ekleyin"
#, fuzzy
msgctxt "#30114"
msgid "Jump back seconds"
msgstr "Saniyeler geri atla"
msgstr "Geri atlama saniyesi"
msgctxt "#30113"
msgid "Retrieving Data"
@@ -210,7 +207,6 @@ msgctxt "#30063"
msgid "N/A"
msgstr "Yok"
#, fuzzy
msgctxt "#30053"
msgid "Waiting for server to delete"
msgstr "Sunucunun silmesi bekleniyor"
@@ -221,7 +217,7 @@ msgstr "Siliniyor"
msgctxt "#30045"
msgid "Username not found"
msgstr "Kullanıcı bulunamadı"
msgstr "Kullanıcı adı bulunamadı"
msgctxt "#30044"
msgid "Incorrect Username/Password"
@@ -231,10 +227,9 @@ msgctxt "#30027"
msgid "Enable debug logging"
msgstr "Hata ayıklama günlüğünü etkinleştir"
#, fuzzy
msgctxt "#30026"
msgid "Widget item select action"
msgstr "Widget öğesi seçme eylemi"
msgstr "Pencere ögesi seçme eylemi"
msgctxt "#30025"
msgid "Password:"
@@ -242,11 +237,11 @@ msgstr "Parola:"
msgctxt "#30024"
msgid "Username:"
msgstr "Kullanıcı:"
msgstr "Kullanıcı adı:"
msgctxt "#30023"
msgid "Hide unwatched episode details"
msgstr "İzlenmeyen bölüm ayrıntılarını gizle"
msgstr "İzlenmemiş bölümlerin ayrıntılarını gizle"
msgctxt "#30022"
msgid "Advanced"
@@ -258,7 +253,7 @@ msgstr "Tüm bölümleri göster"
msgctxt "#30020"
msgid "Flatten single season"
msgstr "Tek sezon düzleştirin"
msgstr "Tek sezonu düzleştir"
msgctxt "#30019"
msgid "Filtered episode name format"
@@ -278,7 +273,7 @@ msgstr "Cihazın görünen adı"
msgctxt "#30015"
msgid "Log timing data"
msgstr "Zamanlama verilerini günlüğe kaydet"
msgstr "Günlük zamanlama verisi"
msgctxt "#30014"
msgid "Jellyfin"
@@ -292,7 +287,6 @@ msgctxt "#30011"
msgid "[Detect local server]"
msgstr "[Yerel sunucuyu algıla]"
#, fuzzy
msgctxt "#30010"
msgid "Number of performance profiles to capture"
msgstr "Yakalanacak performans profili sayısı"
@@ -303,7 +297,7 @@ msgstr "Samba parolası"
msgctxt "#30007"
msgid "Samba username"
msgstr "Samba Kullanıcı"
msgstr "Samba kullanıcı adı"
msgctxt "#30006"
msgid "Password"
@@ -311,7 +305,7 @@ msgstr "Şifre"
msgctxt "#30005"
msgid "Username"
msgstr "Kullanıcı"
msgstr "Kullanıcı adı"
msgctxt "#30003"
msgid "Verify HTTPS certificate"
@@ -327,7 +321,7 @@ msgstr "Eklenti ayarlarını göster"
msgctxt "#30271"
msgid "Mark Unwatched"
msgstr "İzlenmemiş işaretle"
msgstr "İzlenmedi olarak işaretle"
msgctxt "#30267"
msgid " - In Progress"
@@ -335,7 +329,7 @@ msgstr "- Devam Eden"
msgctxt "#30268"
msgid " - Recently Added"
msgstr "- Yeni Eklenen"
msgstr "- Son Eklenen"
msgctxt "#30001"
msgid "Port"
@@ -347,20 +341,19 @@ msgstr "mpeg2 kod dönüştürmeyi zorla"
msgctxt "#30241"
msgid "Force transcode mpeg4"
msgstr "mpeg4 kodlamayı zorla"
msgstr "mpeg4 kod dönüştürmeyi zorla"
msgctxt "#30240"
msgid "Force transcode msmpeg4v3 (divx)"
msgstr "msmpeg4v3 (divx) kodlamayı zorla"
msgstr "msmpeg4v3 (divx) kod dönüştürmeyi zorla"
msgctxt "#30246"
msgid "Search"
msgstr "Ara"
#, fuzzy
msgctxt "#30247"
msgid "Custom Widget Content"
msgstr "Özel Widget İçeriği"
msgstr "Özel Pencere Ögesi İçeriği"
msgctxt "#30252"
msgid "Movies - A-Z"
@@ -388,7 +381,7 @@ msgstr "Bölümler - Devam eden"
msgctxt "#30265"
msgid "Episodes - Next Up"
msgstr "Bölümler - Gelecek"
msgstr "Bölümler - Sıradaki"
msgctxt "#30266"
msgid "Movies - Pages"
@@ -396,7 +389,7 @@ msgstr "Filmler - Sayfalar"
msgctxt "#30270"
msgid "Mark Watched"
msgstr "İzlenmiş işaretle"
msgstr "İzlendi olarak işaretle"
msgctxt "#30269"
msgid "Movies - Random"
@@ -414,10 +407,9 @@ msgctxt "#30274"
msgid "Delete"
msgstr "Sil"
#, fuzzy
msgctxt "#30276"
msgid "Extra Resume Prompt Detected"
msgstr "Ekstra Devam İstemi Algılandı"
msgstr "Çift Sürdürme İstemi Algılandı"
msgctxt "#30225"
msgid "Interface Mode"
@@ -431,10 +423,9 @@ msgctxt "#30227"
msgid "Simple"
msgstr "Basit"
#, fuzzy
msgctxt "#30238"
msgid "Playback stream options"
msgstr "Oynatma yayın ayarları"
msgstr "Oynatma akış seçenekleri"
msgctxt "#30250"
msgid "Unknown"
@@ -446,7 +437,7 @@ msgstr "Filmler - Türler"
msgctxt "#30257"
msgid "Movies - Recently Added"
msgstr "Filmler - Yeni Eklenen"
msgstr "Filmler - Son Eklenen"
msgctxt "#30258"
msgid "Movies - In Progress"
@@ -462,7 +453,7 @@ msgstr "Bölümler - Son Eklenen"
msgctxt "#30275"
msgid "Force Transcode"
msgstr "Kodlamaya Zorla"
msgstr "Kod Dönüştürmeye Zorla"
msgctxt "#30354"
msgid "Go To Series"
@@ -494,4 +485,741 @@ msgstr "Ses Akışını Seçin"
msgctxt "#30292"
msgid "Select Subtitle Stream"
msgstr "Altyazı Akışını Seçin"
msgstr "Alt yazı Akışını Seçin"
msgctxt "#30348"
msgid "Add user ratings"
msgstr "Kullanıcı puanı ekleyin"
msgctxt "#30311"
msgid "Library - "
msgstr "Kütüphane -"
msgctxt "#30418"
msgid "Audio bitrate (Kbits)"
msgstr "Ses bit hızı (Kbps)"
msgctxt "#30289"
msgid "TV Shows - Genres"
msgstr "Diziler - Türler"
msgctxt "#30325"
msgid " - Genres"
msgstr "- Türler"
msgctxt "#30279"
msgid "TV Shows - Unwatched"
msgstr "Diziler - İzlenmemiş"
msgctxt "#30350"
msgid "Music - Recently Added"
msgstr "Müzik - Son Eklenen"
msgctxt "#30445"
msgid "Continue Watching"
msgstr "İzlemeye Devam Et"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Sıradaki Bölümü Tekrar İzle"
msgctxt "#30447"
msgid "Max Play Queue Size"
msgstr "Maksimum Oynatma Kuyruğu Boyutu"
msgctxt "#30449"
msgid "Instant Mix"
msgstr "Anlık Mix"
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'un kısmen oynatılan ögelerde sürdürmeyi istemesi gerekir. Bunu Kodi "
"de isteyebilir ve bu çift isteme neden olabilir. Çift istemi kaldırmak "
"istiyor musunuz?"
msgctxt "#30286"
msgid "Movies - Unwatched"
msgstr "Filmler - İzlenmemiş"
msgctxt "#30287"
msgid "TV Shows - Latest"
msgstr "Diziler - En Son"
msgctxt "#30322"
msgid "Auto resume"
msgstr "Otomatik sürdür"
msgctxt "#30351"
msgid "Music - Recently Played"
msgstr "Müzik - Son Çalınan"
msgctxt "#30432"
msgid "Hide watched items in lists"
msgstr "Listelerdeki izlenmiş içerikleri gizle"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "av1 kod dönüştürmeyi zorla"
msgctxt "#30428"
msgid "Rating"
msgstr "Puan"
msgctxt "#30309"
msgid "Select Media Source"
msgstr "Medya Kaynağını Seçin"
msgctxt "#30278"
msgid " - Next Up"
msgstr "- Sıradaki Bölümler"
msgctxt "#30285"
msgid " - Unwatched"
msgstr "- İzlenmemiş"
msgctxt "#30349"
msgid " - Recently Played"
msgstr "- Son Oynatılan"
msgctxt "#30288"
msgid " - Latest"
msgstr "- Sonuncu"
msgctxt "#30260"
msgid "BoxSets"
msgstr "Kutu Setleri"
msgctxt "#30283"
msgid "Play Next Episode?"
msgstr "Sonraki Bölüm Oynatılsın mı?"
msgctxt "#30305"
msgid "Not Found"
msgstr "Bulunamadı"
msgctxt "#30315"
msgid "Suppress notifications for connection errors"
msgstr "Bağlantı hatalarına ilişkin bildirimleri bastır"
msgctxt "#30317"
msgid "Play All"
msgstr "Hepsini Oynat"
msgctxt "#30280"
msgid "Missing Title"
msgstr "Eksik Başlık"
msgctxt "#30294"
msgid "Notice"
msgstr "Uyarı"
msgctxt "#30295"
msgid "To use this feature you need HTTP control enabled"
msgstr ""
"Bu özelliği kullanmak için HTTP kontrolünün etkinleştirilmiş olması gerekir"
msgctxt "#30296"
msgid "Delete"
msgstr "Sil"
msgctxt "#30302"
msgid "Existing images : "
msgstr "Mevcut resimler:"
msgctxt "#30303"
msgid "Missing Jellyfin images : "
msgstr "Eksik Jellyfin görselleri:"
msgctxt "#30306"
msgid "Playback starting"
msgstr "Oynatma başlatılıyor"
msgctxt "#30307"
msgid "Play Trailer"
msgstr "Fragmanı Oynat"
msgctxt "#30308"
msgid "Select Trailer"
msgstr "Fragman Seç"
msgctxt "#30310"
msgid "Enable Jellyfin remote control"
msgstr "Jellyfin uzaktan kumandasını etkinleştir"
msgctxt "#30312"
msgid "All - "
msgstr "Hepsi -"
msgctxt "#30313"
msgid "Menu"
msgstr "Menü"
msgctxt "#30314"
msgid "Play"
msgstr "Oynat"
msgctxt "#30316"
msgid "Connection Error"
msgstr "Bağlantı Hatası"
msgctxt "#30318"
msgid "Music - Albums"
msgstr "Müzik - Albümler"
msgctxt "#30282"
msgid "No Jellyfin servers detected on your local network."
msgstr "Yerel ağınızda Jellyfin sunucusu algılanmadı."
msgctxt "#30290"
msgid "All"
msgstr "Hepsi"
msgctxt "#30281"
msgid "Refresh Cached Images"
msgstr "Önbelleğe Alınmış Görüntüleri Yenile"
msgctxt "#30293"
msgid "Cache images"
msgstr "Resimleri önbelleğe al"
msgctxt "#30297"
msgid "Delete unused images?"
msgstr "Kullanılmayan görseller silinsin mi?"
msgctxt "#30298"
msgid "Deleting Kodi Images"
msgstr "Kodi Görüntülerini Silme"
msgctxt "#30299"
msgid "Cache Images"
msgstr "Görüntüleri Önbelleğe Al"
msgctxt "#30300"
msgid "Cache all Jellyfin images as local Kodi images?"
msgstr ""
"Tüm Jellyfin görselleri yerel Kodi görselleri olarak önbelleğe alınsın mı?"
msgctxt "#30301"
msgid "Caching Images"
msgstr "Görüntüleri Önbelleğe Alma"
msgctxt "#30304"
msgid "Cached Jellyfin images : "
msgstr "Önbelleğe alınmış Jellyfin görüntüleri:"
msgctxt "#30406"
msgid "Jellyfin Libraries"
msgstr "Jellyfin Kütüphaneleri"
msgctxt "#30410"
msgid " - Collections"
msgstr "- Koleksiyonlar"
msgctxt "#30414"
msgid " - Favorites"
msgstr "- Favoriler"
msgctxt "#30415"
msgid " - Favorite Collections"
msgstr "- Favori Koleksiyonlar"
msgctxt "#30328"
msgid "Show empty folders (shows, seasons, collections)"
msgstr "Boş klasörleri göster (diziler, sezonlar, koleksiyonlar)"
msgctxt "#30340"
msgid "Group movies into collections"
msgstr "Filmleri koleksiyonlar halinde grupla"
msgctxt "#30437"
msgid "Playback options"
msgstr "Oynatma seçenekleri"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Giriş başlığında gösterilecek öge sayısını gizle"
msgctxt "#30441"
msgid "Use cached widget data"
msgstr "Önbelleğe alınmış pencere ögesi verilerini kullan"
msgctxt "#30408"
msgid "Custom Widgets"
msgstr "Özel Pencere Ögesi"
msgctxt "#30344"
msgid "Number of images removed from cache"
msgstr "Önbellekten silinen görsel sayısı"
msgctxt "#30323"
msgid "Artists"
msgstr "Sanatçılar"
msgctxt "#30337"
msgid "Song"
msgstr "Şarkı"
msgctxt "#30372"
msgid "Server URL"
msgstr "Sunucu URLsi"
msgctxt "#30373"
msgid "Scanning for local servers"
msgstr "Yerel sunucular taranıyor"
msgctxt "#30374"
msgid "Sending request"
msgstr "İstek gönderiliyor"
msgctxt "#30377"
msgid "Sending request"
msgstr "İstek gönderiliyor"
msgctxt "#30381"
msgid "More than one"
msgstr "Birden fazla"
msgctxt "#30320"
msgid " - Albums"
msgstr "- Albümler"
msgctxt "#30327"
msgid "Go To Season"
msgstr "Sezona Git"
msgctxt "#30329"
msgid "Screensaver"
msgstr "Ekran Koruyucu"
msgctxt "#30332"
msgid "Stop media playback on screensaver activation"
msgstr "Ekran koruyucu etkinleştirildiğinde medya oynatımını durdur"
msgctxt "#30334"
msgid "Use JellyCon context menu"
msgstr "JellyCon bağlam menüsünü kullan"
msgctxt "#30341"
msgid "Background image update interval (0 = disabled)"
msgstr "Arka plan görseli güncelleme aralığı (0 = devre dışı)"
msgctxt "#30342"
msgid "New content check interval (0 = disabled)"
msgstr "Yeni içerik kontrol aralığı (0 = devre dışı)"
msgctxt "#30345"
msgid "Cache Jellyfin server data requests"
msgstr "Jellyfin sunucu veri isteklerini önbelleğe al"
msgctxt "#30352"
msgid "Music - Frequently Played"
msgstr "Müzik - Sık Çalınanlar"
msgctxt "#30355"
msgid "Kodi Settings->Services->Allow remote control via HTTP"
msgstr "Kodi Ayarları->Hizmetler->HTTP üzerinden uzaktan kontrole izin ver"
msgctxt "#30356"
msgid "Loading existing image list"
msgstr "Mevcut görsel listesi yükleniyor"
msgctxt "#30357"
msgid "Processing existing image list"
msgstr "Mevcut görsel listesi işleniyor"
msgctxt "#30358"
msgid "Retreiving remote image list"
msgstr "Uzak görsel listesi alınıyor"
msgctxt "#30363"
msgid "Save Password?"
msgstr "Şifre Kaydedilsin mi?"
msgctxt "#30364"
msgid "Do you want to save the password?"
msgstr "Şifreyi kaydetmek istiyor musunuz?"
msgctxt "#30366"
msgid "Manually enter user details"
msgstr "Kullanıcı bilgilerini elle gir"
msgctxt "#30368"
msgid "Clear Password?"
msgstr "Şifre Temizlensin mi?"
msgctxt "#30370"
msgid "Do you want to manually enter a server url?"
msgstr "Sunucu URLsini elle girmek istiyor musunuz?"
msgctxt "#30375"
msgid "Receiving data packet"
msgstr "Veri paketi alınıyor"
msgctxt "#30378"
msgid "Persist user details"
msgstr "Kullanıcı bilgilerini kalıcı hale getir"
msgctxt "#30382"
msgid "Always"
msgstr "Her zaman"
msgctxt "#30384"
msgid "Random movies interval minutes (0 = disabled)"
msgstr "Rastgele filmler aralığı (dakika cinsinden) (0 = devre dışı)"
msgctxt "#30367"
msgid "Allow fast user switching password saving"
msgstr "Geçiş yapılan kullanıcının şifresinin hızlı kaydına izin ver"
msgctxt "#30330"
msgid "Show change user dialog"
msgstr "Kullanıcı değiştirme penceresini göster"
msgctxt "#30331"
msgid "Movies per page"
msgstr "Sayfa başına film"
msgctxt "#30333"
msgid "Cache artwork in the background"
msgstr "Görselleri arka planda önbelleğe al"
msgctxt "#30338"
msgid "Album"
msgstr "Albüm"
msgctxt "#30343"
msgid "Changes Require Kodi Restart"
msgstr "Değişiklikler için Kodi'nin yeniden başlatılması gerekiyor"
msgctxt "#30339"
msgid "Person"
msgstr "Kişi"
msgctxt "#30347"
msgid "Getting Existing Images"
msgstr "Mevcut Görseller Alınıyor"
msgctxt "#30380"
msgid "Never"
msgstr "Asla"
msgctxt "#30319"
msgid "Music - All Album Artists"
msgstr "Müzik - Tüm Albüm Sanatçıları"
msgctxt "#30321"
msgid " - Album Artists"
msgstr "- Albüm Sanatçıları"
msgctxt "#30353"
msgid " - Frequently Played"
msgstr "- Sık Çalınanlar"
msgctxt "#30360"
msgid " - Channels"
msgstr "- Kanallar"
msgctxt "#30361"
msgid " - Programs"
msgstr "- Programlar"
msgctxt "#30362"
msgid " - Recordings"
msgstr "- Kayıtlar"
msgctxt "#30376"
msgid "Checking server url"
msgstr "Sunucu URLsi kontrol ediliyor"
msgctxt "#30383"
msgid "System - "
msgstr "Sistem -"
msgctxt "#30346"
msgid "Deleteing Cached Images"
msgstr "Önbelleğe Alınmış Görseller Siliniyor"
msgctxt "#30359"
msgid "Building full image list"
msgstr "Tam görsel listesi oluşturuluyor"
msgctxt "#30369"
msgid "Do you want to clear your saved password?"
msgstr "Kaydedilmiş şifrenizi temizlemek istiyor musunuz?"
msgctxt "#30371"
msgid "Could not connect to the URL you entered, do you want to try again?"
msgstr "Girdiğiniz URL'ye bağlanılamadı, tekrar denemek ister misiniz?"
msgctxt "#30379"
msgid "External subtitle prompt"
msgstr "Harici alt yazı istemi"
msgctxt "#30433"
msgid "Allow direct file playback"
msgstr "Doğrudan dosya oynatımına izin ver"
msgctxt "#30446"
msgid "There was an error logging in"
msgstr "Oturum açılırken bir sorun oluştu"
msgctxt "#30448"
msgid "Shuffle"
msgstr "Karıştır"
msgctxt "#30386"
msgid "Unused Jellyfin images : "
msgstr "Kullanılmamış Jellyfin fotoğrafları:"
msgctxt "#30392"
msgid "HTTPS"
msgstr "HTTPS"
msgctxt "#30399"
msgid "Hide"
msgstr "Gizle"
msgctxt "#30413"
msgid " - Tags"
msgstr "- Etiketler"
msgctxt "#30417"
msgid "You do not have permision to delete this item"
msgstr "Bu ögeyi silmek için izniniz yok"
msgctxt "#30425"
msgid "Year"
msgstr "Yıl"
msgctxt "#30440"
msgid "Play next"
msgstr "Sonrakini oynat"
msgctxt "#30387"
msgid "Unused images removed : "
msgstr "Kaldırılan kullanılmamış fotoğraflar:"
msgctxt "#30388"
msgid "Server details"
msgstr "Sunucu detayları"
msgctxt "#30389"
msgid "User details"
msgstr "Kullanıcı detayları"
msgctxt "#30403"
msgid "Movies - Recommendations"
msgstr "Filmler - Öneriler"
msgctxt "#30404"
msgid " - A-Z"
msgstr "- A-Z"
msgctxt "#30405"
msgid " - Show All"
msgstr "- Tümünü Göster"
msgctxt "#30409"
msgid "Add-on Actions"
msgstr "Eklenti Hareketleri"
msgctxt "#30411"
msgid " - Years"
msgstr "- Yıllar"
msgctxt "#30422"
msgid "Sorting"
msgstr "Ayırma"
msgctxt "#30423"
msgid "NotSet"
msgstr "Ayarlanmadı"
msgctxt "#30424"
msgid "Default"
msgstr "Varsayılan"
msgctxt "#30426"
msgid "Title"
msgstr "Başlık"
msgctxt "#30427"
msgid "Added"
msgstr "Eklendi"
msgctxt "#30429"
msgid "Genre"
msgstr "Tür"
msgctxt "#30431"
msgid "Seasons"
msgstr "Sezonlar"
msgctxt "#30435"
msgid "Connection speed test"
msgstr "Bağlantı hız testi"
msgctxt "#30436"
msgid "Speed test data size (MB)"
msgstr "Veri hızını test et (MB)"
msgctxt "#30438"
msgid "Play cinema intros"
msgstr "Sinema jeneriklerini oynat"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Değiştirmek yerine birleştir (yavaşlamaya neden olabilir)"
msgctxt "#30390"
msgid "Protocol"
msgstr "Protokol"
msgctxt "#30393"
msgid "Clear Cache Result"
msgstr "Önbellek sonuçlarını temizle"
msgctxt "#30391"
msgid "HTTP"
msgstr "HTTP"
msgctxt "#30394"
msgid "Cache files deleted"
msgstr "Önbellek dosyaları silindi"
msgctxt "#30401"
msgid "Info"
msgstr "Bilgi"
msgctxt "#30397"
msgid " - Pages"
msgstr "- Sayfalar"
msgctxt "#30421"
msgid "Views"
msgstr "İzlenme"
msgctxt "#30395"
msgid "Clear cached server data"
msgstr "Önbelleğe alınmış sunucu verisini temizle"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Segment Atlayıcı"
msgctxt "#30672"
msgid "Skip"
msgstr "Atla"
msgctxt "#30673"
msgid "Ask"
msgstr "Sor"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Hiçbir şey yapma"
msgctxt "#30439"
msgid "Show play next episode at time left in seconds"
msgstr "Saniye cinsinden kalan zamanda sonraki bölümü oynatmayı göster"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Tamamen İzlenmemiş"
msgctxt "#30407"
msgid "Global Lists"
msgstr "Global Listeler"
msgctxt "#30412"
msgid " - Decades"
msgstr "- On yıllar"
msgctxt "#30416"
msgid "HTTP timeout seconds"
msgstr "HTTP zaman aşımı süresi (saniye cinsinden)"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
msgstr "Kod dönüştürme akışı bit hızını zorla (Kbps)"
msgctxt "#30442"
msgid "Simple new content check"
msgstr "Basit yeni içerik kontrolü"
msgctxt "#30402"
msgid "Add to Kodi Playlist"
msgstr "Kodi çalma listesine ekle"
msgctxt "#30430"
msgid "Label"
msgstr "Etiket"
msgctxt "#30667"
msgid "Action to take"
msgstr "Yapılacak eylem"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Jenerik Atlayıcı"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Kredit Atlayıcı"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Reklam Atlayıcı"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Önizleme Atlayıcı"
msgctxt "#30385"
msgid "Existing images before delete : "
msgstr "Silinmeden önce mevcut resimler:"
msgctxt "#30420"
msgid "Audio max channels"
msgstr "Ses max kanalları"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Yeniden izlenen günler (0 = İnaktif)"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Özet Geçici"
msgctxt "#30400"
msgid "Cache images interval minutes (0 = disabled)"
msgstr "Önbellek görüntüleri aralığı dakika (0 = devre dışı)"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Başlangıç Ofseti (saniye)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Son Ofset (saniye)"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "Diziler - Rastgele"
msgctxt "#30456"
msgid "All - Random"
msgstr "Hepsi - Rastgele"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Hepsi - Son Eklenen"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Hepsi - Favoriler"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "Sayfa başına Diziler"

View File

@@ -1,16 +1,16 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-09-01 15:40+0000\n"
"Last-Translator: stanol <stanol777@gmail.com>\n"
"PO-Revision-Date: 2025-12-15 22:55+0000\n"
"Last-Translator: kscop-n1 <karpenko.serhii@outlook.com>\n"
"Language-Team: Ukrainian <https://translate.jellyfin.org/projects/jellycon/"
"jellycon/uk/>\n"
"Language: uk\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.14\n"
msgctxt "#30434"
msgid "Force transcode stream bitrate (Kbits)"
@@ -46,7 +46,7 @@ msgstr "Увійти використовуючи Quick Connect"
msgctxt "#30443"
msgid "Quick Connect"
msgstr "Quick Connect"
msgstr "Швидке підключення"
msgctxt "#30442"
msgid "Simple new content check"
@@ -600,7 +600,7 @@ msgstr "Кешувати всі зображення Jellyfin як локаль
msgctxt "#30299"
msgid "Cache Images"
msgstr "Кешувати зображення"
msgstr "Кешувати Зображення"
msgctxt "#30298"
msgid "Deleting Kodi Images"
@@ -1136,3 +1136,95 @@ msgstr "За замовчуванням"
msgctxt "#30227"
msgid "Simple"
msgstr "Простий"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "Примусово перекодовувати av1"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "Об'єднати замість заміни (може спричинити уповільнення)"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "Далі Повторний перегляд"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "Повторний перегляд днів (0 = вимкнено)"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "Приховати кількість елементів для показу в заголовку запису"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - Цілком Непереглянуто"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "Пропуск Сегмента"
msgctxt "#30667"
msgid "Action to take"
msgstr "Дії які потрібно зробити"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "Початковий зсув (секунди)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "Кінцевий зсув (секунди)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "Пропуск Вступу"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "Пропуск титрів"
msgctxt "#30672"
msgid "Skip"
msgstr "Пропустити"
msgctxt "#30673"
msgid "Ask"
msgstr "Запитати"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "Нічого не робити"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "Пропуск реклами"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "Пропуск превʼю"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "Пропустити нагадування"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "TV шоу на сторінці"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "ТV шоу - Випадкове"
msgctxt "#30456"
msgid "All - Random"
msgstr "Все - Випадково"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "Все - Нещодавно додані"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "Все - Улюблене"

View File

@@ -1,15 +1,15 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2023-11-08 12:25+0000\n"
"Last-Translator: kevin guo <sxkj_guo@qq.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.jellyfin.org/projects/"
"jellycon/jellycon/zh_Hans/>\n"
"PO-Revision-Date: 2025-12-15 22:55+0000\n"
"Last-Translator: 無情天 <kofzhanganguo@126.com>\n"
"Language-Team: Chinese (Simplified Han script) <https://"
"translate.jellyfin.org/projects/jellycon/jellycon/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.14.1\n"
"X-Generator: Weblate 5.14\n"
msgctxt "#30442"
msgid "Simple new content check"
@@ -1130,3 +1130,95 @@ msgstr "默认值"
msgctxt "#30227"
msgid "Simple"
msgstr "简单"
msgctxt "#30242"
msgid "Force transcode av1"
msgstr "强制转码为 AV1 格式"
msgctxt "#30452"
msgid "Combine instead of replace (might cause slow-down)"
msgstr "合并而非替换(可能会导致速度减慢)"
msgctxt "#30451"
msgid "Rewatch Days (0 = Disabled)"
msgstr "重看天数0=已禁用)"
msgctxt "#30450"
msgid "Next Up Rewatching"
msgstr "下一个重看"
msgctxt "#30453"
msgid "Hide number of items to show on entry title"
msgstr "隐藏条目标题上显示的项目数"
msgctxt "#30454"
msgid " - Totally Unwatched"
msgstr " - 完全未观看"
msgctxt "#30672"
msgid "Skip"
msgstr "跳过"
msgctxt "#30666"
msgid "Segment Skipper"
msgstr "分段跳过"
msgctxt "#30667"
msgid "Action to take"
msgstr "采取的行动"
msgctxt "#30668"
msgid "Start Offset (seconds)"
msgstr "起始偏移(秒)"
msgctxt "#30669"
msgid "End Offset (seconds)"
msgstr "结束偏移(秒)"
msgctxt "#30670"
msgid "Intro Skipper"
msgstr "简介跳过"
msgctxt "#30671"
msgid "Credit Skipper"
msgstr "片头跳过"
msgctxt "#30673"
msgid "Ask"
msgstr "询问"
msgctxt "#30674"
msgid "Do Nothing"
msgstr "无动作"
msgctxt "#30675"
msgid "Commercial Skipper"
msgstr "广告跳过"
msgctxt "#30677"
msgid "Recap Skipper"
msgstr "回顾跳过"
msgctxt "#30676"
msgid "Preview Skipper"
msgstr "预告跳过"
msgctxt "#30455"
msgid "TV Shows - Random"
msgstr "电视节目 - 随机"
msgctxt "#30456"
msgid "All - Random"
msgstr "全部 - 随机"
msgctxt "#30457"
msgid "All - Recently Added"
msgstr "全部 - 最近添加"
msgctxt "#30458"
msgid "All - Favorites"
msgstr "全部 - 收藏夹"
msgctxt "#30678"
msgid "TV Shows per page"
msgstr "每页显示的电视节目数量"

File diff suppressed because it is too large Load Diff

View File

@@ -41,6 +41,13 @@ class CacheArtwork(threading.Thread):
last_update = 0
home_window = HomeWindow()
settings = xbmcaddon.Addon()
# Check if disk caching is disabled
disable_disk_cache = settings.getSetting('disable_disk_cache') == 'true'
if disable_disk_cache:
log.debug("CacheArtwork : Disk caching disabled, artwork caching skipped")
return
latest_content_hash = "never"
check_interval = int(settings.getSetting('cacheImagesOnScreenSaver_interval'))
check_interval = check_interval * 60

View File

@@ -54,6 +54,13 @@ class DataManager:
log.debug("last_content_url : use_cache={0} url={1}".format(use_cache, url))
home_window.set_property("last_content_url", url)
# Check if disk caching is disabled
settings = xbmcaddon.Addon()
disable_disk_cache = settings.getSetting('disable_disk_cache') == 'true'
if disable_disk_cache:
use_cache = False
log.debug("Disk caching disabled - data will be kept in RAM only")
user_id = self.user_details.get('user_id')
server = self.api.server
@@ -164,6 +171,13 @@ class CacheManagerThread(threading.Thread):
log.debug("CacheManagerThread : Started")
home_window = HomeWindow()
settings = xbmcaddon.Addon()
disable_disk_cache = settings.getSetting('disable_disk_cache') == 'true'
if disable_disk_cache:
log.debug("CacheManagerThread : Disk caching disabled, skipping cache operations")
return
is_fresh = False
# if the data is fresh then just save it

View File

@@ -3,9 +3,11 @@ from __future__ import (
)
import xbmcgui
import xbmc
from .lazylogger import LazyLogger
from .utils import translate_string, send_event_notification
from .utils import seconds_to_ticks, ticks_to_seconds, translate_string, send_event_notification
log = LazyLogger(__name__)
@@ -206,3 +208,57 @@ class PlayNextDialog(xbmcgui.WindowXMLDialog):
def get_play_called(self):
return self.play_called
class SkipDialog(xbmcgui.WindowXMLDialog):
action_exitkeys_id = None
media_id = None
start = None
end = None
has_been_dissmissed = False
def __init__(self, *args, **kwargs):
log.debug("SkipDialog: __init__")
xbmcgui.WindowXML.__init__(self, *args, **kwargs)
def onInit(self):
log.debug("SkipDialog: onInit")
self.action_exitkeys_id = [10, 13]
def onFocus(self, control_id):
pass
def doAction(self, action_id):
pass
def onMessage(self, message):
log.debug("SkipDialog: onMessage: {0}".format(message))
def onAction(self, action):
log.debug("SkipDialog: onAction: {0}".format(action.getId()))
if action.getId() == 10 or action.getId() == 92: # ACTION_PREVIOUS_MENU & ACTION_NAV_BACK
log.debug("SkipDialog: dismissing dialog so it does not open again")
self.has_been_dissmissed = True
self.close()
def onClick(self, control_id):
log.debug("SkipDialog: onClick: {0}".format(control_id))
player = xbmc.Player()
current_ticks = seconds_to_ticks(player.getTime())
if self.start is not None and self.end is not None and current_ticks >= self.start and current_ticks <= self.end:
log.debug("SkipDialog: skipping segment because current ticks ({0}) is in range".format(current_ticks))
# If click during segment, skip it
player.seekTime(ticks_to_seconds(self.end))
self.close()
def get_play_called(self):
return self.play_called
def is_button_shown(self):
try:
self.getFocus()
return True
except Exception:
return False

View File

@@ -8,7 +8,7 @@ import re
import xbmcaddon
import xbmcplugin
import xbmcgui
from six.moves.urllib.parse import quote, unquote
from six.moves.urllib.parse import quote, unquote, parse_qsl
from .datamanager import DataManager
from .lazylogger import LazyLogger
@@ -40,6 +40,7 @@ def get_content(url, params):
view_type = ""
content_type = ""
media_type = str(media_type).lower().strip()
url_params = dict(parse_qsl(url))
if media_type.startswith("movie"):
view_type = "Movies"
content_type = 'movies'
@@ -88,29 +89,46 @@ def get_content(url, params):
progress.update(0, translate_string(30113))
# update url for paging
start_index = 0
page_limit = int(settings.getSetting('moviePageSize'))
start_index = int(url_params.get("StartIndex", 0))
url_limit = url_params.get("Limit")
movie_page_limit = int(settings.getSetting('moviePageSize'))
show_page_limit = int(settings.getSetting('showPageSize'))
url_prev = None
url_next = None
if page_limit > 0 and media_type.startswith("movie"):
m = re.search('StartIndex=([0-9]{1,4})', url)
if m and m.group(1):
if not url_limit or start_index > 0:
if movie_page_limit > 0 and media_type.startswith("movie"):
log.debug("UPDATING NEXT URL: {0}".format(url))
start_index = int(m.group(1))
log.debug("current_start : {0}".format(start_index))
if start_index > 0:
prev_index = start_index - page_limit
prev_index = start_index - movie_page_limit
if prev_index < 0:
prev_index = 0
url_prev = re.sub('StartIndex=([0-9]{1,4})', 'StartIndex=' + str(prev_index), url)
url_next = re.sub('StartIndex=([0-9]{1,4})', 'StartIndex=' + str(start_index + page_limit), url)
log.debug("UPDATING NEXT URL: {0}".format(url_next))
url_next = re.sub('StartIndex=([0-9]{1,4})', 'StartIndex=' + str(start_index + movie_page_limit), url)
log.debug("UPDATING NEXT URL: {0}".format(url_next))
else:
log.debug("ADDING NEXT URL: {0}".format(url))
url_next = url + "&StartIndex=" + str(start_index + page_limit) + "&Limit=" + str(page_limit)
url = url + "&StartIndex=" + str(start_index) + "&Limit=" + str(page_limit)
log.debug("ADDING NEXT URL: {0}".format(url_next))
else:
log.debug("ADDING NEXT URL: {0}".format(url))
url_next = url + "&StartIndex=" + str(start_index + movie_page_limit) + "&Limit=" + str(movie_page_limit)
url = url + "&StartIndex=" + str(start_index) + "&Limit=" + str(movie_page_limit)
log.debug("ADDING NEXT URL: {0}".format(url_next))
if show_page_limit > 0 and media_type.startswith("tvshow"):
log.debug("UPDATING NEXT URL: {0}".format(url))
log.debug("current_start : {0}".format(start_index))
if start_index > 0:
prev_index = start_index - show_page_limit
if prev_index < 0:
prev_index = 0
url_prev = re.sub('StartIndex=([0-9]{1,4})', 'StartIndex=' + str(prev_index), url)
url_next = re.sub('StartIndex=([0-9]{1,4})', 'StartIndex=' + str(start_index + show_page_limit), url)
log.debug("UPDATING NEXT URL: {0}".format(url_next))
else:
log.debug("ADDING NEXT URL: {0}".format(url))
url_next = url + "&StartIndex=" + str(start_index + show_page_limit) + "&Limit=" + str(show_page_limit)
url = url + "&StartIndex=" + str(start_index) + "&Limit=" + str(show_page_limit)
log.debug("ADDING NEXT URL: {0}".format(url_next))
use_cache = params.get("use_cache", "true") == "true"
@@ -120,24 +138,43 @@ def get_content(url, params):
log.debug("total_records: {0}".format(total_records))
# add paging items
if page_limit > 0 and media_type.startswith("movie"):
if url_prev:
list_item = xbmcgui.ListItem("Prev Page (" + str(start_index - page_limit + 1) + "-" + str(start_index) +
" of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_prev) + "&mode=GET_CONTENT&media_type=movies"
log.debug("ADDING PREV ListItem: {0} - {1}".format(u, list_item))
dir_items.insert(0, (u, list_item, True))
if not url_limit or start_index > 0:
# add paging items
if movie_page_limit > 0 and media_type.startswith("movie"):
if url_prev:
list_item = xbmcgui.ListItem("Prev Page (" + str(start_index - movie_page_limit + 1) + "-" + str(start_index) +
" of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_prev) + "&mode=GET_CONTENT&media_type=movies"
log.debug("ADDING PREV ListItem: {0} - {1}".format(u, list_item))
dir_items.insert(0, (u, list_item, True))
if start_index + page_limit < total_records:
upper_count = start_index + (page_limit * 2)
if upper_count > total_records:
upper_count = total_records
list_item = xbmcgui.ListItem("Next Page (" + str(start_index + page_limit + 1) + "-" +
str(upper_count) + " of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_next) + "&mode=GET_CONTENT&media_type=movies"
log.debug("ADDING NEXT ListItem: {0} - {1}".format(u, list_item))
dir_items.append((u, list_item, True))
if start_index + movie_page_limit < total_records:
upper_count = start_index + (movie_page_limit * 2)
if upper_count > total_records:
upper_count = total_records
list_item = xbmcgui.ListItem("Next Page (" + str(start_index + movie_page_limit + 1) + "-" +
str(upper_count) + " of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_next) + "&mode=GET_CONTENT&media_type=movies"
log.debug("ADDING NEXT ListItem: {0} - {1}".format(u, list_item))
dir_items.append((u, list_item, True))
# add paging items
if show_page_limit > 0 and media_type.startswith("tvshow"):
if url_prev:
list_item = xbmcgui.ListItem("Prev Page (" + str(start_index - show_page_limit + 1) + "-" + str(start_index) +
" of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_prev) + "&mode=GET_CONTENT&media_type=tvshows"
log.debug("ADDING PREV ListItem: {0} - {1}".format(u, list_item))
dir_items.insert(0, (u, list_item, True))
if start_index + show_page_limit < total_records:
upper_count = start_index + (show_page_limit * 2)
if upper_count > total_records:
upper_count = total_records
list_item = xbmcgui.ListItem("Next Page (" + str(start_index + show_page_limit + 1) + "-" +
str(upper_count) + " of " + str(total_records) + ")")
u = sys.argv[0] + "?url=" + quote(url_next) + "&mode=GET_CONTENT&media_type=tvshows"
log.debug("ADDING NEXT ListItem: {0} - {1}".format(u, list_item))
dir_items.append((u, list_item, True))
# set the Kodi content type
if content_type:
@@ -154,7 +191,9 @@ def get_content(url, params):
xbmcplugin.setContent(pluginhandle, content_type)
# set the sort items
if page_limit > 0 and media_type.startswith("movie"):
if movie_page_limit > 0 and media_type.startswith("movie"):
xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_UNSORTED)
elif show_page_limit > 0 and media_type.startswith("tvshow"):
xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_UNSORTED)
else:
set_sort(pluginhandle, view_type, default_sort)
@@ -302,9 +341,10 @@ def process_directory(url, progress, params, use_cache_data=False):
detected_type = None
dir_items = []
OnlyTotallyUnwatchedTvShow = params.get("OnlyTotallyUnwatchedTvShow", None)
for item_details in item_list:
if OnlyTotallyUnwatchedTvShow == "1" and item_details.watched_episodes > 0:
continue
item_details.total_items = item_count
if progress is not None:

View File

@@ -41,16 +41,22 @@ from .tracking import timer
from .skin_cloner import clone_default_skin
from .play_utils import play_file
__addon__ = xbmcaddon.Addon()
__addondir__ = translate_path(__addon__.getAddonInfo('profile'))
__cwd__ = __addon__.getAddonInfo('path')
PLUGINPATH = translate_path(os.path.join(__cwd__))
addon_id = __addon__.getAddonInfo('id')
try:
__addon__ = xbmcaddon.Addon()
__addondir__ = translate_path(__addon__.getAddonInfo('profile'))
__cwd__ = __addon__.getAddonInfo('path')
PLUGINPATH = translate_path(os.path.join(__cwd__))
addon_id = __addon__.getAddonInfo('id')
except Exception:
# During installation/update, addon might not be fully registered yet
__addon__ = None
__addondir__ = ''
__cwd__ = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PLUGINPATH = __cwd__
addon_id = 'plugin.video.jellycon'
log = LazyLogger(__name__)
user_details = load_user_details()
@timer
def main_entry_point():
@@ -119,7 +125,8 @@ def main_entry_point():
elif mode == "CLONE_SKIN":
clone_default_skin()
elif mode == "SHOW_SETTINGS":
__addon__.openSettings()
addon = xbmcaddon.Addon()
addon.openSettings()
window = xbmcgui.getCurrentWindowId()
if window == 10000:
log.debug(
@@ -343,6 +350,12 @@ def show_menu(params):
li.setProperty('menu_id', 'play')
action_items.append(li)
# Add "Play with track selection" for Movies and Episodes
if result["Type"] in ["Episode", "Movie"]:
li = xbmcgui.ListItem(translate_string(30701), offscreen=True)
li.setProperty('menu_id', 'play_with_track_selection')
action_items.append(li)
if result["Type"] in ["Season", "MusicArtist", "MusicAlbum", "Playlist",
"MusicGenre"]:
li = xbmcgui.ListItem(translate_string(30317), offscreen=True)
@@ -473,6 +486,11 @@ def show_menu(params):
log.debug("Play Item")
play_action(params)
elif selected_action == "play_with_track_selection":
log.debug("Play Item with Track Selection")
params["force_track_selection"] = "true"
play_action(params)
elif selected_action == "set_view":
log.debug("Setting view type for {0} to {1}".format(
view_key, container_view_id)
@@ -923,6 +941,9 @@ def play_action(params):
audio_stream_index = params.get("audio_stream_index")
log.debug("audio_stream_index: {0}".format(audio_stream_index))
force_track_selection = params.get("force_track_selection", "false") == "true"
log.debug("force_track_selection: {0}".format(force_track_selection))
action = params.get("action", "play")
# set the current playing item id
@@ -939,13 +960,18 @@ def play_action(params):
play_info["media_source_id"] = media_source_id
play_info["subtitle_stream_index"] = subtitle_stream_index
play_info["audio_stream_index"] = audio_stream_index
play_info["force_track_selection"] = force_track_selection
log.info("Sending jellycon_play_action : {0}".format(play_info))
play_file(play_info)
def play_item_trailer(item_id):
log.debug("== ENTER: playTrailer ==")
handle = int(sys.argv[1]) if sys.argv and len(sys.argv) > 1 else -1
if handle != -1:
xbmcplugin.endOfDirectory(handle, succeeded=False, updateListing=False, cacheToDisc=False)
user_details = load_user_details()
url = "/Users/{}/Items/{}/LocalTrailers?format=json".format(
user_details.get('user_id'), item_id
)
@@ -1021,7 +1047,7 @@ def play_item_trailer(item_id):
elif trailer.get("type") == "remote":
youtube_id = trailer.get("url").rsplit('=', 1)[1]
url_root = "plugin.video.youtube/play/?video_id="
play_url = "RunPlugin(plugin://{}{})".format(url_root, youtube_id)
play_url = "PlayMedia(plugin://{}{})".format(url_root, youtube_id)
log.debug("youtube_plugin: {0}".format(play_url))
xbmc.executebuiltin(play_url)

View File

@@ -0,0 +1,158 @@
from __future__ import (
division, absolute_import, print_function, unicode_literals
)
import os
import threading
import xbmc
import xbmcaddon
import xbmcgui
from resources.lib.play_utils import get_media_segments
from resources.lib.utils import seconds_to_ticks, ticks_to_seconds, translate_path
from resources.lib.intro_skipper_utils import get_setting_skip_action, set_correct_skip_info
from .lazylogger import LazyLogger
from .dialogs import SkipDialog
from typing import Literal
log = LazyLogger(__name__)
class IntroSkipperService(threading.Thread):
stop_thread = False
monitor = None
def __init__(self, play_monitor):
super(IntroSkipperService, self).__init__()
self.monitor = play_monitor
def run(self):
from .play_utils import get_jellyfin_playing_item
settings = xbmcaddon.Addon()
plugin_path = settings.getAddonInfo('path')
plugin_path_real = translate_path(os.path.join(plugin_path))
skip_intro_dialog = None
skip_credit_dialog = None
skip_commercial_dialog = None
skip_preview_dialog = None
skip_recap_dialog = None
segments = None
playing_item_id = None
log.debug("SkipService: starting service")
while not xbmc.Monitor().abortRequested() and not self.stop_thread:
player = xbmc.Player()
if player.isPlaying():
item_id = get_jellyfin_playing_item()
if item_id is not None:
log.debug("SkipService: playing item is from jellyfin : {0}".format(item_id))
# If item id has changed or is new, retrieve segments
if playing_item_id is None or playing_item_id != item_id :
log.debug("SkipService: item is new, retrieving media segments : {0}".format(item_id))
segments = get_media_segments(item_id)
# Setting global playing item to current playing item
playing_item_id = item_id
# Handle skip only on jellyfin items
current_ticks = seconds_to_ticks(player.getTime())
# Handle Intros
skip_intro_dialog = self.handle_dialog(plugin_path_real, skip_intro_dialog, item_id, current_ticks, player, segments, "Intro")
# Handle Credits
skip_credit_dialog = self.handle_dialog(plugin_path_real, skip_credit_dialog, item_id, current_ticks, player, segments, "Outro")
# Handle commercial
skip_commercial_dialog = self.handle_dialog(plugin_path_real, skip_commercial_dialog, item_id, current_ticks, player, segments, "Commercial")
# Handle preview
skip_preview_dialog = self.handle_dialog(plugin_path_real, skip_preview_dialog, item_id, current_ticks, player, segments, "Preview")
# Handle recap
skip_recap_dialog = self.handle_dialog(plugin_path_real, skip_recap_dialog, item_id, current_ticks, player, segments, "Recap")
else:
playing_item_id = None
if skip_intro_dialog is not None:
log.debug("SkipService: Playback stopped, killing Intro dialog")
skip_intro_dialog.close()
skip_intro_dialog = None
if skip_credit_dialog is not None:
log.debug("SkipService: Playback stopped, killing Outro dialog")
skip_credit_dialog.close()
skip_credit_dialog = None
if skip_commercial_dialog is not None:
log.debug("SkipService: Playback stopped, killing Commercial dialog")
skip_commercial_dialog.close()
skip_commercial_dialog = None
if skip_preview_dialog is not None:
log.debug("SkipService: Playback stopped, killing Preview dialog")
skip_preview_dialog.close()
skip_preview_dialog = None
if skip_recap_dialog is not None:
log.debug("SkipService: Playback stopped, killing Recap dialog")
skip_recap_dialog.close()
skip_recap_dialog = None
if xbmc.Monitor().waitForAbort(1):
break
xbmc.sleep(200)
def handle_dialog(self, plugin_path_real: str, dialog: SkipDialog, item_id: str, current_ticks: float, player: xbmc.Player, segments, type: Literal["Commercial", "Preview", "Recap", "Outro", "Intro"]):
skip_action = get_setting_skip_action(type)
# In case do nothing is selected return
if skip_action == "2":
log.debug("SkipService: ignore {0} is selected".format(type))
return None
if dialog is None:
log.debug("SkipService: init dialog")
dialog = SkipDialog("SkipDialog.xml", plugin_path_real, "default", "720p")
set_correct_skip_info(item_id, dialog, segments, type)
is_segment = False
if dialog.start is not None and dialog.end is not None:
# Resets the dismiss var so that button can reappear in case of navigation in the timecodes
if (current_ticks < dialog.start or current_ticks > dialog.end) and dialog.has_been_dissmissed is True:
log.debug("SkipService: {0} skip was dismissed. It is reset beacause timecode is outside of segment")
dialog.has_been_dissmissed = False
# Checks if segment is playing
is_segment = current_ticks >= dialog.start and current_ticks <= dialog.end
if skip_action == "1" and is_segment:
log.debug("SkipService: {0} is set to automatic skip, skipping segment".format(type))
# If auto skip is enabled, skips to semgent ends automatically
player.seekTime(ticks_to_seconds(dialog.end))
xbmcgui.Dialog().notification("JellyCon", "{0} Skipped".format(type))
elif skip_action == "0":
# Otherwise show skip dialog
if is_segment and not dialog.has_been_dissmissed:
log.debug("SkipService: {0} is playing, showing dialog".format(type))
dialog.show()
else:
# Could not find doc on what happens when closing a closed dialog, but it seems fine
log.debug("SkipService: {0} is not playing, closing dialog".format(type))
dialog.close()
return dialog
def stop_service(self):
log.debug("IntroSkipperService Stop Called")
self.stop_thread = True

View File

@@ -0,0 +1,72 @@
from typing import Literal
import xbmcaddon
from .lazylogger import LazyLogger
from .dialogs import SkipDialog
from .utils import seconds_to_ticks
log = LazyLogger(__name__)
def get_setting_skip_action(type: Literal["Commercial", "Preview", "Recap", "Outro", "Intro"]):
settings = xbmcaddon.Addon()
if (type == "Commercial"):
return settings.getSetting("commercial_skipper_action")
elif (type == "Preview"):
return settings.getSetting("preview_skipper_action")
elif (type == "Recap"):
return settings.getSetting("recap_skipper_action")
elif (type == "Outro"):
return settings.getSetting("credit_skipper_action")
elif (type == "Intro"):
return settings.getSetting("intro_skipper_action")
return ""
def get_setting_skip_start_offset(type: Literal["Commercial", "Preview", "Recap", "Outro", "Intro"]):
settings = xbmcaddon.Addon()
if (type == "Commercial"):
return settings.getSettingInt("commercial_skipper_start_offset")
elif (type == "Preview"):
return settings.getSettingInt("preview_skipper_start_offset")
elif (type == "Recap"):
return settings.getSettingInt("recap_skipper_start_offset")
elif (type == "Outro"):
return settings.getSettingInt("credit_skipper_start_offset")
elif (type == "Intro"):
return settings.getSettingInt("intro_skipper_start_offset")
return 0
def get_setting_skip_end_offset(type: Literal["Commercial", "Preview", "Recap", "Outro", "Intro"]):
settings = xbmcaddon.Addon()
if (type == "Commercial"):
return settings.getSettingInt("commercial_skipper_end_offset")
elif (type == "Preview"):
return settings.getSettingInt("preview_skipper_end_offset")
elif (type == "Recap"):
return settings.getSettingInt("recap_skipper_end_offset")
elif (type == "Outro"):
return settings.getSettingInt("credit_skipper_end_offset")
elif (type == "Intro"):
return settings.getSettingInt("intro_skipper_end_offset")
return 0
def set_correct_skip_info(item_id: str, skip_dialog: SkipDialog, segments, type: Literal["Commercial", "Preview", "Recap", "Outro", "Intro"]):
if (skip_dialog.media_id is None or skip_dialog.media_id != item_id) and item_id is not None:
# If playback item has changed (or is new), sets its id and set media segments info
log.debug("SkipDialogInfo : Media Id has changed to {0}, setting segments".format(item_id))
skip_dialog.media_id = item_id
skip_dialog.has_been_dissmissed = False
if segments is not None:
# Find the intro and outro timings
start = next((segment["StartTicks"] for segment in segments if segment["Type"] == type), None)
end = next((segment["EndTicks"] for segment in segments if segment["Type"] == type), None)
# Sets timings with offsets if defined in settings
if start is not None:
skip_dialog.start = start + seconds_to_ticks(get_setting_skip_start_offset(type))
log.debug("SkipDialogInfo : Setting {0} start to {1}".format(type, skip_dialog.start))
if end is not None:
skip_dialog.end = end - seconds_to_ticks(get_setting_skip_end_offset(type))
log.debug("SkipDialogInfo : Setting {0} end to {1}".format(type, skip_dialog.end))

View File

@@ -11,7 +11,6 @@ import xbmcaddon
from .lazylogger import LazyLogger
log = LazyLogger(__name__)
addon = xbmcaddon.Addon()
class HomeWindow:
@@ -41,6 +40,7 @@ def add_menu_directory_item(label, path, folder=True, art=None, properties=None)
li = xbmcgui.ListItem(label, path=path, offscreen=True)
if art is None:
art = {}
addon = xbmcaddon.Addon()
art["thumb"] = addon.getAddonInfo('icon')
if properties is not None:
li.setProperties(properties)

View File

@@ -12,8 +12,13 @@ from kodi_six import xbmc, xbmcaddon
from .utils import translate_path
__addon__ = xbmcaddon.Addon(id='plugin.video.jellycon')
__pluginpath__ = translate_path(__addon__.getAddonInfo('path'))
try:
__addon__ = xbmcaddon.Addon(id='plugin.video.jellycon')
__pluginpath__ = translate_path(__addon__.getAddonInfo('path'))
except Exception:
# During installation/update, addon might not be fully registered yet
__addon__ = None
__pluginpath__ = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def getLogger(name=None):
@@ -32,27 +37,36 @@ class LogHandler(logging.StreamHandler):
self.sensitive = {'Token': [], 'Server': []}
settings = xbmcaddon.Addon()
self.server = settings.getSetting('server_address')
self.debug = settings.getSetting('log_debug')
try:
settings = xbmcaddon.Addon()
self.server = settings.getSetting('server_address')
self.debug = settings.getSetting('log_debug')
except Exception:
# During installation/update, settings might not be available yet
self.server = ''
self.debug = 'false'
def emit(self, record):
if self._get_log_level(record.levelno):
string = self.format(record)
try:
string = self.format(record)
# Hide server URL in logs
string = string.replace(
self.server or "{server}", "{jellyfin-server}"
)
# Hide server URL in logs
string = string.replace(
self.server or "{server}", "{jellyfin-server}"
)
py_version = sys.version_info.major
# Log level notation changed in Kodi v19
if py_version > 2:
log_level = xbmc.LOGINFO
else:
log_level = xbmc.LOGNOTICE
xbmc.log(string, level=log_level)
py_version = sys.version_info.major
# Log level notation changed in Kodi v19
if py_version > 2:
log_level = xbmc.LOGINFO
else:
log_level = xbmc.LOGNOTICE
xbmc.log(string, level=log_level)
except Exception:
# Silently fail if logging is disabled globally in Kodi
pass
def _get_log_level(self, level):
@@ -92,13 +106,16 @@ class MyFormatter(logging.Formatter):
return result
def formatException(self, exc_info):
_pluginpath_real = os.path.realpath(__pluginpath__)
try:
_pluginpath_real = os.path.realpath(__pluginpath__)
except Exception:
_pluginpath_real = None
res = []
for o in traceback.format_exception(*exc_info):
o = ensure_text(o, get_filesystem_encoding())
if o.startswith(' File "'):
if _pluginpath_real and o.startswith(' File "'):
"""
If this split can't handle your file names,
you should seriously consider renaming your files.
@@ -114,7 +131,10 @@ class MyFormatter(logging.Formatter):
def _gen_rel_path(self, record):
if record.pathname:
record.relpath = os.path.relpath(record.pathname, __pluginpath__)
try:
record.relpath = os.path.relpath(record.pathname, __pluginpath__)
except Exception:
record.relpath = record.pathname
def get_filesystem_encoding():

View File

@@ -16,7 +16,7 @@ from .jellyfin import api
from .kodi_utils import add_menu_directory_item, HomeWindow
from .lazylogger import LazyLogger
from .utils import (
get_jellyfin_url, translate_string, get_art_url,
get_filtered_items_count_text, get_jellyfin_url, translate_string, get_art_url,
get_default_filters, get_current_user_id
)
from .item_functions import get_art
@@ -659,7 +659,7 @@ def display_homevideos_type(menu_params, view):
params["Limit"] = item_limit
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=homevideos"
add_menu_directory_item(view_name + translate_string(30267) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30267) + get_filtered_items_count_text(), url)
# Recently added
params = {}
@@ -673,7 +673,7 @@ def display_homevideos_type(menu_params, view):
params["Limit"] = item_limit
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=homevideos"
add_menu_directory_item(view_name + translate_string(30268) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30268) + get_filtered_items_count_text(), url)
xbmcplugin.endOfDirectory(handle)
@@ -738,6 +738,14 @@ def display_tvshow_type(menu_params, view):
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=tvshows"
add_menu_directory_item(view_name + translate_string(30285), url)
# Totally unwatched tv shows
params = {}
params.update(base_params)
params["IsPlayed"] = False
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=tvshows&OnlyTotallyUnwatchedTvShow=1"
add_menu_directory_item(view_name + translate_string(30454), url)
# In progress episodes
params = {}
params.update(base_params)
@@ -749,7 +757,7 @@ def display_tvshow_type(menu_params, view):
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=Episodes&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30267) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30267) + get_filtered_items_count_text(), url)
# Latest Episodes
params = {}
@@ -760,7 +768,7 @@ def display_tvshow_type(menu_params, view):
params["IncludeItemTypes"] = "Episode"
path = get_jellyfin_url("/Users/{userid}/Items/Latest", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=tvshows&sort=none"
add_menu_directory_item(view_name + translate_string(30288) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30288) + get_filtered_items_count_text(), url)
# Recently Added
params = {}
@@ -773,7 +781,7 @@ def display_tvshow_type(menu_params, view):
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=Episodes&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30268) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30268) + get_filtered_items_count_text(), url)
# Next Up Episodes
params = {}
@@ -787,7 +795,7 @@ def display_tvshow_type(menu_params, view):
path = get_jellyfin_url("/Shows/NextUp", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=Episodes&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30278) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30278) + get_filtered_items_count_text(), url)
# TV Show Genres
path = "plugin://plugin.video.jellycon/?mode=GENRES&item_type=tvshow"
@@ -835,7 +843,7 @@ def display_music_type(menu_params, view):
}
path = get_jellyfin_url("/Users/{userid}/Items/Latest", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=MusicAlbums"
add_menu_directory_item(view_name + translate_string(30268) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30268) + get_filtered_items_count_text(), url)
# recently played
params = {
@@ -850,7 +858,7 @@ def display_music_type(menu_params, view):
}
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=MusicAlbum"
add_menu_directory_item(view_name + translate_string(30349) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30349) + get_filtered_items_count_text(), url)
# most played
params = {
@@ -865,7 +873,7 @@ def display_music_type(menu_params, view):
}
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=MusicAlbum"
add_menu_directory_item(view_name + translate_string(30353) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30353) + get_filtered_items_count_text(), url)
# artists
params = {
@@ -1030,7 +1038,7 @@ def display_movies_type(menu_params, view):
params["Limit"] = item_limit
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=movies&sort=none"
add_menu_directory_item('{}{} ({})'.format(view_name, translate_string(30349), item_limit), url)
add_menu_directory_item(('{}{}{}').format(view_name, translate_string(30349), get_filtered_items_count_text()), url)
# Resumable Movies
params = {}
@@ -1041,7 +1049,7 @@ def display_movies_type(menu_params, view):
params["Limit"] = item_limit
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=movies&sort=none"
add_menu_directory_item('{}{} ({})'.format(view_name, translate_string(30267), item_limit), url)
add_menu_directory_item(('{}{}{}').format(view_name, translate_string(30267), get_filtered_items_count_text()), url)
# Recently Added Movies
params = {}
@@ -1054,7 +1062,7 @@ def display_movies_type(menu_params, view):
params["Limit"] = item_limit
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=movies&sort=none"
add_menu_directory_item('{}{} ({})'.format(view_name, translate_string(30268), item_limit), url)
add_menu_directory_item(('{}{}{}').format(view_name, translate_string(30268), get_filtered_items_count_text()), url)
# Collections
params = {}
@@ -1168,7 +1176,7 @@ def display_mixed_type(params, view):
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=mixed&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30267) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30267) + get_filtered_items_count_text(), url)
# Latest mixed
params = {}
@@ -1179,7 +1187,7 @@ def display_mixed_type(params, view):
params["IncludeItemTypes"] = "Episode"
path = get_jellyfin_url("/Users/{userid}/Items/Latest", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=mixed&sort=none"
add_menu_directory_item(view_name + translate_string(30288) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30288) + get_filtered_items_count_text(), url)
# Recently Added
params = {}
@@ -1192,7 +1200,7 @@ def display_mixed_type(params, view):
path = get_jellyfin_url("/Users/{userid}/Items", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=mixed&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30268) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30268) + get_filtered_items_count_text(), url)
# Next Up Episodes
params = {}
@@ -1206,7 +1214,7 @@ def display_mixed_type(params, view):
path = get_jellyfin_url("/Shows/NextUp", params)
url = sys.argv[0] + "?url=" + quote(path) + "&mode=GET_CONTENT&media_type=Episodes&sort=none"
url += "&name_format=" + quote('Episode|episode_name_format')
add_menu_directory_item(view_name + translate_string(30278) + " (" + item_limit + ")", url)
add_menu_directory_item(view_name + translate_string(30278) + get_filtered_items_count_text(), url)
# Mixed Genres
path = "plugin://plugin.video.jellycon/?mode=GENRES&item_type=mixed"
@@ -1331,29 +1339,37 @@ def display_library_view(params):
display_mixed_type(params, view_info)
def show_widgets():
item_limit = settings.getSetting("show_x_filtered_items")
def show_widgets():
add_menu_directory_item("All Movies",
'plugin://plugin.video.jellycon/library/movies')
item_limit_text = get_filtered_items_count_text()
add_menu_directory_item(translate_string(30257) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30257) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=recent_movies')
add_menu_directory_item(translate_string(30258) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30258) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=inprogress_movies')
add_menu_directory_item(translate_string(30269) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30269) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=random_movies')
add_menu_directory_item(translate_string(30403) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30403) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=movie_recommendations')
add_menu_directory_item(translate_string(30287) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30287) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=recent_tvshows')
add_menu_directory_item(translate_string(30263) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30455) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=random_tvshows')
add_menu_directory_item(translate_string(30263) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=recent_episodes')
add_menu_directory_item(translate_string(30264) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30264) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=inprogress_episodes')
add_menu_directory_item(translate_string(30265) + " (" + item_limit + ")",
add_menu_directory_item(translate_string(30265) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=nextup_episodes')
add_menu_directory_item(translate_string(30457) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=recent_all')
add_menu_directory_item(translate_string(30458),
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=favorites_all')
add_menu_directory_item(translate_string(30456) + item_limit_text,
'plugin://plugin.video.jellycon/?mode=WIDGET_CONTENT&type=random_all')
xbmcplugin.endOfDirectory(int(sys.argv[1]))

View File

@@ -7,7 +7,7 @@ import os
import re
import sys
import binascii
from datetime import timedelta
import datetime
import xbmc
import xbmcgui
@@ -242,8 +242,10 @@ def play_file(play_info):
media_source_id = play_info.get("media_source_id", "")
subtitle_stream_index = play_info.get("subtitle_stream_index", None)
audio_stream_index = play_info.get("audio_stream_index", None)
force_track_selection = play_info.get("force_track_selection", False)
log.debug("playFile id({0}) resume({1}) force_transcode({2})".format(item_id, auto_resume, force_transcode))
log.debug("playFile id({0}) resume({1}) force_transcode({2}) force_track_selection({3})".format(
item_id, auto_resume, force_transcode, force_track_selection))
addon_path = settings.getAddonInfo('path')
force_auto_resume = settings.getSetting('forceAutoResume') == 'true'
@@ -405,8 +407,8 @@ def play_file(play_info):
if user_data.get("PlaybackPositionTicks") != 0:
reasonable_ticks = int(user_data.get("PlaybackPositionTicks")) / 1000
seek_time = reasonable_ticks / 10000
display_time = str(timedelta(seconds=seek_time))
seek_time = round(reasonable_ticks / 10000,0)
display_time = (datetime.datetime(1,1,1) + datetime.timedelta(seconds=seek_time)).strftime('%H:%M:%S')
resume_dialog = ResumeDialog("ResumeDialog.xml", addon_path, "default", "720p")
resume_dialog.setResumeTime("Resume from " + display_time)
@@ -461,7 +463,7 @@ def play_file(play_info):
if playback_type == "2": # if transcoding then prompt for audio and subtitle
playurl = audio_subs_pref(playurl, list_item, selected_media_source, item_id, audio_stream_index,
subtitle_stream_index)
subtitle_stream_index, force_track_selection)
log.debug("New playurl for transcoding: {0}".format(playurl))
elif playback_type == "1": # for direct stream add any streamable subtitles
@@ -730,8 +732,20 @@ def set_list_item_props(item_id, list_item, result, server, extra_props, title):
details = {
'title': title,
'mediatype': mediatype
'mediatype': mediatype,
'artist': "Unknown Artist",
'album': "Unknown Album"
}
artist = result.get("Artists", [])
if artist:
details['artist'] = artist[0]
track = result.get("IndexNumber")
if track:
details['tracknumber'] = track
album = result.get("Album")
if album:
details['album'] = album
list_item.setInfo("Music", infoLabels=details)
else:
@@ -766,12 +780,14 @@ def set_list_item_props(item_id, list_item, result, server, extra_props, title):
# Present the list of audio and subtitles to select from
# for external streamable subtitles add the URL to the Kodi item and let Kodi handle it
# else ask for the subtitles to be burnt in when transcoding
def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, subtitle_stream_index):
def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, subtitle_stream_index, force_track_selection=False):
dialog = xbmcgui.Dialog()
audio_streams_list = {}
audio_streams = []
audio_streams_data = [] # Store full stream data for preference matching
subtitle_streams_list = {}
subtitle_streams = ['No subtitles']
subtitle_streams_data = [] # Store full stream data for preference matching
downloadable_streams = []
select_audio_index = audio_stream_index
select_subs_index = subtitle_stream_index
@@ -780,6 +796,60 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
default_sub = media_source.get('DefaultSubtitleStreamIndex', "")
source_id = media_source["Id"]
# Read user preferences
# Map select index to language code
lang_index_map = ['ger', 'eng', 'fra', 'spa', 'ita', 'jpn', 'rus', ''] # '' = other/custom
sub_lang_index_map = ['', 'ger', 'eng', 'fra', 'spa', 'ita', 'jpn', 'rus', ''] # First is 'none'
audio_lang_index = int(settings.getSetting("preferred_audio_language") or "0")
preferred_audio_lang = lang_index_map[audio_lang_index] if audio_lang_index < len(lang_index_map) else ''
auto_select_default_audio = settings.getSetting("auto_select_default_audio") == "true"
sub_lang_index = int(settings.getSetting("preferred_subtitle_language") or "1")
preferred_sub_lang = sub_lang_index_map[sub_lang_index] if sub_lang_index < len(sub_lang_index_map) else ''
prefer_forced = settings.getSetting("prefer_forced_subtitles") == "true"
only_forced = settings.getSetting("only_forced_subtitles") == "true"
# Subtitle codec preference: 0=PGS, 1=SRT, 2=No preference
codec_pref_index = int(settings.getSetting("subtitle_codec_preference") or "0")
prefer_pgs = codec_pref_index == 0
prefer_srt = codec_pref_index == 1
# codec_pref_index == 2 means no preference (both prefer_pgs and prefer_srt are False)
auto_no_subs = settings.getSetting("auto_no_subtitles_if_no_match") == "true"
# Language code mapping for better matching
language_map = {
'ger': ['ger', 'deu', 'de', 'german', 'deutsch'],
'eng': ['eng', 'en', 'english'],
'fra': ['fra', 'fr', 'fre', 'french', 'français'],
'spa': ['spa', 'es', 'spanish', 'español'],
'ita': ['ita', 'it', 'italian', 'italiano'],
'jpn': ['jpn', 'ja', 'japanese', '日本語'],
'rus': ['rus', 'ru', 'russian'],
}
# Helper function to check if language matches
def language_matches(stream_lang, preferred_lang):
stream_lang = stream_lang.lower()
preferred_lang = preferred_lang.lower()
# Direct match
if preferred_lang in stream_lang or stream_lang in preferred_lang:
return True
# Check against language map
for key, variations in language_map.items():
if preferred_lang in variations:
# Check if stream language matches any variation
for variant in variations:
if variant in stream_lang or stream_lang.startswith(variant[:2]):
return True
return False
media_streams = media_source['MediaStreams']
for stream in media_streams:
@@ -789,6 +859,7 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
if 'Audio' in stream['Type']:
codec = stream.get('Codec', None)
channel_layout = stream.get('ChannelLayout', "")
title = stream.get('Title', '')
if not codec:
# Probably tvheadend and has no other info
@@ -801,30 +872,161 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
# Track doesn't include language
track = "%s - %s %s" % (index, codec, channel_layout)
# Add title if available
if title:
track = "%s - %s" % (track, title)
audio_streams_list[track] = index
audio_streams.append(track)
audio_streams_data.append(stream)
elif 'Subtitle' in stream['Type']:
try:
# Track includes language
track = "%s - %s" % (index, stream['Language'])
except KeyError:
# Track doesn't include language
track = "%s - %s" % (index, stream['Codec'])
language = stream.get('Language', 'Unknown')
codec = stream.get('Codec', 'Unknown')
codec_names = {
'subrip': 'SRT',
'hdmv_pgs_subtitle': 'PGS',
'dvd_subtitle': 'VobSub',
'ass': 'ASS'
}
codec_display = codec_names.get(codec.lower(), codec.upper())
track = "%s - %s (%s)" % (index, language, codec_display)
default = stream['IsDefault']
forced = stream['IsForced']
hearing_impaired = stream.get('IsHearingImpaired', False)
downloadable = stream['IsTextSubtitleStream'] and stream['IsExternal'] and stream['SupportsExternalStream']
if default:
track = "%s - Default" % track
if forced:
track = "%s - Forced" % track
if hearing_impaired:
track = "%s - SDH" % track
if downloadable:
downloadable_streams.append(index)
subtitle_streams_list[track] = index
subtitle_streams.append(track)
subtitle_streams_data.append(stream)
# Auto-select audio track based on preferences
# Only auto-select if not already set by server/remote control AND not forcing manual selection
if not force_track_selection and select_audio_index is None and len(audio_streams_data) > 0 and (preferred_audio_lang or auto_select_default_audio):
auto_selected = None
best_score = -1
# Try to match preferred language with scoring
if preferred_audio_lang:
for stream in audio_streams_data:
score = 0
stream_lang = stream.get('Language', '')
# Match against common variations using language map
if language_matches(stream_lang, preferred_audio_lang):
score += 100 # Language match
# Bonus for default track
if stream.get('IsDefault', False):
score += 50
# Bonus based on channel count (more channels = better quality)
channels = stream.get('Channels', 2)
score += min(channels * 5, 40) # Max +40 for 8 channels
# Bonus for high-quality codecs
codec = stream.get('Codec', '').lower()
if 'truehd' in codec or 'dts-hd' in codec or 'dts-ma' in codec:
score += 30
elif 'dts' in codec:
score += 20
elif 'ac3' in codec or 'eac3' in codec:
score += 10
# Penalty for commentary tracks
title = stream.get('Title', '').lower()
display_title = stream.get('DisplayTitle', '').lower()
if 'commentary' in title or 'kommentar' in title or 'commentary' in display_title:
score -= 100 # Effectively exclude commentary
log.debug("Audio score for {0} ({1}): {2} (channels={3}, codec={4}, default={5})".format(
stream_lang, stream['Index'], score, channels, codec, stream.get('IsDefault', False)))
if score > best_score:
best_score = score
auto_selected = stream['Index']
# Fall back to default audio if enabled and no language match
if auto_selected is None and auto_select_default_audio:
auto_selected = default_audio
log.debug("Auto-selected default audio (index {0})".format(auto_selected))
if auto_selected is not None:
select_audio_index = auto_selected
if best_score > 0:
log.debug("Auto-selected audio (index {0}, score {1})".format(auto_selected, best_score))
# Auto-select subtitle track based on preferences
# Only auto-select if not already set by server/remote control AND not forcing manual selection
if force_track_selection:
log.debug("Forcing manual track selection (from context menu)")
elif select_subs_index is not None:
log.debug("Using subtitle index from server/remote: {0}".format(select_subs_index))
elif len(subtitle_streams_data) == 0:
log.debug("No subtitle streams available")
elif len(subtitle_streams_data) > 0 and preferred_sub_lang: # Only if user configured a language preference
auto_selected = None
best_score = -1
log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_pgs={3}, prefer_srt={4}".format(
preferred_sub_lang, prefer_forced, only_forced, prefer_pgs, prefer_srt))
for stream in subtitle_streams_data:
score = 0
stream_lang = stream.get('Language', '')
codec = stream.get('Codec', '').lower()
is_forced = stream.get('IsForced', False)
is_default = stream.get('IsDefault', False)
# Skip non-forced subtitles if only_forced is enabled
if only_forced and not is_forced:
log.debug("Skipping non-forced subtitle {0} ({1}) - only_forced is enabled".format(
stream_lang, stream['Index']))
continue
# Score based on language match
if preferred_sub_lang and language_matches(stream_lang, preferred_sub_lang):
score += 100
# Bonus for forced if preferred
if prefer_forced and is_forced:
score += 50
# Bonus for codec preference
if prefer_pgs and codec in ['hdmv_pgs_subtitle', 'pgs']:
score += 30
elif prefer_srt and codec in ['subrip', 'srt']:
score += 30
# Small bonus for default
if is_default:
score += 10
log.debug("Subtitle score for {0} ({1}): {2} (forced={3}, codec={4})".format(
stream_lang, stream['Index'], score, is_forced, codec))
if score > best_score:
best_score = score
auto_selected = stream['Index']
if auto_selected is not None and best_score >= 100: # Only auto-select if language matched
select_subs_index = auto_selected
log.debug("Auto-selected subtitle (index {0}, score {1})".format(auto_selected, best_score))
elif auto_no_subs and preferred_sub_lang: # No match found but user wants auto "no subs"
select_subs_index = -1 # Special value to indicate "no subtitles"
log.debug("No matching subtitle found - auto-selected 'No subtitles'")
# set audio index
if select_audio_index is not None:
@@ -842,15 +1044,19 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
# set subtitle index
if select_subs_index is not None:
# Handle special "no subtitles" value
if select_subs_index == -1:
# User wants no subtitles - do nothing
pass
# Load subtitles in the listitem if downloadable
if select_subs_index in downloadable_streams:
elif select_subs_index in downloadable_streams:
subtitle_url = "%s/Videos/%s/%s/Subtitles/%s/Stream.srt"
subtitle_url = subtitle_url % (settings.getSetting('server_address'), item_id, source_id, select_subs_index)
log.debug("Streaming subtitles url: {0} {1}".format(select_subs_index, subtitle_url))
list_item.setSubtitles([subtitle_url])
else:
# Burn subtitles
playurlprefs += "&SubtitleStreamIndex=%s" % select_subs_index
playurlprefs += "&SubtitleStreamIndex=%s&SubtitleMethod=Encode" % select_subs_index
elif len(subtitle_streams) > 1:
resp = dialog.select(translate_string(30292), subtitle_streams)
@@ -870,10 +1076,10 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
list_item.setSubtitles([subtitle_url])
else:
# Burn subtitles
playurlprefs += "&SubtitleStreamIndex=%s" % select_subs_index
playurlprefs += "&SubtitleStreamIndex=%s&SubtitleMethod=Encode" % select_subs_index
else: # User backed out of selection
playurlprefs += "&SubtitleStreamIndex=%s" % default_sub
playurlprefs += "&SubtitleStreamIndex=%s&SubtitleMethod=Encode" % default_sub
new_url = url + playurlprefs
@@ -891,9 +1097,7 @@ def external_subs(media_source, list_item, item_id):
sub_names = []
server = settings.getSetting('server_address')
for stream in media_streams:
for idx, stream in enumerate(media_streams):
if (stream['Type'] == "Subtitle"
and stream['IsExternal']
and stream['IsTextSubtitleStream']
@@ -904,20 +1108,22 @@ def external_subs(media_source, list_item, item_id):
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'])
if language and stream['IsHearingImpaired']:
language = '{}.SDH'.format(language)
codec = stream.get('Codec', '')
url = '{}{}'.format(server, stream.get('DeliveryUrl'))
if language:
title = str(idx)
if stream.get('Title'):
title = stream['Title']
'''
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)
subtitle_file = download_external_sub(language, codec, url, title)
else:
# If there is no language defined, we can go directly to the server
subtitle_file = url
@@ -1031,7 +1237,7 @@ def prompt_for_stop_actions(item_id, data):
prompt_delete_movie_percentage == 100):
return
# if no runtime we can't calculate perceantge so just return
# if no runtime we can't calculate percentage so just return
if duration == 0:
log.debug("No duration so returning")
return
@@ -1044,10 +1250,9 @@ def prompt_for_stop_actions(item_id, data):
if (next_episode is not None and
prompt_next_percentage < 100 and
item_type == "Episode" and
percentage_complete > prompt_next_percentage):
percentage_complete >= prompt_next_percentage):
if play_prompt:
plugin_path = settings.getAddonInfo('path')
plugin_path_real = translate_path(os.path.join(plugin_path))
@@ -1058,6 +1263,14 @@ def prompt_for_stop_actions(item_id, data):
if not play_next_dialog.get_play_called():
xbmc.executebuiltin("Container.Refresh")
else:
play_info = {
"item_id": next_episode.get("Id"),
"auto_resume": "-1",
"force_transcode": False
}
send_event_notification("jellycon_play_action", play_info)
def stop_all_playback():
@@ -1175,6 +1388,16 @@ def get_playing_data():
return {}
def get_jellyfin_playing_item():
home_window = HomeWindow()
play_data_string = home_window.get_property('now_playing')
try:
play_data = json.loads(play_data_string)
except ValueError:
# This isn't a JellyCon item
return None
return play_data.get("item_id")
def get_play_url(media_source, play_session_id, channel_id=None):
log.debug("get_play_url - media_source: {0}", media_source)
@@ -1254,13 +1477,22 @@ def get_play_url(media_source, play_session_id, channel_id=None):
audio_max_channels = settings.getSetting("audio_max_channels")
playback_video_force_8 = settings.getSetting("playback_video_force_8") == "true"
# Determine target video codec for transcoding
transcode_target_codec_setting = settings.getSetting("transcode_target_video_codec")
if transcode_target_codec_setting == "1":
transcode_video_codec = "hevc"
elif transcode_target_codec_setting == "2":
transcode_video_codec = "av1"
else:
transcode_video_codec = "h264"
transcode_params = {
"MediaSourceId": item_id,
"DeviceId": device_id,
"PlaySessionId": play_session_id,
"api_key": user_token,
"SegmentContainer": "ts",
"VideoCodec": "h264",
"VideoCodec": transcode_video_codec,
"VideoBitrate": bitrate,
"MaxWidth": playback_max_width,
"AudioCodec": audio_codec,
@@ -1505,7 +1737,12 @@ class PlaybackService(xbmc.Monitor):
def get_item_playback_info(item_id, force_transcode):
# Filter codecs that should NEVER be played directly (always force transcoding)
# These settings work independently from the target codec setting below
# Example: force_transcode_h264=true + target=hevc means: H.264 files will be transcoded to H.265
filtered_codecs = []
if settings.getSetting("force_transcode_h264") == "true":
filtered_codecs.append("h264")
if settings.getSetting("force_transcode_h265") == "true":
filtered_codecs.append("hevc")
filtered_codecs.append("h265")
@@ -1529,6 +1766,19 @@ def get_item_playback_info(item_id, force_transcode):
audio_bitrate = int(audio_playback_bitrate) * 1000
# Determine target video codec for transcoding
# Note: force_transcode_* settings filter codecs for DirectPlay independently
# This setting only affects what codec the server transcodes TO when transcoding is needed
transcode_target_codec_setting = settings.getSetting("transcode_target_video_codec")
log.debug("Transcode target codec setting value: '{0}'".format(transcode_target_codec_setting))
if transcode_target_codec_setting == "1":
transcode_video_codec = "hevc"
elif transcode_target_codec_setting == "2":
transcode_video_codec = "av1"
else:
transcode_video_codec = "h264"
log.debug("Transcode target video codec: {0}".format(transcode_video_codec))
profile = {
"Name": "Kodi",
"MaxStaticBitrate": bitrate,
@@ -1544,7 +1794,7 @@ def get_item_playback_info(item_id, force_transcode):
"Protocol": "hls",
"Type": "Video",
"AudioCodec": audio_codec,
"VideoCodec": "h264",
"VideoCodec": transcode_video_codec,
"MaxAudioChannels": audio_max_channels
},
{
@@ -1686,3 +1936,11 @@ def get_item_playback_info(item_id, force_transcode):
log.debug("PlaybackInfo : {0}".format(play_info_result))
return play_info_result
def get_media_segments(item_id):
url = "/MediaSegments/{}".format(item_id)
result = api.get(url)
if result is None or result["Items"] is None:
log.debug("GetMediaSegments : Media segments cloud not be retrieved")
return None
return result["Items"]

File diff suppressed because it is too large Load Diff

View File

@@ -424,7 +424,7 @@ def translate_path(path):
return xbmc.translatePath(path)
def download_external_sub(language, codec, url):
def download_external_sub(language, codec, url, title):
addon_settings = xbmcaddon.Addon()
verify_cert = addon_settings.getSetting('verify_cert') == 'true'
@@ -433,7 +433,7 @@ def download_external_sub(language, codec, url):
r.raise_for_status()
# Write the subtitle file to the local filesystem
file_name = 'Stream.{}.{}'.format(language, codec)
file_name = 'Stream.{}.{}.{}'.format(title, language, codec)
file_path = py2_decode(
translate_path('special://temp/{}'.format(file_name))
)
@@ -451,3 +451,16 @@ def get_bitrate(enum_value):
7000, 8000, 9000, 10000, 12000, 14000, 16000, 18000,
20000, 25000, 30000, 35000, 40000, 100000, 1000000, 2147483]
return bitrate[int(enum_value) if enum_value else 24] * 1000
def get_filtered_items_count_text():
settings = xbmcaddon.Addon()
if settings.getSetting("hide_x_filtered_items_count") == 'true' :
return ""
else:
return " (" + settings.getSetting("show_x_filtered_items") + ")"
def seconds_to_ticks(seconds:float):
return seconds * 10000000
def ticks_to_seconds(ticks:int):
return round(ticks / 10000000, 1)

View File

@@ -33,11 +33,11 @@ class WebSocketClient(threading.Thread):
self.__dict__ = self._shared_state
self.monitor = xbmc.Monitor()
self.retry_count = 0
self.device_id = get_device_id()
self._library_monitor = library_change_monitor
self.websocket_error = False
threading.Thread.__init__(self)
@@ -230,11 +230,16 @@ class WebSocketClient(threading.Thread):
xbmc.executebuiltin(builtin[command])
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")
self.retry_count = 0
self.post_capabilities()
self.send_keepalive(ws)
def on_error(self, ws, error):
self.websocket_error = True
log.debug("Error: {0}".format(error))
def run(self):
@@ -269,8 +274,7 @@ class WebSocketClient(threading.Thread):
while not self.monitor.abortRequested():
time.sleep(self.retry_count * 5)
self._client.run_forever(ping_interval=10)
self._client.run_forever(reconnect=30)
if self._stop_websocket:
break
@@ -279,8 +283,6 @@ class WebSocketClient(threading.Thread):
# Abort was requested, exit
break
if self.retry_count < 12:
self.retry_count += 1
log.debug("Reconnecting WebSocket")
log.debug("WebSocketClient Stopped")
@@ -304,3 +306,22 @@ class WebSocketClient(threading.Thread):
)
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()

View File

@@ -0,0 +1,73 @@
@@ -46,7 +46,12 @@
result = json.loads(message)
message_type = result['MessageType']
- if message_type == 'Play':
+ if message_type == 'ForceKeepAlive':
+ timeout_seconds = result.get('Data', 60)
+ log.debug("Received ForceKeepAlive with timeout: {0}s".format(timeout_seconds))
+ self._send_keep_alive()
+
+ elif message_type == 'Play':
data = result['Data']
self._play(data)
@@ -237,6 +242,9 @@
def on_error(self, ws, error):
log.debug("Error: {0}".format(error))
+ def on_close(self, ws, close_status_code, close_msg):
+ log.debug("WebSocket closed. Code: {0}, Message: {1}".format(close_status_code, close_msg))
+
def run(self):
token = None
@@ -259,17 +267,23 @@
)
log.debug("websocket url: {0}".format(websocket_url))
- self._client = websocket.WebSocketApp(
- websocket_url,
- on_open=lambda ws: self.on_open(ws),
- on_message=lambda ws, message: self.on_message(ws, message),
- on_error=lambda ws, error: self.on_error(ws, error))
-
log.debug("Starting WebSocketClient")
while not self.monitor.abortRequested():
- self._client.run_forever(ping_interval=5, reconnect=13, ping_timeout=2)
+ # Create a new WebSocketApp for each connection attempt to avoid
+ # memory leaks from reusing a potentially dirty connection object
+ self._client = websocket.WebSocketApp(
+ websocket_url,
+ on_open=lambda ws: self.on_open(ws),
+ on_message=lambda ws, message: self.on_message(ws, message),
+ on_error=lambda ws, error: self.on_error(ws, error),
+ on_close=lambda ws, status, msg: self.on_close(ws, status, msg))
+
+ # Use ping_interval without ping_timeout to keep connection alive
+ # without forcing disconnection. The server's ForceKeepAlive/KeepAlive
+ # mechanism handles the actual keepalive logic.
+ self._client.run_forever(ping_interval=10)
if self._stop_websocket:
break
@@ -291,6 +305,17 @@
self._client.close()
log.debug("Stopping WebSocket (stop_client called)")
+ def _send_keep_alive(self):
+ """Send a KeepAlive message to the server to maintain the connection."""
+ try:
+ keep_alive_message = json.dumps({
+ 'MessageType': 'KeepAlive'
+ })
+ self._client.send(keep_alive_message)
+ log.debug("Sent KeepAlive message")
+ except Exception as error:
+ log.debug("Error sending KeepAlive: {0}".format(error))
+
def post_capabilities(self):
settings = xbmcaddon.Addon()

View File

@@ -67,6 +67,85 @@ def set_random_movies():
home_window.set_property("random-movies", movies_list_string)
home_window.set_property("random-movies-changed", new_widget_hash)
@timer
def set_random_tvshows():
log.debug("set_random_tvshows Called")
settings = xbmcaddon.Addon()
item_limit = settings.getSetting("show_x_filtered_items")
hide_watched = settings.getSetting("hide_watched") == "true"
user_id = get_current_user_id()
url_params = {}
url_params["Recursive"] = True
url_params["limit"] = item_limit
if hide_watched:
url_params["IsPlayed"] = False
url_params["SortBy"] = "Random"
url_params["IncludeItemTypes"] = "Series"
url_params["ImageTypeLimit"] = 0
url = get_jellyfin_url("/Users/{}/Items".format(user_id), url_params)
results = api.get(url)
random_tvshows_list = []
if results is not None:
items = results.get("Items", [])
for item in items:
random_tvshows_list.append(item.get("Id"))
random.shuffle(random_tvshows_list)
tvshow_list_string = ",".join(random_tvshows_list)
home_window = HomeWindow()
m = hashlib.md5()
m.update(tvshow_list_string.encode())
new_widget_hash = m.hexdigest()
log.debug("set_random_tvshows: {0}".format(tvshow_list_string))
log.debug("set_random_tvshows: {0}".format(new_widget_hash))
home_window.set_property("random-tvshows", tvshow_list_string)
home_window.set_property("random-tvshows-changed", new_widget_hash)
@timer
def set_random_all():
log.debug("set_random_all Called")
settings = xbmcaddon.Addon()
item_limit = settings.getSetting("show_x_filtered_items")
hide_watched = settings.getSetting("hide_watched") == "true"
user_id = get_current_user_id()
url_params = {}
url_params["Recursive"] = True
url_params["limit"] = item_limit
if hide_watched:
url_params["IsPlayed"] = False
url_params["SortBy"] = "Random"
url_params["IncludeItemTypes"] = "Movie,Series"
url_params["ImageTypeLimit"] = 0
url = get_jellyfin_url("/Users/{}/Items".format(user_id), url_params)
results = api.get(url)
random_items = []
if results is not None:
items = results.get("Items", [])
for item in items:
random_items.append(item.get("Id"))
random.shuffle(random_items)
item_list_string = ",".join(random_items)
home_window = HomeWindow()
m = hashlib.md5()
m.update(item_list_string.encode())
new_widget_hash = m.hexdigest()
log.debug("set_random_all: {0}".format(item_list_string))
log.debug("set_random_all: {0}".format(new_widget_hash))
home_window.set_property("random-all", item_list_string)
home_window.set_property("random-all-changed", new_widget_hash)
def set_background_image(force=False):
log.debug("set_background_image Called forced={0}".format(force))
@@ -333,6 +412,11 @@ def get_widget_content(handle, params):
xbmcplugin.setContent(handle, 'movies')
url_params["Ids"] = home_window.get_property("random-movies")
elif widget_type == "random_tvshows":
home_window = HomeWindow()
xbmcplugin.setContent(handle, 'tvshows')
url_params["Ids"] = home_window.get_property("random-tvshows")
elif widget_type == "recent_tvshows":
xbmcplugin.setContent(handle, 'episodes')
url_verb = '/Users/{}/Items/Latest'.format(user_id)
@@ -378,6 +462,7 @@ def get_widget_content(handle, params):
url_params["Limit"] = item_limit
url_params["userid"] = user_id
url_params["Recursive"] = True
url_params["enableResumable"] = False
url_params["ImageTypeLimit"] = 1
# check if rewatching is enabled and combine is disabled
rewatch_days = int(settings.getSetting("rewatch_days"))
@@ -396,6 +481,8 @@ def get_widget_content(handle, params):
inprogress_url_params["IncludeItemTypes"] = "Episode"
inprogress_url_params["Limit"] = item_limit
elif widget_type == "movie_recommendations":
suggested_items_url_params = {}
suggested_items_url_params["userId"] = user_id
@@ -435,6 +522,39 @@ def get_widget_content(handle, params):
log.debug("Recommended Items : {0}".format(len(ids)))
url_params["Ids"] = id_list
elif widget_type == "random_all":
home_window = HomeWindow()
xbmcplugin.setContent(handle, 'movies')
url_params["Ids"] = home_window.get_property("random-all")
elif widget_type == "recent_all":
xbmcplugin.setContent(handle, 'movies')
url_verb = '/Users/{}/Items/Latest'.format(user_id)
url_params["GroupItems"] = True
url_params["Recursive"] = True
url_params["SortBy"] = "DateCreated"
url_params["SortOrder"] = "Descending"
url_params["Limit"] = 45
url_params["Filters"] = "IsNotFolder"
url_params["Fields"] = get_default_filters()
if hide_watched:
url_params["IsPlayed"] = False
url_params["IsVirtualUnaired"] = False
url_params["IncludeItemTypes"] = "Episode, Movie"
url_params["ImageTypeLimit"] = 1
elif widget_type == "favorites_all":
home_window = HomeWindow()
xbmcplugin.setContent(handle, 'movies')
url_params.update({
"Filters": "IsFavorite",
"IncludeItemTypes": "Movie,Series",
"Recursive": True,
"SortBy": "Name",
"SortOrder": "Ascending",
})
items_url = get_jellyfin_url(url_verb, url_params)
if (url_params.get('IncludeItemTypes', '') == 'Episode' or

View File

@@ -30,6 +30,8 @@
<setting type="sep" />
<setting id="max_stream_bitrate" type="enum" label="30208" values="0.5 Mbps|1 Mbps|1.5 Mbps|2.0 Mbps|2.5 Mbps|3.0 Mbps|4.0 Mbps|5.0 Mbps|6.0 Mbps|7.0 Mbps|8.0 Mbps|9.0 Mbps|10.0 Mbps|12.0 Mbps|14.0 Mbps|16.0 Mbps|18.0 Mbps|20.0 Mbps|25.0 Mbps|30.0 Mbps|35.0 Mbps|40.0 Mbps|100.0 Mbps|1000.0 Mbps [default]|Maximum" visible="true" default="23" />
<setting id="allow_direct_file_play" type="bool" label="30433" default="false" visible="true" enable="true" />
<setting id="transcode_target_video_codec" type="select" label="30679" lvalues="30680|30681|30683" default="0" visible="true" />
<setting id="force_transcode_h264" type="bool" label="30682" default="false" visible="true" />
<setting id="force_transcode_h265" type="bool" label="30236" default="false" visible="true" enable="true" />
<setting id="force_transcode_mpeg2" type="bool" label="30239" default="false" visible="true" enable="true" />
<setting id="force_transcode_msmpeg4v3" type="bool" label="30240" default="false" visible="true" enable="true" />
@@ -45,6 +47,16 @@
<setting id="audio_codec" type="select" label="30419" values="ac3|aac" default="ac3"/>
<setting id="audio_playback_bitrate" type="select" label="30418" values="128|160|192|256|320|384|448|640" default="256" visible="true"/>
<setting id="audio_max_channels" type="slider" label="30420" default="8" range="2,1,8" option="int" visible="true"/>
<setting label="30685" type="lsep"/>
<setting type="sep" />
<setting id="preferred_audio_language" type="select" label="30686" lvalues="30691|30692|30693|30694|30695|30696|30697|30698" default="0" visible="true"/>
<setting id="auto_select_default_audio" type="bool" label="30687" default="true" visible="true"/>
<setting id="preferred_subtitle_language" type="select" label="30688" lvalues="30699|30691|30692|30693|30694|30695|30696|30697|30698" default="1" visible="true"/>
<setting id="prefer_forced_subtitles" type="bool" label="30689" default="true" visible="true"/>
<setting id="only_forced_subtitles" type="bool" label="30702" default="true" visible="true"/>
<setting id="subtitle_codec_preference" type="select" label="30703" lvalues="30704|30705|30706" default="0" visible="true"/>
<setting id="auto_no_subtitles_if_no_match" type="bool" label="30700" default="true" visible="true"/>
<setting id="max_play_queue" type="slider" label="30447" default="200" range="20, 10, 1000" option="int" visible="true"/>
</category>
@@ -81,6 +93,7 @@
<setting id="addCounts" type="bool" label="30116" default="false" visible="true" enable="true" />
<setting id="addResumePercent" type="bool" label="30118" default="false" visible="true" enable="true" />
<setting id="addSubtitleAvailable" type="bool" label="30163" default="false" visible="true" enable="true" />
<setting id="hide_x_filtered_items_count" type="bool" label="30453" default="false" visible="true" enable="true" />
<setting id="include_overview" type="bool" label="30181" default="true" visible="true" enable="true" />
<setting id="include_media" type="bool" label="30182" default="true" visible="true" enable="true" />
<setting id="add_user_ratings" type="bool" label="30348" default="true" visible="true" enable="true" />
@@ -104,6 +117,7 @@
<setting label="30223" type="lsep"/>
<setting type="sep" />
<setting id="moviePageSize" type="slider" label="30331" default="0" range="0,1,100" option="int" visible="true"/>
<setting id="showPageSize" type="slider" label="30678" default="0" range="0,1,100" option="int" visible="true"/>
<setting id="show_x_filtered_items" type="slider" label="30018" default="20" range="5,1,100" option="int" visible="true"/>
<setting label="30224" type="lsep"/>
@@ -112,6 +126,31 @@
<setting id="interface_mode" type="select" label="30225" lvalues="30226|30227" default="0" visible="true"/>
</category>
<category label="30666">
<setting label="30670" type="lsep"/>
<setting id="intro_skipper_action" type="select" label="30667" lvalues="30673|30672|30674" default="0" visible="true" enable="true" />
<setting id="intro_skipper_start_offset" type="slider" label="30668" default="0" range="0,1,3" option="int" visible="true" enable="true"/>
<setting id="intro_skipper_end_offset" type="slider" label="30669" default="1" range="0,1,3" option="int" visible="true" enable="true"/>
<setting label="30671" type="lsep"/>
<setting id="credit_skipper_action" type="select" label="30667" lvalues="30673|30672|30674" default="0" visible="true" enable="true" />
<setting id="credit_skipper_start_offset" type="slider" label="30668" default="0" range="0,1,3" option="int" visible="true" enable="true" />
<setting id="credit_skipper_end_offset" type="slider" label="30669" default="1" range="0,1,3" option="int" visible="true" enable="true" />
<setting label="30675" type="lsep"/>
<setting id="commercial_skipper_action" type="select" label="30667" lvalues="30673|30672|30674" default="0" visible="true" enable="true" />
<setting id="commercial_skipper_start_offset" type="slider" label="30668" default="0" range="0,1,3" option="int" visible="true" enable="true"/>
<setting id="commercial_skipper_end_offset" type="slider" label="30669" default="1" range="0,1,3" option="int" visible="true" enable="true"/>
<setting label="30676" type="lsep"/>
<setting id="preview_skipper_action" type="select" label="30667" lvalues="30673|30672|30674" default="0" visible="true" enable="true" />
<setting id="preview_skipper_start_offset" type="slider" label="30668" default="0" range="0,1,3" option="int" visible="true" enable="true" />
<setting id="preview_skipper_end_offset" type="slider" label="30669" default="1" range="0,1,3" option="int" visible="true" enable="true" />
<setting label="30677" type="lsep"/>
<setting id="recap_skipper_action" type="select" label="30667" lvalues="30673|30672|30674" default="0" visible="true" enable="true" />
<setting id="recap_skipper_start_offset" type="slider" label="30668" default="0" range="0,1,3" option="int" visible="true" enable="true"/>
<setting id="recap_skipper_end_offset" type="slider" label="30669" default="1" range="0,1,3" option="int" visible="true" enable="true"/>
</category>
<category label="30111">
<setting label="30343" type="lsep"/>
@@ -130,7 +169,8 @@
<setting id="profile_count" type="slider" label="30010" default="0" range="0,1,20" option="int" visible="true" />
<setting id="log_debug" type="bool" label="30027" default="false" visible="true" enable="true" />
<setting id="log_timing" type="bool" label="30015" default="false" visible="true" enable="true" />
<setting id="use_cache" type="bool" label="30345" default="true" visible="true" enable="true" />
<setting id="disable_disk_cache" type="bool" label="30684" default="true" visible="true" enable="true" />
<setting id="use_cache" type="bool" label="30345" default="false" visible="true" enable="true" />
<setting id="use_cached_widget_data" type="bool" label="30441" default="false" visible="true" enable="true" />
<setting id="showLoadProgress" type="bool" label="30120" default="false" visible="true" enable="true" />
<setting id="suppressErrors" type="bool" label="30315" default="false" visible="true" enable="true" />

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<window id="10000">
<defaultcontrol always="true">9000</defaultcontrol>
<zorder>2</zorder>
<coordinates>
<system>1</system>
<left>0</left>
<top>0</top>
</coordinates>
<controls>
<control type="button" id="9000">
<left>1020</left>
<top>550</top>
<width>150</width>
<height>65</height>
<visible>true</visible>
<label>Skip</label>
<align>center</align>
<texture border="1" colordiffuse="ff161616">white.png</texture>
<font>font12</font>
<onright>3014</onright>
</control>
</controls>
</window>

View File

@@ -11,7 +11,7 @@ import xbmcgui
from resources.lib.lazylogger import LazyLogger
from resources.lib.play_utils import Service, PlaybackService, send_progress
from resources.lib.kodi_utils import HomeWindow
from resources.lib.widgets import set_background_image, set_random_movies
from resources.lib.widgets import set_background_image, set_random_movies, set_random_tvshows, set_random_all
from resources.lib.websocket_client import WebSocketClient
from resources.lib.menu_functions import set_library_window_values
from resources.lib.server_detect import check_server, check_connection_speed
@@ -20,12 +20,16 @@ from resources.lib.datamanager import clear_old_cache_data
from resources.lib.tracking import set_timing_enabled
from resources.lib.image_server import HttpImageServerThread
from resources.lib.playnext import PlayNextService
from resources.lib.intro_skipper import IntroSkipperService
settings = xbmcaddon.Addon()
log_timing_data = settings.getSetting('log_timing') == "true"
if log_timing_data:
set_timing_enabled(True)
try:
settings = xbmcaddon.Addon()
log_timing_data = settings.getSetting('log_timing') == "true"
if log_timing_data:
set_timing_enabled(True)
except Exception:
# During installation/update, addon might not be fully registered yet
pass
# clear user and token when logging in
home_window = HomeWindow()
@@ -63,6 +67,8 @@ last_progress_update = time.time()
last_content_check = time.time()
last_background_update = 0
last_random_movie_update = 0
last_random_tvshow_update = 0
last_random_all_update = 0
# start the library update monitor
library_change_monitor = LibraryChangeMonitor()
@@ -87,6 +93,10 @@ if context_menu:
context_monitor = ContextMonitor()
context_monitor.start()
# Start the skip service monitor
intro_skipper = IntroSkipperService(monitor)
intro_skipper.start()
background_interval = int(settings.getSetting('background_interval'))
newcontent_interval = int(settings.getSetting('new_content_check_interval'))
random_movie_list_interval = int(settings.getSetting('random_movie_refresh_interval'))
@@ -104,7 +114,6 @@ first_run = True
home_window.set_property('exit', 'False')
while home_window.get_property('exit') == 'False':
try:
if xbmc.Player().isPlaying():
last_random_movie_update = time.time() - (random_movie_list_interval - 15)
@@ -124,8 +133,7 @@ while home_window.get_property('exit') == 'False':
user_changed = True
if user_changed or first_run:
settings = xbmcaddon.Addon()
server_speed_check_data = settings.getSetting("server_speed_check_data")
settings = xbmcaddon.Addon()
server_speed_check_data = settings.getSetting("server_speed_check_data")
server_host = settings.getSetting('server_address')
if server_host is not None and server_host != "" and server_host != "<none>" and server_host not in server_speed_check_data:
@@ -142,6 +150,14 @@ while home_window.get_property('exit') == 'False':
last_random_movie_update = time.time()
set_random_movies()
if user_changed or (random_movie_list_interval != 0 and (time.time() - last_random_tvshow_update) > random_movie_list_interval):
last_random_tvshow_update = time.time()
set_random_tvshows()
if user_changed or (random_movie_list_interval != 0 and (time.time() - last_random_all_update) > random_movie_list_interval):
last_random_all_update = time.time()
set_random_all()
if user_changed or (newcontent_interval != 0 and (time.time() - last_content_check) > newcontent_interval):
last_content_check = time.time()
library_change_monitor.check_for_updates()
@@ -185,6 +201,9 @@ if play_next_service:
if context_monitor:
context_monitor.stop_monitor()
if intro_skipper:
intro_skipper.stop_service()
# clear user and token when logging off
home_window.clear_property("user_name")
home_window.clear_property("AccessToken")