From 25537692c80a176183251694a123f1631c64334f Mon Sep 17 00:00:00 2001 From: BadStorm Developer Date: Fri, 21 Aug 2026 17:04:49 +0200 Subject: [PATCH] fix(somedl): install yt-dlp nightly to avoid YouTube 403 errors --- containers/somedl/Containerfile | 3 ++- containers/somedl/entrypoint.sh | 15 ++++++++++++++- containers/somedl/somedl.README | 22 ++++++++++++++++++++++ containers/somedl/somedl.container | 4 ++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/containers/somedl/Containerfile b/containers/somedl/Containerfile index 092cfbc..c580be3 100644 --- a/containers/somedl/Containerfile +++ b/containers/somedl/Containerfile @@ -21,7 +21,8 @@ RUN curl -fsSL https://deno.land/install.sh | sh ENV PATH="/root/.deno/bin:${PATH}" # Installazione SomeDL -RUN pip install --no-cache-dir somedl +RUN pip install --no-cache-dir somedl && \ + python -m pip install --no-cache-dir -U --pre "yt-dlp[default]" # Entrypoint: genera la config al primo avvio e lancia la WebUI COPY entrypoint.sh /app/entrypoint.sh diff --git a/containers/somedl/entrypoint.sh b/containers/somedl/entrypoint.sh index 64030cd..1d78643 100644 --- a/containers/somedl/entrypoint.sh +++ b/containers/somedl/entrypoint.sh @@ -14,5 +14,18 @@ if [ ! -f "$CONFIG_FILE" ]; then sed -i 's|^open_browser = true|open_browser = false|' "$CONFIG_FILE" fi +# `SOMEDL_COOKIES` deve essere un percorso visibile *nel container* (ad esempio +# un file presente nel volume di configurazione). L'opzione viene aggiunta solo +# quando il file esiste, così il container resta utilizzabile senza cookie. +SOMEDL_ARGS=() +if [ -n "${SOMEDL_COOKIES:-}" ]; then + if [ -r "$SOMEDL_COOKIES" ]; then + SOMEDL_ARGS+=(--cookies "$SOMEDL_COOKIES") + else + echo "[entrypoint] Avviso: file cookie non leggibile: $SOMEDL_COOKIES" >&2 + fi +fi + # Avvia la WebUI -exec somedl web --no-browser --host "${SOMEDL_HOST:-0.0.0.0}" --port "${SOMEDL_PORT:-5000}" +exec somedl "${SOMEDL_ARGS[@]}" web --no-browser \ + --host "${SOMEDL_HOST:-0.0.0.0}" --port "${SOMEDL_PORT:-5000}" diff --git a/containers/somedl/somedl.README b/containers/somedl/somedl.README index ee06727..66e9982 100644 --- a/containers/somedl/somedl.README +++ b/containers/somedl/somedl.README @@ -23,6 +23,17 @@ mkdir -p /srv/containers/somedl/config /srv/containers/somedl/downloads La directory `config` può restare vuota: il file `somedl_config.toml` viene generato automaticamente dall'entrypoint al primo avvio. +Per usare cookie esportati da un account YouTube verificato per i contenuti +age-restricted, salvare `cookies.txt` nella directory `config` e aggiungere al +quadlet (il percorso è quello visto dal container): + +```ini +Environment=SOMEDL_COOKIES=/root/.config/SomeDL/cookies.txt +``` + +Il file viene passato automaticamente a SomeDL come `--cookies`. I cookie sono +credenziali sensibili: proteggerne i permessi e usarli solo quando necessario. + ### 2. Copiare il file quadlet ```bash @@ -62,6 +73,9 @@ podman exec somedl somedl -f flac "Daft Punk - One More Time" # Piu' input in un colpo solo podman exec somedl somedl "Artist - Song 1" "Artist - Song 2" + +# Cookie per contenuti age-restricted (percorso nel container) +podman exec somedl somedl --cookies /root/.config/SomeDL/cookies.txt "Artist - Song" ``` ### Visualizzare la configurazione corrente @@ -81,6 +95,9 @@ podman logs somedl # Aggiornare l'immagine podman build -t localhost/somedl:latest . +# Ricreare il container per usare la nuova immagine +systemctl --user stop somedl +podman rm somedl systemctl --user restart somedl # Rimuovere il container @@ -95,9 +112,14 @@ podman rm somedl | `/srv/containers/somedl/config/` | `/root/.config/SomeDL/` | Config (`somedl_config.toml`, generata al primo avvio) | | `/srv/containers/somedl/downloads/` | `/app/downloads/` | Brani scaricati | +`SOMEDL_COOKIES` è opzionale e deve indicare un percorso interno al container; +non viene creato alcun volume aggiuntivo. + ## Note - ffmpeg (richiesto da yt-dlp) e Deno (raccomandato da yt-dlp) sono installati nell'immagine +- `yt-dlp` viene installato nella versione nightly per ridurre i problemi di download + causati da `HTTP Error: 403 Forbidden` - Il formato predefinito è MP3; formato, cartella e template di output si cambiano nel file di config o dalla WebUI - Serve connessione internet per cercare e scaricare i brani diff --git a/containers/somedl/somedl.container b/containers/somedl/somedl.container index 43f9ac1..640ea12 100644 --- a/containers/somedl/somedl.container +++ b/containers/somedl/somedl.container @@ -16,6 +16,10 @@ PublishPort=5000:5000 Volume=/srv/containers/somedl/config:/root/.config/SomeDL Volume=/srv/containers/somedl/downloads:/app/downloads +# Opzionale: percorso del file cookies.txt già visibile nel container. +# Esempio: Environment=SOMEDL_COOKIES=/root/.config/SomeDL/cookies.txt +Environment=SOMEDL_COOKIES= + [Service] Restart=on-failure TimeoutStartSec=5m