Commit graph

7 commits

Author SHA1 Message Date
59b8b99076 v0.4.3: include emby-cleaner recap in Sunday digest
The cleaner runs Sunday 4:20 AM and pings ntfy. The Sunday digest now
pulls the last 12h of messages from the emby-cleaner topic and appends
them to the daily summary. Configurable via ntfy_url +
emby_cleaner_topic in base-config.yaml.

Also drop the zoneinfo dependency in favour of a manual EST/EDT offset
calc (the maubot container ships without tzdata).
2026-04-28 19:14:24 -04:00
7848d8e6ea v0.4.2: SQLite, subscriptions, Sonarr webhook, daily digest
- Enable maubot's bundled SQLite (database: true, webapp: true)
- Schema: subscriptions(mxid, sonarr_series_id, title, added_at) +
  digest_state for once-daily idempotency
- Commands: !media subscribe / unsubscribe / subscriptions / digest
- @web.post(/sonarr-webhook): on Download events, mention subscribers
  in notifications_room (Bearer auth via sonarr_webhook_secret)
- Daily digest loop: fires at digest_hour (Indianapolis), summarises
  Emby recently-added, NZBGet+qBt 24h completions, queue depth.
  Approximate EST/EDT calc since maubot container ships without tzdata.
2026-04-28 19:13:19 -04:00
c0417856a2 v0.3.2: percent-encode Seerr query strings
Seerr's URL validator rejects aiohttp's default '+' for spaces and
demands %20. Switch the Seerr client to RFC 3986-style encoding via
urllib.parse.quote(safe='') so multi-word searches work.

Reported: '!media search Sheep Detectives' → 400.
2026-04-28 18:49:26 -04:00
64b86c7c3f v0.3.1: enable plugin webapp + case-insensitive bearer
- Add webapp: true to maubot.yaml — without it, @web.post decorators
  are silently ignored and plugin webhook URLs return 404
- Match Authorization scheme case-insensitively (Seerr's UI lowercases
  'Bearer' on save)
2026-04-28 18:42:20 -04:00
e1a7aa7b5b v0.3.0: reactions, posters, Seerr webhook
- Admins can react 👍/ or 👎/ on a !media request to approve/decline
- Posters auto-attach to request confirmations and !media random picks
  (TMDB for Seerr items, Emby /Items/{id}/Images/Primary for library items)
- New @web.post(/seerr-webhook) handler — Seerr → Matrix room directly,
  replaces the Telegram bridge path
- New config: posters_enabled, admin_users, notifications_room,
  seerr_webhook_secret
2026-04-28 18:16:54 -04:00
ae624744e3 v0.2.0: discovery, downloads control, numbered selection
Emby:
- !media find <q> — search the existing library
- !media resume — continue-watching list (with progress %)
- !media random [movie|tv] — random unwatched pick

Sonarr/Radarr:
- !media health — active warnings on either arr

Downloads:
- !media speed — aggregate down/up across NZBGet + qBt
- !media completed — finished in the last 24h
- !media pause / !media unpause — global pause/resume

QoL:
- Numbered selection: !media search dune then !media request 2
- Optional per-user defaults: default_media_type, result_count
2026-04-28 17:57:50 -04:00
de153892cc Initial commit: media bot v0.1.0
Maubot plugin: Matrix companion for the homelab media stack.

Services wrapped:
- Seerr: search, request, requests, trending
- Emby: nowplaying, recent, watched
- Sonarr/Radarr: queue, upcoming, missing
- NZBGet/qBittorrent: activity

Each Matrix sender is mapped to per-service user IDs via plugin config;
unmapped senders are rejected. Replies are MXID-prefixed for shared rooms.
2026-04-28 08:22:38 -04:00