#!/bin/sh # yt-dlp run from a SOURCE tree — the image's hook for substituting your own # yt-dlp (a patched checkout) without rebuilding the image. # # YTDLP_BIN=/usr/local/bin/yt-dlp-from-source (.env) # docker compose -f docker-compose.yml -f docker-compose.ytdlp.yml up -d # # docker-compose.ytdlp.yml mounts YTDLP_SOURCE_HOST_DIR (the checkout: the # directory that holds the `yt_dlp/` package) read-only at /opt/yt-dlp-src. # YTDLP_SOURCE_DIR moves that mount point. The python is the image's, with # yt-dlp's optional modules installed beside it (the Dockerfile's apt line). # # Linked into /usr/local/bin by the Dockerfile; RUNNING_IN_DOCKER.md, # "Substituting yt-dlp". src="${YTDLP_SOURCE_DIR:-/opt/yt-dlp-src}" if [ ! -f "${src}/yt_dlp/__init__.py" ]; then echo "yt-dlp-from-source: no yt_dlp package in ${src} — mount a yt-dlp checkout there (docker-compose.ytdlp.yml, YTDLP_SOURCE_HOST_DIR)" >&2 exit 127 fi PYTHONPATH="${src}${PYTHONPATH:+:${PYTHONPATH}}" exec python3 -m yt_dlp "$@"