---
feature: "Router & Core"
description: "Centrální routing pluginu, sdílené utility, uživatelská data a cache systém"
files:
  - wcs/router.py
  - wcs/utils.py
  - wcs/user_data.py
  - wcs/caching.py
  - wcs/localization.py
  - main.py
parent: true
children:
  - "Router"
  - "Utils"
  - "User Data"
  - "Caching"
  - "Localization"
created: "2026-04-04"
updated: "2026-04-04"
status: "complete"
---

# Router & Core

Základní infrastruktura pluginu. Router přijímá URL akce z Kodi a deleguje na správné moduly. Utils poskytuje sdílené funkce pro celý plugin. User Data spravuje všechna perzistentní uživatelská data. Caching zajišťuje rychlý přístup k metadatům a assetům.

## Soubory

| Soubor | Velikost | Účel |
|--------|----------|------|
| `main.py` | 0.3 KB | Vstupní bod pluginu – volá `router.router()` |
| `wcs/router.py` | 85 KB | Centrální směrovač všech akcí |
| `wcs/utils.py` | 48 KB | Sdílené utility a helper funkce |
| `wcs/user_data.py` | 19 KB | Perzistence uživatelských dat |
| `wcs/caching.py` | 14 KB | Unified cache manager |
| `wcs/localization.py` | 0.6 KB | Lokalizace řetězců |

## Child funkce

### Router

- **Co dělá**: Přijímá URL parametry z Kodi (`action=xxx`), parsuje je a deleguje na příslušné moduly. Je to centrální rozcestník celého pluginu – každá akce uživatele (přehrání, vyhledání, zobrazení menu) prochází přes router.
- **Klíčové metody**: `router(paramstring)` – hlavní dispatch funkce
- **Vstupy**: URL query string z `sys.argv[2]` (Kodi plugin URL parametry)
- **Výstupy**: Kodi directory listings, přehrávání, dialogy
- **Závislosti**: Importuje prakticky všechny ostatní moduly – UI, metadata, webshare, search, AI, games, login, library, playback
- **Settings**: žádné přímé – ale čte `wsuser`, `token`, `tmdb_api_key` pro kontrolu přihlášení

### Utils

- **Co dělá**: Obsahuje sdílené utility pro celý plugin. Hlavní oblasti: extrakce metadat z názvů souborů (kvalita, jazyk, formát), skórování výsledků vyhledávání, formátování velikostí, a centrální funkce pro přehrávání filmů a epizod.
- **Klíčové metody**:
  - `extract_clean_title(filename)` – čištění technických názvů souborů na čitelné
  - `extract_quality(filename)` – detekce kvality (4K, 1080p, 720p...)
  - `extract_language(filename)` – detekce jazyka/dabingu
  - `calculate_advanced_score(item, query)` – pokročilé skórování s prioritou kvalita → velikost → CZ jazyk
  - `search_and_play_movie(title, year, ...)` – centrální vstup pro přehrání filmu
  - `search_and_play_episode(series, season, episode, ...)` – centrální vstup pro přehrání epizody
  - `play_movie_from_addon(meta, addon)` – jednotný vstup z UI dialogů
  - `play_episode_from_addon(meta, addon)` – jednotný vstup z UI dialogů
  - `play_next_episode_with_metadata(params, addon)` – přehrání dalšího dílu s TMDb metadaty
- **Vstupy**: Názvy souborů, metadata slovníky, addon instance
- **Výstupy**: Čištěné řetězce, skóre, spuštění přehrávání přes `PlayMedia()`
- **Závislosti**: `user_data`, `wcs.ui.dialogs.DialogWcsSearch`, `wcs.metadata.TMDbClient`, `wcs.playback.metadata`, `wcs.playback.dialog_scheduler`, `wcs.library.LibraryManager`
- **Settings**: `default_movie_action`, `autoplay_first_item`, `autoplay_preferred_quality`

### User Data

- **Co dělá**: Spravuje veškerá perzistentní uživatelská data v JSON souborech v profilu addonu. Obsahuje watchlisty (filmy, seriály), oblíbené osoby (herci, režiséři, scénáristé), historii vyhledávání, MyTV/MyCinema kanály a historii přehrávaných položek.
- **Klíčové metody**:
  - `load_tmdb_series/movies(addon)` – načtení watchlistů
  - `store_tmdb_series/movies(addon, list)` – uložení watchlistů
  - `load/store_favorite_actors/directors/writers(addon)` – oblíbené osoby
  - `load/store_search_history_setting(addon, key, what, max)` – historie hledání (universal, tmdb, tv)
  - `load/store_mytv_channels(addon)` – MyTV kanály
  - `load/store_mycinema_channels(addon)` – MyCinema kanály
  - `add_recently_played_item(addon, item)` – přidání do historie přehraných (max 50)
  - `check_providers_and_prompt(addon, callback)` – kontrola přihlášení k providerům
- **Vstupy**: Addon instance, data k uložení
- **Výstupy**: Python seznamy/slovníky, JSON soubory v `userdata/addon_data/plugin.video.milionar/`
- **Závislosti**: `wcs.login.DialogWebshareLogin`, `wcs.login.DialogKraskaLogin`
- **Settings**: `wsuser`, `wspass`, `kraska_token`, `webshare_enabled`, `kraska_enabled`

### Caching

- **Co dělá**: Centralizovaný cache manager s in-memory cache a disk persistencí. Podporuje metadata (JSON) i binární assety (obrázky). Thread-safe s atomic writes, TTL expirací a automatickým garbage collection.
- **Klíčové metody**:
  - `get(key, default)` – načtení z cache s TTL kontrolou
  - `set(key, data, ttl_seconds)` – uložení s volitelným TTL
  - `delete(key)` / `delete_prefix(prefix)` – mazání
  - `get_asset_path(cache_key)` – cesta k cachovanému assetu
  - `save_asset(cache_key, data, extension)` – uložení binárního assetu
  - `save_pil_image(cache_key, pil_image, quality)` – uložení PIL obrázku
  - `maintenance(max_age_days, max_size_mb)` – garbage collection
  - `get_cache_manager()` – singleton přístup
- **Vstupy**: Klíče (string), data (JSON-serializovatelná), binární data (bytes)
- **Výstupy**: Cachovaná data, cesty k souborům
- **Závislosti**: žádné
- **Settings**: žádné přímé (default: 7 dní max age, 100 MB max size)

### Localization

- **Co dělá**: Wrapper pro Kodi lokalizaci. Poskytuje `get_localized_string()` a třídu `Localizer` pro jednodušší přístup k přeloženým řetězcům z `resources/language/`.
- **Klíčové metody**: `get_localized_string(addon, string_id)`, `Localizer(addon)._(string_id)`
- **Vstupy**: Addon instance, ID řetězce
- **Výstupy**: Lokalizovaný text
- **Závislosti**: žádné
- **Settings**: žádné
