Demote extractor_args to troubleshooting — yt-dlp defaults work out of the box

The 403 was a VPN IP issue, not a client selection issue. yt-dlp already
picks the right player clients (android_vr + web_safari). Moved
YTDLP__EXTRACTOR_ARGS out of 'Most Useful Settings' into a
'Troubleshooting: YouTube 403 Errors' section that explains the actual
common causes (VPN IPs, private content) before the escape hatch.
This commit is contained in:
xpltd 2026-03-21 22:36:18 -05:00
parent f5b7a8b9ff
commit bfc7eba03f
2 changed files with 6 additions and 17 deletions

View file

@ -54,7 +54,6 @@ These are the knobs most operators actually touch — all shown commented out in
| `MEDIARIP__DOWNLOADS__MAX_CONCURRENT` | `3` | Increase for faster connections, decrease on low-spec hardware |
| `MEDIARIP__PURGE__MAX_AGE_MINUTES` | `1440` | Raise for longer retention, or set `PURGE__ENABLED=false` to keep forever |
| `MEDIARIP__ADMIN__PASSWORD_HASH` | _(empty)_ | Pre-set to skip the first-run wizard (useful for automated deployments) |
| `MEDIARIP__YTDLP__EXTRACTOR_ARGS` | `{}` | Tune YouTube player client if downloads 403 (see [yt-dlp Tuning](#yt-dlp-tuning)) |
### All Settings
@ -127,25 +126,18 @@ docker run --rm python:3.12-slim python -c \
# MEDIARIP__ADMIN__PASSWORD_HASH=$2b$12$...your.hash...
```
### yt-dlp Tuning
### Troubleshooting: YouTube 403 Errors
If YouTube downloads fail with HTTP 403, try changing the player client:
YouTube downloads work out of the box — yt-dlp automatically selects the right player clients. If you do hit HTTP 403 errors, it's usually one of:
1. **VPN/datacenter IP** — YouTube blocks many VPN exit IPs. Run the container on your direct internet connection instead.
2. **Private/age-restricted content** — Upload a `cookies.txt` from a logged-in browser session via the UI.
3. **YouTube-side changes** — As a last resort, you can override yt-dlp's player client selection:
```bash
# Environment variable
MEDIARIP__YTDLP__EXTRACTOR_ARGS='{"youtube": {"player_client": ["web_safari"]}}'
```
```yaml
# Or in config.yaml
ytdlp:
extractor_args:
youtube:
player_client: ["web_safari", "android_vr"]
```
You can also upload a `cookies.txt` from a logged-in browser session via the UI for authenticated downloads.
## Custom Themes
1. Create a folder in your themes volume: `./themes/my-theme/`

View file

@ -31,9 +31,6 @@ services:
#
## Pre-set admin password (skip first-run wizard):
# - MEDIARIP__ADMIN__PASSWORD_HASH=$2b$12$...
#
## YouTube tuning — change player client if downloads fail:
# - MEDIARIP__YTDLP__EXTRACTOR_ARGS={"youtube":{"player_client":["web_safari"]}}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]