366 Commits

Author SHA1 Message Date
Patrick
fe0b0b7bcb New translations en.json (Afrikaans) 2026-03-26 09:43:26 +01:00
Patrick
2232312f83 New translations en.json (Spanish) 2026-03-26 09:43:25 +01:00
Patrick
f66bfc69cb New translations en.json (French) 2026-03-26 09:43:24 +01:00
Patrick
0ef964e535 New translations en.json (Romanian) 2026-03-26 09:43:23 +01:00
kingchenc
84a4e964a3 feat(V17): extract DDG language map to TrailerLanguageMap.cs with full Jellyfin language coverage
Extracts the inline DDG language map from FixYouTube.cs into a dedicated TrailerLanguageMap.cs file
and expands coverage from 22 languages to all 93 Jellyfin-supported locales.

## Changes

- New file: TrailerLanguageMap.cs — static class with all Jellyfin language codes mapped to
  DDG search keywords (English name + native name per language)
- FixYouTube.cs: inline langMap replaced with __LANG_MAP__ placeholder, injected via .Replace()
  from TrailerLanguageMap.JsObject at build time

## Why

Previously, if a user had a language not in the 22-entry inline map (e.g., Hindi, Bengali, Georgian,
Kazakh, etc.), the DDG search would fall back to an empty string — searching just "{title} Trailer
site:youtube.com" with no language qualifier. This made language matching impossible for those users.

