Download raw body.
[new] www/py-yt-dlp-ejs / [update] www/yt-dlp
On Wed, Nov 12, 2025 at 06:03:52PM +0000, Lucas Raab wrote:
> On Wed, Nov 12, 2025 at 06:00:35PM +0000, Lucas Raab wrote:
> > Hello,
> >
> > With the latest release of yt-dlp, YouTube support requires the use of a JS
> > runtime and an extra yt-dlp-ejs package. yt-dlp offers some packaging
> > suggestions on how to incorporate yt-dlp, yt-dlp-ejs, and the JS runtimes
> > here: https://github.com/yt-dlp/yt-dlp/issues/15012
> >
> > I've taken some of those suggestions, but I'm not suggesting the below are the
> > final options. Feedback is welcome.
> >
>
> > * None of the runtimes are in BUILD_DEPENDS as it's up to the user to choose
>
> err, I meant RUN_DEPENDS...
>
> > * The possibilities are mentioned in pkg/README (deno, node, quickjs)
> > * That being said, deno seems to be the fastest in my testing?
> > * The attached update to yt-dlp does include py-yt-dlp-ejs as a RUN_DEPENDS as
> > yt-dlp-ejs doesn't pull anything else in (bearing in mind the above caveat)
> > * A caveat if yt-dlp-ejs is in RUN_DEPENDS, future yt-dlp updates will
> > need to be kept in lockstep with yt-dlp-ejs versions.
> >
> > The patch is an ugly hack to get around whichever JS runtime from trying to
> > download packages and build the JS files themselves. Instead, I added a
> > post-extract step to manually create the dist dir and move the prebuilt JS
> > files to there. hatch seems happy enough after that to continue.
> >
> > Thoughts?
> >
> > Thanks,
> > Lucas
ping, diff and port reattached
diff /usr/ports
path + /usr/ports
commit - 5487f9a1b0a5c49f1a90a1e67b3f3a63c6f2552c
blob - 64d25b33ce5c0f70864fbadebfb612eec88017fe
file + www/yt-dlp/Makefile
--- www/yt-dlp/Makefile
+++ www/yt-dlp/Makefile
@@ -1,6 +1,6 @@
COMMENT = CLI program to download videos from YouTube and other sites
-VERSION = 2025.10.22
+VERSION = 2025.11.12
MODPY_DISTV = ${VERSION:S/.0/./g}
DISTNAME = yt-dlp-${VERSION}
@@ -27,7 +27,8 @@ RUN_DEPENDS = audio/py-mutagen \
devel/py-certifi \
graphics/ffmpeg \
security/py-cryptodomex \
- www/py-requests
+ www/py-requests \
+ www/py-yt-dlp-ejs
TEST_DEPENDS += devel/flake8 \
archivers/py-brotlicffi \
commit - 5487f9a1b0a5c49f1a90a1e67b3f3a63c6f2552c
blob - 4c1d567eda3237fe0d375bdd4eb3572b79b70787
file + www/yt-dlp/distinfo
--- www/yt-dlp/distinfo
+++ www/yt-dlp/distinfo
@@ -1,2 +1,2 @@
-SHA256 (yt-dlp-2025.10.22.tar.gz) = jtKXEXLL4SlSWDQenwRSen8nV4U4znDvTJ66uolmqWk=
-SIZE (yt-dlp-2025.10.22.tar.gz) = 6025669
+SHA256 (yt-dlp-2025.11.12.tar.gz) = Vh6tLimR8ReJ082fm1ou7iZBpYfiz8HuljHHwdhRwOw=
+SIZE (yt-dlp-2025.11.12.tar.gz) = 6139146
commit - 5487f9a1b0a5c49f1a90a1e67b3f3a63c6f2552c
blob - b3cfa4e8adf838e97444ea474816a1b8b25cefeb
file + www/yt-dlp/pkg/PLIST
--- www/yt-dlp/pkg/PLIST
+++ www/yt-dlp/pkg/PLIST
@@ -1154,6 +1154,8 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/extrac
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}musescore.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}musicdex.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}musicdex.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mux.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mux.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mx3.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mx3.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mxplayer.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -1170,6 +1172,8 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/extrac
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}mzaalo.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}n1.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}n1.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}nascar.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}nascar.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}nate.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}nate.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/${MODPY_PYCACHE}nationalgeographic.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -2664,6 +2668,7 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/extrac
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/museai.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/musescore.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/musicdex.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/mux.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/mx3.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/mxplayer.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/myspace.py
@@ -2672,6 +2677,7 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/extrac
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/myvidster.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/mzaalo.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/n1.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/nascar.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/nate.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/nationalgeographic.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/naver.py
@@ -3184,8 +3190,52 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/extrac
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/_search.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/_tab.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/_video.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/__init__.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}_director.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}_director.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}_registry.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}_registry.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}provider.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/${MODPY_PYCACHE}provider.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/__init__.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}bun.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}bun.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}deno.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}deno.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}ejs.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}ejs.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}node.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}node.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}quickjs.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/${MODPY_PYCACHE}quickjs.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/bun.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/deno.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/ejs.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/node.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/quickjs.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/__init__.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/${MODPY_PYCACHE}_info.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/${MODPY_PYCACHE}_info.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/_info.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.bun.lib.js
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.core.js
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.deno.lib.js
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_director.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/_registry.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/jsc/provider.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/pot/
-lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/pot/README.md
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/pot/__init__.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/pot/${MODPY_PYCACHE}/
lib/python${MODPY_VERSION}/site-packages/yt_dlp/extractor/youtube/pot/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -3309,6 +3359,8 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_deprecated.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_deprecated.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_jsruntime.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_jsruntime.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_legacy.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_legacy.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}_utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -3320,6 +3372,7 @@ lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}traversal.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/${MODPY_PYCACHE}traversal.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/_deprecated.py
+lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/_jsruntime.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/_legacy.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/_utils.py
lib/python${MODPY_VERSION}/site-packages/yt_dlp/utils/jslib/
[new] www/py-yt-dlp-ejs / [update] www/yt-dlp