Add yt-dlp wrapper to keep it in sync with user installed yt-dlp. Ref #469
This commit is contained in:
parent
f140b598f9
commit
44fd225ab1
3 changed files with 55 additions and 10 deletions
12
Dockerfile
12
Dockerfile
|
|
@ -57,12 +57,10 @@ RUN mkdir /config /downloads && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime
|
||||||
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
|
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
|
||||||
dpkg-reconfigure --frontend=noninteractive locales && \
|
dpkg-reconfigure --frontend=noninteractive locales && \
|
||||||
update-locale LANG=en_US.UTF-8 \
|
update-locale LANG=en_US.UTF-8 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
mkdir -p /opt/bin && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY entrypoint.sh /
|
COPY entrypoint.sh /
|
||||||
|
COPY --chown=app:app yt-dlp /opt/bin/yt-dlp
|
||||||
RUN sed -i 's/\r$//g' /entrypoint.sh && chmod +x /entrypoint.sh
|
|
||||||
|
|
||||||
COPY --chown=app:app ./app /app/app
|
COPY --chown=app:app ./app /app/app
|
||||||
COPY --chown=app:app --from=node_builder /app/exported /app/ui/exported
|
COPY --chown=app:app --from=node_builder /app/exported /app/ui/exported
|
||||||
COPY --chown=app:app --from=python_builder /opt/python /opt/python
|
COPY --chown=app:app --from=python_builder /opt/python /opt/python
|
||||||
|
|
@ -72,13 +70,13 @@ COPY --from=ghcr.io/arabcoders/jellyfin-ffmpeg /usr/bin/ffprobe /usr/bin/ffprobe
|
||||||
COPY --from=denoland/deno:latest /usr/bin/deno /usr/bin/deno
|
COPY --from=denoland/deno:latest /usr/bin/deno /usr/bin/deno
|
||||||
COPY --chown=app:app ./healthcheck.sh /usr/local/bin/healthcheck
|
COPY --chown=app:app ./healthcheck.sh /usr/local/bin/healthcheck
|
||||||
|
|
||||||
ENV PATH="/opt/python/bin:$PATH"
|
ENV PATH="/opt/bin:/opt/python/bin:$PATH"
|
||||||
ENV LANG=en_US.UTF-8
|
ENV LANG=en_US.UTF-8
|
||||||
ENV LANGUAGE=en_US:en
|
ENV LANGUAGE=en_US:en
|
||||||
ENV LC_ALL=en_US.UTF-8
|
ENV LC_ALL=en_US.UTF-8
|
||||||
|
|
||||||
RUN chown -R app:app /config /downloads && \
|
RUN sed -i 's/\r$//g' /entrypoint.sh && chmod +x /entrypoint.sh && chown -R app:app /config /downloads && \
|
||||||
chmod +x /usr/local/bin/healthcheck /usr/bin/mp4box /usr/bin/ffmpeg /usr/bin/ffprobe /usr/bin/deno
|
chmod +x /usr/local/bin/healthcheck /usr/bin/mp4box /usr/bin/ffmpeg /usr/bin/ffprobe /usr/bin/deno /opt/bin/yt-dlp
|
||||||
|
|
||||||
VOLUME /config
|
VOLUME /config
|
||||||
VOLUME /downloads
|
VOLUME /downloads
|
||||||
|
|
|
||||||
|
|
@ -110,10 +110,13 @@ class PackageInstaller:
|
||||||
str(self.user_site),
|
str(self.user_site),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if "yt_dlp" == pkg:
|
||||||
|
pkg = "yt-dlp"
|
||||||
|
|
||||||
if version:
|
if version:
|
||||||
if "nightly" == version and pkg == "yt_dlp":
|
if "nightly" == version and pkg == "yt-dlp":
|
||||||
cmd.extend(["--pre", "yt-dlp[default]"])
|
cmd.extend(["--pre", "yt-dlp[default]"])
|
||||||
elif "master" == version and pkg == "yt_dlp":
|
elif "master" == version and pkg == "yt-dlp":
|
||||||
cmd.append("git+https://github.com/yt-dlp/yt-dlp.git@master")
|
cmd.append("git+https://github.com/yt-dlp/yt-dlp.git@master")
|
||||||
else:
|
else:
|
||||||
cmd.append(version if str(version).startswith("git+") else f"{pkg}=={version}")
|
cmd.append(version if str(version).startswith("git+") else f"{pkg}=={version}")
|
||||||
|
|
@ -179,7 +182,7 @@ class PackageInstaller:
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def out(self, out: bytes | str | None = None, err=bytes | str | None) -> None:
|
def out(self, out: bytes | str | None = None, err: bytes | str | None = None) -> None:
|
||||||
if out:
|
if out:
|
||||||
for line in (line.strip() for line in out.strip().splitlines() if line.strip()):
|
for line in (line.strip() for line in out.strip().splitlines() if line.strip()):
|
||||||
LOG.info(line.decode() if isinstance(line, bytes) else line)
|
LOG.info(line.decode() if isinstance(line, bytes) else line)
|
||||||
|
|
|
||||||
44
yt-dlp
Executable file
44
yt-dlp
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
###########
|
||||||
|
# Set PATH to include user installed packages
|
||||||
|
PY_BASE_VERSION=$(/opt/python/bin/python -V 2>&1 | awk '{print $2}' | cut -d. -f1,2)
|
||||||
|
|
||||||
|
CONFIG_PATH="${YTP_CONFIG_PATH:-/app/var/config}"
|
||||||
|
USER_SITE="${CONFIG_PATH}/python${PY_BASE_VERSION}-packages"
|
||||||
|
USER_SITE_BIN="${USER_SITE}/bin"
|
||||||
|
|
||||||
|
if [ -d "${USER_SITE_BIN}" ]; then
|
||||||
|
case ":${PATH}:" in
|
||||||
|
*:"${USER_SITE_BIN}":*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -n "${PATH}" ]; then
|
||||||
|
PATH="${USER_SITE_BIN}:${PATH}"
|
||||||
|
else
|
||||||
|
PATH="${USER_SITE_BIN}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "${USER_SITE}" ]; then
|
||||||
|
case ":${PYTHONPATH}:" in
|
||||||
|
*:"${USER_SITE}":*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -n "${PYTHONPATH}" ]; then
|
||||||
|
PYTHONPATH="${USER_SITE}:${PYTHONPATH}"
|
||||||
|
else
|
||||||
|
PYTHONPATH="${USER_SITE}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export PYTHONPATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute yt-dlp with passed arguments
|
||||||
|
exec /opt/python/bin/python -m yt_dlp "${@}"
|
||||||
Loading…
Reference in a new issue