jellyfin support #3

Closed
opened 2026-05-03 14:47:02 -04:00 by maddox · 2 comments
Owner

Can you add support for jellyfin?

Can you add support for jellyfin?
Collaborator

v0.6.1 deployed (commit f8f89b7, plugin live in maubot — instance enabled+started).

Heads-up before the substantive answer: the bot was already 99% Jellyfin-compatible. I audited every Emby endpoint we hit:

  • /System/Info/Public
  • /Sessions
  • /Users/{id}/Items/Latest
  • /Users/{id}/Items (with the IncludeItemTypes/Recursive/Filters/SortBy/SortOrder/Limit/Fields params)
  • /Users/{id}/Items/Resume
  • /Items/{id}/Images/Primary

…all of which are byte-compatible with Jellyfin. The ?api_key= auth scheme works on both. So no client branching was needed — the work was about clarity, not capability.

Changes:

  • New type: emby|jellyfin field inside the emby: config block (defaults to emby for backward compat, so existing deployments don't change).
  • New _media_label() helper that sources the label from config and is threaded through:
    • !media health server line
    • !media nowplaying header + empty-state
    • !media help section header + the health command's service summary
    • Daily digest's not yet in line
  • README: explicit Jellyfin block in the Emby/Jellyfin section, with a note that the URL should NOT include the /emby suffix when pointing at Jellyfin.

For a friend running Jellyfin:

emby:
  type: jellyfin
  url: http://<jellyfin-host>:8096
  api_key: <jellyfin-api-key>

Leaving open for your sign-off.

v0.6.1 deployed (commit `f8f89b7`, plugin live in maubot — instance enabled+started). **Heads-up before the substantive answer:** the bot was already 99% Jellyfin-compatible. I audited every Emby endpoint we hit: - `/System/Info/Public` - `/Sessions` - `/Users/{id}/Items/Latest` - `/Users/{id}/Items` (with the `IncludeItemTypes`/`Recursive`/`Filters`/`SortBy`/`SortOrder`/`Limit`/`Fields` params) - `/Users/{id}/Items/Resume` - `/Items/{id}/Images/Primary` …all of which are byte-compatible with Jellyfin. The `?api_key=` auth scheme works on both. So no client branching was needed — the work was about clarity, not capability. **Changes:** - New `type: emby|jellyfin` field inside the `emby:` config block (defaults to `emby` for backward compat, so existing deployments don't change). - New `_media_label()` helper that sources the label from config and is threaded through: - `!media health` server line - `!media nowplaying` header + empty-state - `!media help` section header + the health command's service summary - Daily digest's *not yet in <server>* line - README: explicit Jellyfin block in the *Emby/Jellyfin* section, with a note that the URL should NOT include the `/emby` suffix when pointing at Jellyfin. **For a friend running Jellyfin:** ```yaml emby: type: jellyfin url: http://<jellyfin-host>:8096 api_key: <jellyfin-api-key> ``` Leaving open for your sign-off.
Collaborator

Re-verified the v0.6.1 deliverables on main (HEAD 87eef44):

  • _media_label() threaded through 11 user-facing strings: !media health, !media nowplaying (header + empty), !media help (section header + service summary), digest's not yet in line, and Emby/Jellyfin error messages
  • emby.type: emby|jellyfin documented in base-config.yaml with a comment explaining the API surfaces are identical
  • README has a dedicated Lidarr / Emby (or Jellyfin) section with the type: jellyfin + url: http://<host>:8096 (no /emby suffix) example

Closing. Reopen if a friend tries it on Jellyfin and hits anything unexpected.

Re-verified the v0.6.1 deliverables on `main` (HEAD `87eef44`): - `_media_label()` threaded through 11 user-facing strings: `!media health`, `!media nowplaying` (header + empty), `!media help` (section header + service summary), digest's *not yet in <server>* line, and Emby/Jellyfin error messages - `emby.type: emby|jellyfin` documented in `base-config.yaml` with a comment explaining the API surfaces are identical - README has a dedicated *Lidarr / Emby (or Jellyfin)* section with the `type: jellyfin` + `url: http://<host>:8096 (no /emby suffix)` example Closing. Reopen if a friend tries it on Jellyfin and hits anything unexpected.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maddox/maubot-media#3
No description provided.