---
feature: "MyTV"
description: "Živé TV rozhraní pro sledování seriálů organizovaných do kanálů s EPG, fanart slideshow a podmíněnými settings"
files:
  - wcs/ai/DialogMyTV.py
  - wcs/ai/MediaChannelManager.py
  - wcs/ai/ChannelHistory.py
  - wcs/ai/ChannelNameGenerator.py
  - wcs/ai/PlaylistBuilder.py
  - wcs/playback/dialogs/continue_broadcast.py
  - resources/skins/Default/1080i/ai/DialogMyTV_appletv.xml
  - resources/skins/Default/1080i/ai/DialogMyTV.xml
  - resources/skins/Default/1080i/ai/DialogMyTV_classic.xml
  - resources/skins/Default/1080i/ai/DialogMyTV_kodi.xml
  - resources/skins/Default/1080i/ai/DialogMyTVContinue.xml
parent: true
children:
  - "DialogMyTV"
  - "MediaChannelManager"
  - "ChannelHistory"
  - "ChannelNameGenerator"
  - "PlaylistBuilder"
  - "Fanart Slideshow"
  - "Podmíněné Settings"
  - "Continue Broadcasting Dialog"
created: "2026-04-04"
updated: "2026-04-13"
status: "complete"
---

# MyTV

Unikátní TV-like rozhraní pro sledování seriálů. Uživatel přidává seriály do „kanálů" a sleduje je jako na televizi – s EPG programem, nadcházejícími epizodami a automatickým pokračováním. Podporuje 4 vizuální designy (Classic, Modern, Apple TV, Kodi), podmíněné zobrazení settings podle designu, fanart slideshow pro Apple TV s TMDb backdrops, a integraci s hrou Milionář.

## Soubory

| Soubor | Velikost | Účel |
|--------|----------|------|
| `wcs/ai/DialogMyTV.py` | ~182 KB | Fullscreen MyTV dialog + slideshow logika |
| `wcs/ai/MediaChannelManager.py` | 18 KB | Správa kanálů a seriálů |
| `wcs/ai/ChannelHistory.py` | 8 KB | Historie sledování per kanál |
| `wcs/ai/ChannelNameGenerator.py` | 23 KB | AI generování názvů kanálů |
| `wcs/ai/PlaylistBuilder.py` | 5 KB | Sestavování playlistů epizod |
| `wcs/playback/dialogs/continue_broadcast.py` | 26 KB | Continue Broadcasting dialog – hero fanart, slideshow, loading progress |
| `resources/skins/Default/1080i/ai/DialogMyTV_appletv.xml` | ~30 KB | Apple TV design XML |
| `resources/skins/Default/1080i/ai/DialogMyTV.xml` | ~25 KB | Modern design XML |
| `resources/skins/Default/1080i/ai/DialogMyTV_classic.xml` | ~20 KB | Classic design XML |
| `resources/skins/Default/1080i/ai/DialogMyTV_kodi.xml` | ~18 KB | Kodi design XML |
| `resources/skins/Default/1080i/ai/DialogMyTVContinue.xml` | ~20 KB | Continue Broadcasting dialog XML |

## Child funkce

### DialogMyTV

- **Co dělá**: Nejrozsáhlejší dialog pluginu (~182 KB). Fullscreen TV rozhraní s kanálovým rozložením, EPG gridem, hero zone, nadcházejícími epizodami a přehrávačem. Podporuje navigaci mezi kanály, výběr epizod, přepínání designů (4 varianty), background efekty a navigační sidebar.
- **Klíčové metody**: `show_my_tv_dialog(addon)`, `_update_hero_zone()`, `_setup_background_properties()`, `_is_slideshow_enabled()`, `_start_slideshow_for_series()`, `_stop_slideshow()`
- **Vstupy**: Addon instance, navigační parametry (show_nav_sidebar, nav_position)
- **Výstupy**: Fullscreen TV rozhraní, spuštění přehrávání
- **Závislosti**: `MediaChannelManager`, `ChannelHistory`, `ChannelNameGenerator`, `PlaylistBuilder`, [006-metadata.md](006-metadata.md) (TMDb API pro metadata epizod a backdrops), [001-router-core.md](001-router-core.md) (utils pro přehrávání)
- **Settings**: `mytv_design` (0=Classic, 1=Modern, 2=Apple TV, 3=Kodi), `mytv_play_selection_style`, `mytv_upcoming_count`, `mytv_block_size`, `mytv_channel_naming`

