diff --git a/Configuration.md b/Configuration.md index 15b8e7b..39fffb3 100644 --- a/Configuration.md +++ b/Configuration.md @@ -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):