The grid served Hungarian titles, but every other card surface (Discover rails, the show page's episodes, search, collections, the person page, playlists, Home's resume rail, hero and comfort shelf) served English. The card serializers now take a required keyword-only lang (a forgotten call site fails instead of going English), and each of those reads takes ?lang=hu, with the language in its query key. A Hungarian search finds an episode by its Hungarian title too. An episode on a poster rail showed its 16:9 still cropped into a poster, titled only with the episode name; it now shows the show's poster and name, with S·E · title under it (option A). Plex's generic season names (Season 1, Specials) are rebuilt from the number in the reader's language; a season with a name of its own keeps it. Home's comfort-shelf move wrote its optimistic order to the key without the language, which nothing read any more; it writes the query's own key.
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
"""Plex card serializers (app.plex.cards) — pure model->dict projections, no DB needed.
|
|
|
|
E5 S1: movie/show cards now also emit `art` (the wide backdrop, for a Discover rail's landscape tile
|
|
and the crossfading hero), but ONLY when the item actually has an `art_key` — otherwise the URL would
|
|
resolve to a blank image on every card that tried to use it, so it must be null and let the client fall
|
|
back to the poster."""
|
|
|
|
from app.models import PlexItem, PlexShow
|
|
from app.plex.cards import movie_card, show_card
|
|
|
|
|
|
def test_movie_card_emits_art_when_art_key_present():
|
|
it = PlexItem(rating_key="m1", kind="movie", title="M", year=2020, art_key="/library/art/1")
|
|
card = movie_card(it, None, lang="en")
|
|
assert card["thumb"] == "/api/plex/image/m1"
|
|
assert card["art"] == "/api/plex/image/m1?variant=art"
|
|
|
|
|
|
def test_movie_card_art_is_none_without_art_key():
|
|
it = PlexItem(rating_key="m2", kind="movie", title="M2")
|
|
assert movie_card(it, None, lang="en")["art"] is None
|
|
|
|
|
|
def test_show_card_emits_art_when_art_key_present():
|
|
sh = PlexShow(rating_key="s1", title="S", art_key="/library/art/2")
|
|
assert show_card(sh, lang="en")["art"] == "/api/plex/image/s1?variant=art"
|
|
|
|
|
|
def test_show_card_art_is_none_without_art_key():
|
|
sh = PlexShow(rating_key="s2", title="S2")
|
|
assert show_card(sh, lang="en")["art"] is None
|