Skip to content
All work

library

dart_jellyfin & dart_plex

Two pure-Dart clients that cover libraries, playlists, audio streaming, search and playback reporting through typed objects, and handle sign-in and session lifecycle for you. Built on the servers' own API contracts and tested against real servers.

GitHub stars
0
pub.dev likes
5
pub points
160/160
Downloads /30d
270
dart_jellyfin logo

Overview

Both packages have the same structure: a client object (JellyfinClient, PlexClient) holds identity, server and token, and typed sub-APIs are accessed through it.

dart_jellyfin

  • Built on the official OpenAPI spec: endpoint names, field names and casing match api.jellyfin.org.
  • Typed DTOs: every response is a typed object that also keeps its .raw map, so fields added by newer servers are kept.
  • Both auth flows: authenticateByName() and the Quick Connect link flow.
  • Synced lyrics: parsed lines with tick-to-ms helpers and .toLrc() output.

dart_plex

  • plex.tv sign-in: legacy credentials or the official 4-character PIN flow at plex.tv/link.
  • Server discovery: owned and shared servers with connection candidates; bestConnection() picks local first, then HTTPS, then relay.
  • Streaming URLs: universalAudioUrl() builds HLS or DASH manifests, directFileUrl() the zero-transcode original.
  • Semantic errors: every failure is a PlexException you can branch on, instead of raw network errors.

Both are pure Dart (no native plugin, no Flutter dependency) and run anywhere Dart does.

Next project

mpv_audio_kit

Audio engine for Flutter and Dart, built on mpv 0.41.