### Fanart Slideshow

- **Co dělá**: Rotace fanart obrázků na pozadí MyTV pro Apple TV design. Při zapnutí stáhne seznam všech backdrops z TMDb API (`/tv/{id}/images`), seřadí je podle hodnocení a cyklicky je střídá na pozadí. Kodi nativní `fadetime` (800ms) zajišťuje plynulé crossfade přechody.
- **Klíčové metody**: `_is_slideshow_enabled()` – kontrola design + setting, `_fetch_series_backdrops(tmdb_id)` – TMDb API volání, `_slideshow_loop()` – daemon thread rotace, `_start_slideshow_for_series(tmdb_id)` – start pro konkrétní seriál, `_stop_slideshow()` – cleanup
- **Vstupy**: TMDb ID seriálu z aktuálně zobrazené hero zone
- **Výstupy**: Rotace `WCS.MyTV.Hero.Fanart` Window.Property v konfigurovatelném intervalu
- **Závislosti**: [006-metadata.md](006-metadata.md) (TMDb `/tv/{id}/images` endpoint), `threading` (daemon thread)
- **Settings**: `mytv_bg_slideshow` (bool, default false), `mytv_bg_slideshow_interval` (5-60s, default 15), `mytv_bg_slideshow_max` (3-30 obrázků, default 10)
- **Design**: Funkční POUZE pro Apple TV design (`mytv_design=2`). Pro ostatní designy existuje separátní background systém.

### Podmíněné Settings

- **Co dělá**: Settings.xml MyTV kategorie zobrazuje různé sekce pozadí podle zvoleného designu. Řídící setting `mytv_design` je na prvním místě v kategorii. PŘÍMO za ním (bez sep/lsep/text) následují podmíněné background settings.
- **Architektura podmínek**:
  - `mytv_design` = řídící select (index 0-3)
  - Staré bg settings (`mytv_background_mode`, `blur`, `glow`, `dim`, `animation`): `visible="!eq(-N,2)"` – viditelné pro Classic/Modern/Kodi
  - Nové slideshow settings (`mytv_bg_slideshow`, `interval`, `max`): `visible="eq(-N,2)"` – viditelné POUZE pro Apple TV
  - **KRITICKÉ**: Mezi `mytv_design` a podmíněnými settings NESMÍ být žádné `sep`/`lsep`/`text` elementy – Kodi je nepočítá spolehlivě do eq() offsetu!
- **Settings pro Classic/Modern/Kodi (design ≠ 2)**: `mytv_background_mode`, `mytv_background_blur`, `mytv_background_blur_radius`, `mytv_background_glow`, `mytv_background_glow_intensity`, `mytv_background_dim`, `mytv_background_animation`, `mytv_anim_style`
- **Settings pro Apple TV (design = 2)**: `mytv_bg_slideshow`, `mytv_bg_slideshow_interval`, `mytv_bg_slideshow_max`

### MediaChannelManager

- **Co dělá**: Spravuje MyTV kanály – přidávání/odebírání seriálů, řazení, konfigurace kanálů. Každý kanál obsahuje seznam seriálů s TMDb ID, postup sledování a zobrazovací nastavení.
- **Klíčové metody**: `add_series_to_channel(channel_id, series_data)`, `remove_series(channel_id, tmdb_id)`, `get_channel_series(channel_id)`, `reorder_channels()`
- **Vstupy**: Channel ID, data seriálu (tmdb_id, name, poster)
- **Výstupy**: Aktualizované kanály v `user_data`
- **Závislosti**: [001-router-core.md](001-router-core.md) (user_data)
- **Settings**: žádné přímé

### ChannelHistory

- **Co dělá**: Sleduje progress sledování epizod per kanál. Ukládá resume point (sezóna, epizoda, čas) a označení zhlédnutých epizod. Umožňuje pokračovat tam, kde uživatel přestal.
- **Klíčové metody**: `set_resume_point(channel_id, tmdb_id, season, episode, position, duration)`, `get_resume_point(channel_id, tmdb_id)`, `mark_watched(channel_id, tmdb_id, season, episode)`
- **Vstupy**: Channel ID, TMDb ID, čísla sezóny/epizody, pozice přehrávání
- **Výstupy**: Resume data, watched stav
- **Závislosti**: [001-router-core.md](001-router-core.md) (user_data persistence)
- **Settings**: žádné

