Episode image provider with title-match for alternative orderings.
New LanguageAwareEpisodeImageProvider for shows where TVDB's order (Disney+, DVD, Production etc.) doesn't line up with TMDB's. The built-in TMDB image provider asks for "S2E5" literally and gets back whatever TMDB has at that position, which is the wrong episode for shows with alt orderings. TMDB's own episode_groups API exists but is community-edited and unreliable (verified empirically with Bluey: TMDB's "Disney Order" group doesn't match the actual Disney+ order).
This provider sidesteps episode_groups entirely and matches by title:
- One TMDB call per season per show on first encounter, cached by (show, lang)
- Build a normalised-title to still_path map
- Local episode lookup via NormaliseTitle (lowercase, strip leading articles, strip whitespace and punctuation) against the map
- Returns the still URL bound to the title, not to (S,E) position
Episode title is the natural key, it's stable across orderings, between TVDB and TMDB, and across language refreshes. If no match is found the provider returns empty and the built-in provider takes over (no regression).
Toggle in config: MatchEpisodeImagesByTitle (default on). Specials (S0) skipped to keep the API call count down, they rarely have alt-order issues.