Now every Jellyfin-supported language resolves to proper search keywords. For example:
- hi -> "Hindi हिन्दी"
- ka -> "Georgian ქართული"
- bn -> "Bengali বাংলা"
- kk -> "Kazakh Қазақша"
2026-03-25 22:33:17 +01:00
kingchenc
7bdbc061cc feat(V17): trailer fallback for non-English metadata languages via TMDB + DuckDuckGo Lite
Fixes a long-standing Jellyfin upstream bug (jellyfin/jellyfin#12817) where movies configured with
non-English metadata languages (German, Spanish, French, etc.) show no trailer button because TMDB
returns empty video data for non-English language queries.

## Problem

When Jellyfin fetches metadata with e.g. language=de, TMDB returns 0 trailers even though English
trailers exist in their database. Jellyfin makes no fallback to English. The issue was closed upstream
as "not planned" — unfixed for 2-3 years, affecting every non-English Jellyfin user.

## Solution

Client-side trailer fallback system built into the existing YouTube fix (V16 -> V17). No Jellyfin
server changes required.

When a movie detail page has no trailer button:

1. TMDB: search for trailer in user's language (via include_video_language parameter)
2. DuckDuckGo Lite: search "{title} Trailer {language} site:youtube.com", match by title
3. TMDB: English trailer (cached from step 1, no extra API call)
4. DuckDuckGo Lite: English fallback (cached from step 2, no extra API call)

Max 2 external HTTP requests (1x TMDB + 1x DDG). Steps 3+4 use cached results.

## Why DuckDuckGo Lite instead of Google/YouTube search

Google and YouTube aggressively block automated requests with CAPTCHAs, rate limiting, and bot
detection. DuckDuckGo Lite (lite.duckduckgo.com) returns plain HTML with no JavaScript, no API key
required, no CAPTCHAs, and no bot blocking. DDG Lite has been stable for years with minimal changes
to its HTML structure, making it a reliable fallback for trailer discovery.

## Technical details

- Language detected from Jellyfin user settings (document.documentElement.lang), not TV system language
- TMDB API key extracted at runtime from Jellyfin server plugin configuration (GET /Plugins -> GET
  /Plugins/{id}/Configuration), falls back to Jellyfin's default key from TmdbUtils.cs
- DDG results parsed with title extraction: language-matched results prioritized, non-matched results
  cached as English fallback
- Trailer button injected as native Jellyfin UI element (same CSS classes, Material Icons)
- Fullscreen overlay player reuses existing player.html bridge
- Closable via Tizen back button, Escape, Backspace, or video end
- httpsGet helper with 8s timeout and double-callback guard
- 22 non-English languages supported in DDG language map

## Fallback flow

```
Movie detail page loaded
  |
  +-- Trailer button exists? -> Yes -> normal existing fix (CustomPlayer)
  |
  +-- No -> Service: /trailer?tmdbId=X&lang={Jellyfin language}&tmdbKey={runtime key}
              |
              +-- 1. TMDB: trailer in user's language?
              |     -> Found -> play with CustomPlayer
              |
              +-- 2. DDG Lite: "{title} Trailer {language} site:youtube.com"
              |     -> Language matched in title? -> play with CustomPlayer
              |
              +-- 3. TMDB: English trailer (cached from step 1, no extra call)
              |     -> Found -> play with CustomPlayer
              |
              +-- 4. DDG Lite: English fallback (cached from step 2, no extra call)
              |     -> Found -> play with CustomPlayer
              |
              +-- Nothing found -> no trailer available
```
2026-03-25 21:08:02 +01:00
Dávid Balatoni
f6c6ff074c feat: add GitHub PAT input UI to settings 2026-03-25 19:39:49 +01:00
Dávid Balatoni
ee1a9140cd feat: add trace logging for GitHub token resolution source 2026-03-24 10:36:15 +01:00
Dávid Balatoni
4e27791dfe fix: improve rate limit error message with PAT setup hints 2026-03-21 20:39:09 +01:00
Dávid Balatoni
5518f7f20e feat: wire GitHubAuthHandler into HttpClient singleton 2026-03-21 20:39:05 +01:00
Dávid Balatoni
cea2bda15b feat: add GitHubToken setting to AppSettings 2026-03-21 20:38:46 +01:00
Dávid Balatoni
da91012e06 feat: add GitHub auth handler for authenticated API requests 2026-03-21 20:38:11 +01:00
PatrickSt1991
b3eb8d007b removed bom from pt.json
Dynamic Localization to work with transifex
2026-03-21 13:23:44 +01:00
PatrickSt1991
78d0ede171 Added litefin and filter for wgt and tpk in selected releases 2026-03-21 07:56:12 +01:00
Patrick
03647d6360 Update AppSettings.cs 2026-03-21 07:15:32 +01:00
Patrick
f17a8404f3 Update AddLatestRelease.cs
wgt and tpk filter
2026-03-21 07:13:30 +01:00
Patrick
3d0f89e6a8 Add fetch call for LiteFinRelease 2026-03-21 07:02:11 +01:00
Patrick
116351376a Add Moonlite to jellyfinOverrides dictionary 2026-03-21 06:57:38 +01:00
Patrick
7dc7ecc6e3 Add Litefin constant for image URL 2026-03-21 06:55:21 +01:00
Patrick
f663eae6d9 Add LiteFinRelease property to AppSettings 2026-03-21 06:49:52 +01:00
Patrick
bfed3237e7 Update Constants.cs 2026-03-15 07:44:56 +01:00
PatrickSt1991
de7edefc9c added Portugees, thanks @eduardomozart 2026-03-04 12:35:06 +01:00
PatrickSt1991
5ed25031ca Place CustomWGT in try catch #285
Always add Custom WGT option also when rate limit is hit #287
2026-03-03 08:59:50 +01:00
PatrickSt1991
ecf6937f55 Moonfin URL update 2026-03-03 08:18:52 +01:00
PatrickSt1991
4e9ab2dcb8 Allow secondary Jellyfin to pass even if main is installed
Dynamic port change on youtube trailer service fix for secondary jellyfin
New function to extract appid from config
2026-02-22 09:22:32 +01:00
Patrick
0cab66098e Add TTD constant for image URL 2026-02-21 15:42:11 +01:00
Patrick
030cf24786 Add TransportTycoonDeluxe preview image 2026-02-21 15:41:03 +01:00
Patrick
faab2a68df Update TizenCertificateService.cs 2026-02-19 16:40:39 +01:00
PatrickSt1991
9d4f6b5630 version bump 2026-02-18 12:31:01 +01:00
PatrickSt1991
2c2bb5de80 Package required version check with Tizen OS 2026-02-18 12:02:39 +01:00
Patrick Stel
cd7d17e2b0 NotInstalled Error code added
Catch not installed error code and continue installation flow
2026-02-17 14:31:54 +01:00
Patrick
4f0232ab6a Fix app ID retrieval in CheckForInstalledApp method 2026-02-16 15:32:22 +01:00
Patrick
28b39c39f5 Implement ReadWgtApplicationId method
Add method to read WGT application ID from config.xml
2026-02-16 15:29:40 +01:00
Patrick
7d4c94bd62 Refactor CheckForInstalledApp to use expectedAppId
expectedAppId check instead of using constants
2026-02-16 15:19:40 +01:00
PatrickSt1991
e36755de2f Merge branch 'beta' of https://github.com/PatrickSt1991/Samsung-Jellyfin-Installer into beta 2026-02-14 08:25:54 +01:00
PatrickSt1991
c15405cebb Resolves #265 - Assume installed when app_list is not returned by TV 2026-02-14 08:25:33 +01:00
Patrick
1643ea5758 Update BuildInfoViewModel.cs 2026-02-10 12:50:53 +01:00
Patrick
7906bca1b2 Update Constants.cs 2026-02-10 12:49:48 +01:00
PatrickSt1991
91c3aa9549 Revert program.cs logs folder logic 2026-02-09 12:21:03 +01:00
PatrickSt1991
4471e27855 Revert "Folder location fix for Linux"
This reverts commit e377ddfd49.
2026-02-09 12:08:40 +01:00
PatrickSt1991
e377ddfd49 Folder location fix for Linux 2026-02-09 11:06:10 +01:00
PatrickSt1991
64d610d6b2 Different location for Linux 2026-02-09 10:26:42 +01:00
PatrickSt1991
c4a4e947ba App preview added 2026-01-29 19:34:02 +01:00
PatrickSt1991
a1cac4ae17 return fix, iframe layover fix
gerneral youtube trailer fix
2026-01-28 12:17:39 +01:00
PatrickSt1991
cc231e39fd version bump 2026-01-27 21:03:00 +01:00
PatrickSt1991
9879412518 fetchReleases instead of release
Added prefix option and int to tell how much releases to fetch
2026-01-27 20:57:47 +01:00
PatrickSt1991
0af0f2d1aa Fixed config.json error when package isnt jellyifin 2026-01-27 20:07:06 +01:00
PatrickSt1991
e91a0f23d6 YouTube fix on Tizen 9 2026-01-27 19:29:36 +01:00
PatrickSt1991
d4fc9b6071 new finding 2026-01-26 21:11:43 +01:00
PatrickSt1991
0979d05234 Wokring resolver 2026-01-25 20:53:52 +01:00