Skip to content

Plex Media Server

Iain Smith edited this page Sep 2, 2026 · 2 revisions

Plex Media Server

URL can also point at a Plex Media Server:

tvdinner 'plex://host:port?X-Plex-Token=...'

Use plexs:// instead of plex:// if the server is served over https. Plex is the odd one out among tvdinner's sources: there's no live channel list or EPG at all — it's a library browser instead, entirely on-demand.

Finding your token: play anything in Plex Web, open your browser's dev tools → Network tab, and look for X-Plex-Token=... in any request's query string (or see Plex's own instructions).

Browsing

On connecting, tvdinner lists the server's movie and TV-show libraries as a full-screen overlay, plus a synthetic On Deck row first — pulled from Plex's own server-wide on-deck feed (movies you left partway through, and the next unwatched episode of any show you're partway through), so picking up where you left off doesn't need navigating into a specific library first. In the On Deck row an episode is shown under its season poster rather than an episode screengrab — an at-a-glance "which show am I mid-way through" cue. Everywhere else (inside a season's own episode list, search results) an episode keeps its own still.

Each row shows its poster/cover art plus year, content rating, Plex's own audience score, and (for a movie or episode) resolution (1080p/4K/SD), all straight from Plex with no extra lookups:

  • UP/DOWN/PGUP/PGDWN — move the selection
  • ENTER — drill in (library → show → season → episode) or play a movie/episode
  • ESC/LEFT — go back a level, or close the browser from the top level
  • l — reopen the browser later, right back where you left off (not the library root) — even after starting playback
  • g — switch between Grid view (large poster tiles, the default) and List view (a scrolling row per item); your choice persists as you keep browsing
  • Any letter/digit (except g/h/v/l/y) — jump to the next title starting with it, while browsing a flat list of movies or shows specifically
  • / — search the whole server via Plex's own search API, not just what's on screen
  • y — filter by release year instead: every movie, show, and individual episode (matched by its own air date, not the show's premiere year) across every library released that year, movies always ahead of TV
  • h — favorite the selected movie or show (never a season or episode); v shows only favorited movies/shows
  • ENTER (hold) — on a movie, show, or episode: a small menu ("Play from Start" — bypasses any resume position, "Mark as Watched", "Mark as Unwatched")

Playback

Playback is always direct-play — the file's own container/codecs, streamed straight from Plex. tvdinner never asks Plex to transcode, so a file mpv can't decode on its own won't play here even if it would in Plex's official apps.

Once something's playing, i shows a poster/synopsis/rating/ director/progress overlay pulled from Plex's own metadata, plus a technical-details block (container, video/audio bitrate, every audio/subtitle track the file has). Resuming and reconnecting on a dropped connection work the same as any other on-demand source — with one Plex-specific twist: the first time you play something tvdinner has no local resume position for yet, it falls back to Plex's own reported progress instead, so picking up something you left partway through in Plex's official apps resumes from there too, not just from where tvdinner itself last left off.

Chapters

When the source file has real embedded chapters (e.g. a Blu-ray/DVD rip), they show as tick marks on the progress bar, and UP/DOWN preview the next/previous chapter instead of doing a plain seek — a small panel shows its thumbnail (Plex's own, when it generated one, or a frame grabbed on the fly otherwise) and title without seeking yet. Keep pressing UP/DOWN to move further through the list, ENTER to jump there immediately, ESC to cancel, or just stop pressing keys for a couple of seconds to jump there automatically. Turn this off with --no-chapter-skip to get mpv's plain 60-second seek instead.

Skip Intro/Credits and Up Next

When Plex's own intro/credits detection has run on the item's library (a Plex Pass feature — most libraries don't have this enabled, so don't be surprised if it never shows up), a small "Skip Intro"/"Skip Credits" prompt appears while playback is inside one of those windows, confirmed with j or ENTER (--no-skip-markers to turn it off).

When a TV episode plays through to a real end, an "Up Next" prompt offers the next episode with a cancellable countdown (ESC to cancel; --no-autoplay-next-episode to disable it entirely, --autoplay-countdown-seconds to change how long it waits).

Activity reporting

Playback is reported to Plex's server as a real session — the same timeline API Plex's own Web/mobile apps use — so what's playing via tvdinner shows up in Plex's own dashboard and in third-party tools like Tautulli, and Plex's watched status/resume position for the item gets updated too. On by default; --no-plex-activity turns it off (reading Plex's own watched/resume status is unaffected either way).

Theme music

Browsing a show plays a short loop of its theme music, the same ambience the official Plex clients add to a show's library page — starts after a brief pause on a show (so it doesn't fire while quickly scrolling past it) and fades out on navigating away or picking something to actually watch, via a second, fully separate audio-only mpv instance so it never interferes with anything actually playing. On by default; --no-plex-theme-music to turn it off.

Leaving/stopping

Unlike every other source, ESC/GO_BACK and BS behave specially in a Plex session: with nothing open (just watching), GO_BACK (and BS) stop the current item and drop you back into the library browser exactly where you left off, rather than quitting tvdinner outright — there's always a browser to fall back into here, so "stop" means "stop this and pick something else." See the Keybindings Reference for the full picture.

Credentials

Like the Xtream Codes/Stalker Portal cases, a plex:// URL's token is stored as plain text wherever the source URL itself is stored (a saved bookmark's bookmarks.json, backup archives); it's shown redacted (first four characters kept, the rest masked) in the log file.

Everything else

Clone this wiki locally