### ChannelNameGenerator

- **Co dělá**: Generuje kreativní názvy pro MyTV kanály pomocí AI. Na základě žánrů seriálů v kanálu navrhuje tematické názvy (např. „Kriminální Zóna", „Fantasy Realm"). Podporuje automatický režim (dle žánru) i AI generování.
- **Klíčové metody**: `generate_channel_name(channel_data)`, `get_auto_name_by_genre(genres)`
- **Vstupy**: Data kanálu (seznam seriálů a jejich žánry)
- **Výstupy**: Název kanálu (string)
- **Závislosti**: [002-ai-system.md](002-ai-system.md) (AIHandler pro AI generování)
- **Settings**: `mytv_channel_naming` (Automaticky/AI/Vlastní)

### PlaylistBuilder

- **Co dělá**: Sestavuje playlisty epizod pro přehrávání v MyTV. Určuje pořadí epizod na základě resume pointu a upcoming epizod v kanálu.
- **Klíčové metody**: `build_playlist(channel_id, start_season, start_episode)`, `get_next_episodes(channel_id, count)`
- **Vstupy**: Channel ID, výchozí sezóna/epizoda
- **Výstupy**: Seřazený seznam epizod k přehrání
- **Závislosti**: `ChannelHistory`, [006-metadata.md](006-metadata.md) (TMDb pro seznam epizod)
- **Settings**: žádné

### Continue Broadcasting Dialog

- **Co dělá**: Fullscreen dialog zobrazený na konci MyTV playlistu (poslední epizoda). Nabízí uživateli výběr seriálu pro pokračování "živého vysílání". Design odpovídá MyTV Apple TV stylu s hero fanart, gradienty a poster kartami.
- **UI architektura**:
  - **Hero zone**: Fullscreen fanart s Ken Burns zoom animací, cinematic + top gradient, dynamický crossfade (fadetime 800ms)
  - **Hero info**: Logo seriálu (TMDb `/tv/{id}/images`), kód epizody, metadata (žánr | runtime | rok | rating)
  - **Tlačítka**: „Pokračovat" (primární, modré `CC2997FF`) + „Zavřít" (sekundární, šedé), horizontální grouplist
  - **Poster řada**: Horizontální list se zaoblenými kartami (210x315, `card_mask.png`), zoom 115% na focus, název seriálu pod kartou
  - **Loading stav**: Progress bar (`progress_pill.png`), real-time counter „5/12 epizod", text aktuální operace
- **Python logika** (`ContinueBroadcastDialog`):
  - Focus monitor thread (200ms poll) – detekuje změnu fokusovaného seriálu a aktualizuje hero zone
  - Slideshow thread – rotace TMDb backdrops (respektuje nastavení `mytv_bg_slideshow_*`)
  - Logo fetch – TMDb API s preferencí CS → EN
  - Playlist generování s progress reportingem – po výběru seriálu generuje playlist přímo v dialogu
- **Trigger**: `PlaylistCountdownMonitor` – primární (30s před koncem) + fallback (po skončení přehrávání)
- **Klíčové metody**: `_update_hero_for_index(index)`, `_start_loading(series_id)`, `_generate_playlist_with_progress(start_series_id)`, `_fetch_and_set_logo(tmdb_id)`, `_slideshow_loop()`
- **Vstupy**: `channel_id`, seřazený `series_candidates` (round-robin pořadí z cache)
- **Výstupy**: `ACTION_SELECT` + `selected_series_id` + `_generated_playlist` → PlaylistCountdownMonitor spustí přehrávání
- **Závislosti**: [006-metadata.md](006-metadata.md) (TMDb backdrops, loga, next episode), [007-playback.md](007-playback.md) (PlaylistCountdownMonitor), `PlaylistBuilder` (URL + ListItem)
- **Settings**: Respektuje `mytv_bg_slideshow`, `mytv_bg_slideshow_interval`, `mytv_bg_slideshow_max`, `mytv_upcoming_count`, `mytv_block_size`, `autoplay_countdown_seconds`
- **Escape/Back**: Ve výběru – zavře dialog. Při loadingu – vrátí do výběru (zruší generování).
