Issue #2. Search/request now work without Seerr — when seerr.url/api_key are left as placeholders the bot falls back to direct Sonarr/Radarr lookup + add (mirrors how Lidarr music already works). Numbered selection keeps working across both sources via a _source discriminator stamped onto each result. !media requests / !media trending now print a friendly hint when Seerr is absent. base-config.yaml no longer ships any homelab-specific URLs, MXIDs, or Emby UIDs — admin_users defaults to [], user_map to {}, and every service URL uses a docker-hostname placeholder. New per-service config keys (quality_profile_id, root_folder_path, monitor, search_on_add, language_profile_id, minimum_availability) let operators pin Sonarr/ Radarr defaults the same way Lidarr already could; null = auto-pick the first profile/folder. README rewritten as a self-contained setup guide: requirements, build, upload, instance config (Required vs Optional with the Seerr fallback called out), webhook setup, fork notes.
113 lines
3.6 KiB
YAML
113 lines
3.6 KiB
YAML
# Media bot configuration
|
|
#
|
|
# After uploading the plugin, set real values via the maubot UI's
|
|
# "instance config" tab. Anything left at the placeholder values below
|
|
# disables the related feature.
|
|
|
|
http_timeout: 15
|
|
default_results: 5
|
|
|
|
# Inline poster art on `!media request` confirmations and `!media random` picks.
|
|
posters_enabled: true
|
|
|
|
# Matrix users allowed to approve/decline Seerr requests via 👍/👎 reactions.
|
|
admin_users: []
|
|
|
|
# Where to post Seerr/Sonarr webhook notifications and the daily digest.
|
|
# Must be a room the bot has joined. Leave empty to disable.
|
|
notifications_room: ""
|
|
|
|
# Shared secret Seerr must send as `Authorization: Bearer <secret>` header
|
|
# when calling the seerr-webhook endpoint. Generate with `openssl rand -hex 32`.
|
|
# Empty = no auth check (NOT recommended).
|
|
seerr_webhook_secret: ""
|
|
|
|
# Sonarr → Matrix subscription notifications.
|
|
# Configure Sonarr → Settings → Connect → Webhook with URL
|
|
# https://<your-maubot>/_matrix/maubot/plugin/<instance>/sonarr-webhook
|
|
# and Headers: `Authorization: Bearer <secret>`. Triggers on Download events.
|
|
sonarr_webhook_secret: ""
|
|
|
|
# Daily digest — fires once a day in `notifications_room`.
|
|
digest_enabled: true
|
|
digest_hour: 8 # local hour, 0-23
|
|
|
|
# Optional Sunday recap pulled from an ntfy topic (e.g. an external cleanup job
|
|
# posts its summary there). Leave ntfy_url empty to skip.
|
|
ntfy_url: ""
|
|
emby_cleaner_topic: "emby-cleaner"
|
|
|
|
# --- Service endpoints ---
|
|
#
|
|
# Seerr is OPTIONAL. If url/api_key are left as placeholders, `!media search`
|
|
# and `!media request` route directly to Sonarr (TV) and Radarr (movies)
|
|
# instead. The `!media requests` and `!media trending` commands require Seerr
|
|
# and will return a hint when it isn't configured.
|
|
seerr:
|
|
url: ""
|
|
api_key: ""
|
|
|
|
# Sonarr / Radarr / Lidarr — defaults below auto-pick the first quality
|
|
# profile + root folder Lidarr/Sonarr/Radarr report. Override here to pin
|
|
# specific ones.
|
|
sonarr:
|
|
url: http://sonarr:8989
|
|
api_key: CHANGEME
|
|
quality_profile_id: null # auto-pick first if null
|
|
language_profile_id: null # auto-pick first; Sonarr v3 only (v4 ignores)
|
|
root_folder_path: null # e.g. "/tv"
|
|
monitor: "all" # all|future|missing|existing|firstSeason|latestSeason|none
|
|
search_on_add: true
|
|
|
|
radarr:
|
|
url: http://radarr:7878
|
|
api_key: CHANGEME
|
|
quality_profile_id: null
|
|
root_folder_path: null # e.g. "/movies"
|
|
monitor: "movieOnly"
|
|
minimum_availability: "released" # announced|inCinemas|released
|
|
search_on_add: true
|
|
|
|
# Lidarr — music. API v1 (different from Sonarr/Radarr v3).
|
|
lidarr:
|
|
url: http://lidarr:8686
|
|
api_key: CHANGEME
|
|
quality_profile_id: null
|
|
metadata_profile_id: null
|
|
root_folder_path: null # e.g. "/music"
|
|
monitor: "all"
|
|
search_on_add: true
|
|
|
|
emby:
|
|
url: http://emby:8096/emby
|
|
api_key: CHANGEME
|
|
|
|
nzbget:
|
|
url: http://nzbget:6789
|
|
username: nzbget
|
|
password: CHANGEME
|
|
|
|
qbittorrent:
|
|
url: http://qbittorrent:8080
|
|
username: admin
|
|
password: CHANGEME
|
|
|
|
# Map Matrix user IDs to per-service user identifiers.
|
|
# Senders not in this map get an "unauthorized" reply.
|
|
#
|
|
# Per-user fields:
|
|
# seerr_user_id: int — required for `!media request` when Seerr is enabled
|
|
# emby_user_id: str — required for Emby commands (recent/watched/etc)
|
|
#
|
|
# Optional per-user defaults:
|
|
# default_media_type: "movie" | "tv" — used by `!media request <q>` when no
|
|
# --tv/--movie flag is given
|
|
# result_count: int — overrides default_results above
|
|
#
|
|
# Example (uncomment and edit):
|
|
# user_map:
|
|
# "@alice:example.com":
|
|
# seerr_user_id: 1
|
|
# emby_user_id: "abc123def456"
|
|
# default_media_type: "movie"
|
|
user_map: {}
|