docs: update Configuration wiki with M004 settings (media servers, keyword filters, output templates, content ratings, NFO, timezone, theme, RSS feed)

xpltd_admin 2026-04-04 02:08:13 -06:00
parent 697d74d7e8
commit 162bfb831e

@ -12,7 +12,7 @@
All configuration is managed through environment variables, parsed in `src/config/index.ts`. In development, use a `.env` file (loaded via dotenv). In Docker, set variables in `docker-compose.yml` or pass them with `-e`.
Some settings can also be changed at runtime via the API (`PUT /api/v1/system/settings`) and are persisted in the `systemConfig` database table.
Many settings can also be changed at runtime via the API (`PUT /api/v1/system/settings`) and are persisted in the `systemConfig` database table.
## Environment Variables
@ -66,8 +66,45 @@ These settings can be changed without restarting the application:
|---------|----------|-----------|
| Check interval | `PUT /api/v1/system/settings` | `systemConfig.check_interval` |
| Concurrent downloads | `PUT /api/v1/system/settings` | `systemConfig.concurrent_downloads` |
| Output path template | `PUT /api/v1/system/settings` | `systemConfig.app.output_template` |
| NFO generation enabled | `PUT /api/v1/system/settings` | `systemConfig.app.nfo_enabled` |
| Timezone | `PUT /api/v1/system/settings` | `systemConfig.app.timezone` |
| Theme (dark/light) | `PUT /api/v1/system/settings` | `systemConfig.app.theme` + localStorage |
| API key | `POST /api/v1/system/apikey/regenerate` | `systemConfig.api_key` |
## Media Server Settings (via API)
Configured through CRUD at `/api/v1/media-servers`:
| Setting | Description |
|---------|-------------|
| `name` | Display name for the server |
| `type` | `plex` or `jellyfin` |
| `url` | Server base URL (e.g., `http://192.168.1.100:32400`) |
| `token` | Authentication token (redacted in API responses) |
| `librarySection` | Library section ID for targeted scans (Plex section ID or Jellyfin library ID) |
| `enabled` | Enable/disable auto-scan triggers |
Action endpoints:
- `POST /api/v1/media-servers/:id/test` — Test connection to the media server
- `GET /api/v1/media-servers/:id/sections` — List available library sections (Plex only)
## Keyword Filters (via API)
Configured per-channel through `PUT /api/v1/channel/:id`:
| Field | Description |
|-------|-------------|
| `includeKeywords` | Pipe-separated patterns — only matching titles are kept |
| `excludeKeywords` | Pipe-separated patterns — matching titles are filtered out |
Three pattern types are supported:
- **Plain text** — case-insensitive substring match (e.g., `shorts`)
- **Glob**`*` wildcards, anchored to full title (e.g., `*tutorial*`)
- **Regex**`/pattern/` syntax, always case-insensitive (e.g., `/shorts|#shorts/`)
Filters are applied during scheduled scans after dedup but before DB insertion.
## Platform Settings (via API)
Per-platform defaults configured through `PUT /api/v1/platform-settings/:platform`:
@ -80,7 +117,7 @@ Per-platform defaults configured through `PUT /api/v1/platform-settings/:platfor
| `defaultMonitoringMode` | Default mode for new channels | `all`, `future`, `existing`, `none` |
| `grabAllEnabled` | Enable back-catalog import | Collect endpoints |
| `grabAllOrder` | Import order | `newest` or `oldest` first |
| `scanLimit` | Max items per scan | Monitoring checks |
| `scanLimit` | Max items per scan (default: 500) | Monitoring checks |
| `subtitleLanguages` | Default subtitle languages | Comma-separated codes |
| `defaultFormatProfileId` | Default quality profile | New downloads |
@ -99,9 +136,16 @@ Quality presets configured through `POST/PUT /api/v1/format-profile`:
| `embedChapters` | boolean | Embed chapter markers |
| `embedThumbnail` | boolean | Embed thumbnail in metadata |
| `sponsorBlockRemove` | string | Comma-separated SponsorBlock categories to auto-remove |
| `outputTemplate` | string | Per-profile output path template (e.g., `{platform}/{channel}/{year}/{title}.{ext}`) |
**Output Path Template Variables:** `{platform}`, `{channel}`, `{title}`, `{ext}`, `{year}`, `{month}`, `{day}`, `{contentType}`, `{id}`
**SponsorBlock categories:** `sponsor`, `selfpromo`, `interaction`, `intro`, `outro`, `preview`, `music_offtopic`, `filler`
## Content Ratings
Ratings can be set per-channel (default for all content) or per-item (overrides channel default). Available ratings: `TV-Y`, `TV-Y7`, `TV-G`, `TV-PG`, `TV-14`, `TV-MA`, `G`, `PG`, `PG-13`, `R`, `NC-17`, `NR`. Ratings are written into NFO sidecar files for media server library categorization.
## Notification Channels (via API)
Configured through `POST/PUT /api/v1/notification`:
@ -158,6 +202,10 @@ Configured through `POST/PUT /api/v1/notification`:
Each notification channel has event toggles: `onGrab`, `onDownload`, `onFailure`.
## RSS Feed
A podcast-compatible RSS 2.0 feed is available at `/api/v1/feed/rss` (public, no auth required). The feed includes all downloaded audio content with enclosure links to `/api/v1/media/:id/:filename` (also public). Subscribe in any podcast app to receive downloaded audio as episodes.
## Docker Environment Defaults
When running in Docker (set automatically by the Dockerfile):