docs: update Configuration wiki with M004 settings (media servers, keyword filters, output templates, content ratings, NFO, timezone, theme, RSS feed)
parent
697d74d7e8
commit
162bfb831e
1 changed files with 50 additions and 2 deletions
|
|
@ -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`.
|
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
|
## 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` |
|
| Check interval | `PUT /api/v1/system/settings` | `systemConfig.check_interval` |
|
||||||
| Concurrent downloads | `PUT /api/v1/system/settings` | `systemConfig.concurrent_downloads` |
|
| 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` |
|
| 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)
|
## Platform Settings (via API)
|
||||||
|
|
||||||
Per-platform defaults configured through `PUT /api/v1/platform-settings/:platform`:
|
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` |
|
| `defaultMonitoringMode` | Default mode for new channels | `all`, `future`, `existing`, `none` |
|
||||||
| `grabAllEnabled` | Enable back-catalog import | Collect endpoints |
|
| `grabAllEnabled` | Enable back-catalog import | Collect endpoints |
|
||||||
| `grabAllOrder` | Import order | `newest` or `oldest` first |
|
| `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 |
|
| `subtitleLanguages` | Default subtitle languages | Comma-separated codes |
|
||||||
| `defaultFormatProfileId` | Default quality profile | New downloads |
|
| `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 |
|
| `embedChapters` | boolean | Embed chapter markers |
|
||||||
| `embedThumbnail` | boolean | Embed thumbnail in metadata |
|
| `embedThumbnail` | boolean | Embed thumbnail in metadata |
|
||||||
| `sponsorBlockRemove` | string | Comma-separated SponsorBlock categories to auto-remove |
|
| `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`
|
**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)
|
## Notification Channels (via API)
|
||||||
|
|
||||||
Configured through `POST/PUT /api/v1/notification`:
|
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`.
|
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
|
## Docker Environment Defaults
|
||||||
|
|
||||||
When running in Docker (set automatically by the Dockerfile):
|
When running in Docker (set automatically by the Dockerfile):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue