Maubot plugin for the homelab media stack (Seerr/Emby/Sonarr/Radarr/NZBGet/qBt)
Find a file
Maddox e042b325b5 v0.5.0: Lidarr music search + add
- LidarrClient (api/v1) with lookup, profile/folder discovery, and
  add_artist
- !media music <query> — MusicBrainz lookup via Lidarr, numbered list
  cached per (room, sender)
- !media music add <query|N> — POST /api/v1/artist with profile/folder
  defaults (auto-picks first if not set in config). Carries through
  images/genres/links from the lookup result and kicks off a search
  for missing albums by default.
- New config block 'lidarr' with optional quality_profile_id /
  metadata_profile_id / root_folder_path overrides.
2026-04-29 07:03:13 -04:00
media_bot v0.5.0: Lidarr music search + add 2026-04-29 07:03:13 -04:00
.gitignore Initial commit: media bot v0.1.0 2026-04-28 08:22:38 -04:00
base-config.yaml v0.5.0: Lidarr music search + add 2026-04-29 07:03:13 -04:00
LICENSE Initial commit: media bot v0.1.0 2026-04-28 08:22:38 -04:00
maubot.yaml v0.5.0: Lidarr music search + add 2026-04-29 07:03:13 -04:00
README.md Initial commit: media bot v0.1.0 2026-04-28 08:22:38 -04:00

maubot-media

Maubot plugin: Matrix bot for the homelab media stack — Seerr, Emby, Sonarr, Radarr, NZBGet, qBittorrent.

Commands

!media help                       # command list

# Search & request (Seerr)
!media search <query>             # top results across movies + tv
!media request <query>            # request top hit
!media request <query> --tv       # force TV match
!media request <query> --movie    # force movie match
!media requests                   # your pending/processing requests
!media trending                   # what's trending

# Library & playback (Emby)
!media nowplaying                 # active sessions
!media recent [movies|tv]         # recently added (default: both)
!media watched                    # what you recently finished

# Downloads (Sonarr/Radarr/NZBGet/qBittorrent)
!media queue                      # combined Sonarr + Radarr queue
!media activity                   # NZBGet + qBt — current downloads
!media upcoming                   # Sonarr calendar, next 7 days
!media missing                    # Sonarr wanted/missing

How it works

The plugin runs in maubot on im (Hetzner) and calls each service over Tailscale:

Service URL
Seerr http://192.168.1.80:5056
Sonarr http://192.168.1.80:8989
Radarr http://192.168.1.80:7878
Emby http://192.168.1.120:8096/emby
NZBGet http://192.168.1.122:6789
qBittorrent http://192.168.1.122:8082

Each Matrix sender is mapped to per-service user IDs via plugin config (Seerr user ID, Emby user ID). Senders not in the user_map are rejected.

Build

cd ~/maubot-media
zip -rq com.3ddbrewery.media-v0.1.0.mbp maubot.yaml base-config.yaml media_bot/ README.md -x '*/__pycache__/*'

Upload via the maubot web UI at https://matrix.fails.me/_matrix/maubot, or use the upload curl flow documented in docs/media-bot.md.

Config

See base-config.yaml. After upload, set real values via the maubot UI's instance config tab.