plex-smash-deck
Connectivity…
Playback Loading…

Target Player

Uses discovered Plex players; falls back to configured default.

Plex companion controls (pause/skip/seek) use the Plex remote API. They are hidden when the selected target is LG TV (SSAP) — use the TV remote for that player.

Library

Idle

Tip: Hover a movie card for about 0.75s for details. Click an actor or director name in the panel to fill the search bar and set Match → Actor or Director. Click the poster for native-size image. File size turns yellow or red if that movie probably needs more bandwidth than your latest Plex sample (header P bars, or full numbers under Settings → Connectivity); your TV’s Wi‑Fi can differ.

You can show it again anytime from here.
Match
0 movies
Genres
Include any

Playlists

Play uses your loaded library and Plex playlists. Discovery (other tab) is for TMDB filmography gaps — titles you don’t have yet. Use the section below to start playback from an existing Plex playlist or to build new playlists from movies already in your library.

Play from Plex

?
Playlist items preview:

    No playlist action yet.

    Build playlists from your library (actor / director / genre)

    By actor / director

    Creates a Plex playlist from titles in your library that match the people you enter.

    No person-filtered playlist action yet.

    By genre & rating (1982–2016)

    Rule: includes all matching movies with year from 1982 through 2016.

    No genre/rating playlist action yet.

    No preview yet.

      Help

      Guides are Markdown files in the repo docs/ folder. Start with Getting started, then Connecting your TV if you use an LG set. Links like help:00-getting-started.md in a doc jump to another guide in the menu below.

      Loading docs…
      No help document selected.

      Discovery — filmography gaps

      Tip: Plot and poster preview appear after you hold the pointer on the title or poster for about 0.75 seconds. Then you can move onto the floating panel; click the image there for a larger poster. — By year & TMDB rating uses TMDB’s discover list (no actor/studio): set min and/or max year and optional min rating. Other modes find credits vs your library. Min rating uses TMDB vote average (0–10). Filtered out: documentaries (TMDB genre or “documentary” in text), TV movies / news, and typical “making of” / behind-the-scenes extras. Optional Exclude non-theatrical tightens results to US limited/wide theatrical (browse/studio) and drops TMDB-marked direct-to-video titles (all modes when details are known). Cache: TMDB responses stay on disk under data/tmdb-discovery-cache/ until you use Clear TMDB cache below. The Plex library list is the same in-memory snapshot as the Dashboard tab (refreshed when you click Refresh Movies there, or when a scheduled snapshot runs). Poster/debug: server appends diagnostics to data/plexdash-discovery.log.

      Cart: 0 Idle
      Optional Genres: hold Ctrl/Cmd to pick multiple TMDB genres — a title matches if it has any of them (OR). Browse/studio pass this to TMDB discover; actor/director mode filters after credits load. Results favor newer releases (TMDB release date). Min TMDB rating is optional (choose Any for the full filmography). Library matching uses TMDB ids from Plex when available, otherwise title/year. Watched titles stay listed. Click column headers to resort. Cart is saved in this browser (local). Copy missing = not in library; Copy all titles = every row in current order; Copy cart = items you added to the cart (Markdown, includes TMDB id).
      # Cover Title Year Genres TMDB In library In playlist Known for Action
      Loading…
      ⚠️
      MISSING MOVIES DETECTED
      Movies that have disappeared between snapshots

      Snapshot History

      # Captured Movies Change vs Prev Action

      Settings

      Environment variables load first on the server. Use this page to persist values between runs. Secret fields show only the start and end; use Copy for the full token.

      Plex

      Library & TV

      Used for Plex API calls.
      Account token for Plex authentication.

      Movie section key, usually 1.

      Pick from detected players; this is used as fallback for play actions.
      If enabled, playback defaults to the best currently detected TV/client and falls back if unavailable.

      Branding

      Look & feel

      Shown on the dashboard hero banner (over the image).

      Banner image: Leave the URL blank to use a poster from your Plex library (most-played, or any title). The server can supply a thumb from its library cache even before you click Load Movies. Check Hide banner image below to remove the hero strip entirely.


      Recommended range: 100–220. Fanart images use object-fit: cover so wide backgrounds crop cleanly.

      Fanart.tv (hero banner)

      When enabled and Banner Image URL is left blank, the hero strip loads wide movie art from fanart.tv (requires a TMDB id on the Plex item). Titles are ordered by most played first, then newest added to the library. Downloaded files live under data/fanart-banner-cache/ with LRU eviction when the cache exceeds your size budget.



      Register a project on fanart.tv for higher rate limits.

      Oldest images are removed when the total exceeds this budget.


      TMDB

      Discovery data
      Used for discovery search and filmography lookup. Get API key.
      Optional token; kept for compatibility/future use. Create TMDB account.

      OMDb

      Optional ratings

      When enabled, Discovery uses the average of TMDB vote average and OMDb IMDb score (both on a 0–10 style scale) for sorting, filtering, and table display. That blends two communities’ ratings and can track closer to how you personally weight critic vs crowd scores. Requires a free API key from OMDb. Responses are cached on disk under data/omdb-cache/ (cleared with Clear TMDB cache on the Discovery tab). On the Dashboard, hovering a movie (after the usual delay) loads IMDb, Rotten Tomatoes, and Metacritic from OMDb when the title has a TMDB id from Plex, merges TMDB vote average, and updates the line under the title to show a combined Avg ★ plus per-source pills.

      Sent as apikey= on each request (see omdbapi.com).

      Disk caches

      Fanart banner artwork is stored separately from TMDB discovery caches. Clearing it forces the next hero request to download again (subject to your refresh schedule).

      Fanart banner cache: —
      Fanart banner activity log

      Server-side log: fanart.tv downloads, HTTP errors, cache evictions, Plex-thumb fallbacks, and startup prefetch. Up to 200 lines kept in memory (lost on server restart).

      Loading…

      Connectivity

      Health & history

      Playback video goes directly from Plex to the TV; this app does not proxy the movie stream. When healthy, each connectivity target is probed about every 45s (internet, Plex /identity, TMDB, OMDb, LG SSAP). After a failure the server retries with exponential backoff (about 4s→90s per target, with jitter) and never stops. The Plex speed sample uses a ~4 minute interval when OK; on failure it retries sooner (about 20s→3 min). The Dashboard library hint caches Plex title count for 90s to limit duplicate API calls. LG volume polls about every 15s when the TV responds; on errors it retries with the same style of exponential backoff (TV only, not Plex). Last update:

      Connectivity history

      Each time this browser loads fresh data from /api/connectivity, a compact sample is saved locally (same machine as this tab). Use the chart to spot trends. Data stays in your browser — not on the server.

      Maintaining caches

      Disk & memory

      On-disk paths are under the server’s working directory (shown below). TMDB / OMDb caches are cleared from the Discovery tab. The movie grid row reflects this browser’s saved copy (localStorage), not the server.

      Open this section or click Refresh to load.
      Cache Location Size Files Updated Notes

      Dashboard genre bar

      This browser

      Quick filter chips above the movie grid default to Action, Comedy, Thriller, Adventure, and Science Fiction (including Sci‑Fi) when those genres exist in your library. Use Include any for OR-matching; Exclude if any hides titles that also have those genres (e.g. comedy but not documentary). Open More genres for + pin, exclude, and . Pinned/hidden lists and your active include / exclude filters are saved in this browser and survive refresh.


      Extra tags shown first on the bar (before default slots).

      Default slots removed with −.

      While any exclusions are set, movies with any of these genres are hidden (even if they match Include).

      Radarr

      Add to library

      Radarr server used for add/import automation.
      Required for /api/v3/movie requests.

      Root folder path where Radarr stores movies.

      Quality profile ID used on add.
      Not saved yet.

      Snapshot schedule

      The server takes one automatic snapshot per day and skips it silently if the movie count hasn't changed since the previous snapshot.

      Uncheck to disable automatic daily snapshots entirely.

      Hour when the snapshot fires each day (server timezone: UTC).