git: 9854c15ac396 - main - www/py-yt-dlp-devel: New port: Program for downloading videos from various platforms (devel files)

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Thu, 21 Dec 2023 06:02:59 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9854c15ac39641f99d498dd5c5b876a8987b5e28

commit 9854c15ac39641f99d498dd5c5b876a8987b5e28
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-12-21 06:01:16 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-12-21 06:02:55 +0000

    www/py-yt-dlp-devel: New port: Program for downloading videos from various platforms (devel files)
    
    PR:             275325
---
 www/Makefile                                      |    1 +
 www/py-yt-dlp-devel/Makefile                      |   56 +
 www/py-yt-dlp-devel/distinfo                      |    3 +
 www/py-yt-dlp-devel/files/patch-Makefile          |   16 +
 www/py-yt-dlp-devel/files/patch-yt__dlp_update.py |   22 +
 www/py-yt-dlp-devel/pkg-descr                     |    4 +
 www/py-yt-dlp-devel/pkg-plist                     | 1150 +++++++++++++++++++++
 7 files changed, 1252 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index fa26921d973b..8e1f9bb3c925 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1881,6 +1881,7 @@
     SUBDIR += py-xandikos
     SUBDIR += py-xyzservices
     SUBDIR += py-yarl
+    SUBDIR += py-yt-dlp-devel
     SUBDIR += pydio-cells
     SUBDIR += qdecoder
     SUBDIR += qhttpengine
diff --git a/www/py-yt-dlp-devel/Makefile b/www/py-yt-dlp-devel/Makefile
new file mode 100644
index 000000000000..eecbb3d66606
--- /dev/null
+++ b/www/py-yt-dlp-devel/Makefile
@@ -0,0 +1,56 @@
+PORTNAME=	yt-dlp
+DISTVERSION=	2023.11.16
+CATEGORIES=	www
+MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/${DISTVERSION}/
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX=	-devel
+DISTNAME=	${PORTNAME}
+DIST_SUBDIR=	${PORTNAME}/${DISTVERSION}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Program for downloading videos from various platforms (devel files)
+WWW=		https://github.com/yt-dlp/yt-dlp
+
+LICENSE=	UNLICENSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}brotli>0:archivers/py-brotli@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}certifi>0:security/py-certifi@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mutagen>0:audio/py-mutagen@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pycryptodomex>0:security/py-pycryptodomex@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>=2.31.0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}urllib3>=1.26.17:net/py-urllib3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}websockets>0:devel/py-websockets@${PY_FLAVOR}
+
+USES=		gmake python shebangfix
+USE_PYTHON=	concurrent flavors
+
+SHEBANG_GLOB=	*.py
+
+NO_BUILD=	yes
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=			FFMPEG RTMPDUMP SECRETSTORAGE
+OPTIONS_DEFAULT=		FFMPEG RTMPDUMP
+OPTIONS_SUB=			yes
+
+FFMPEG_RUN_DEPENDS=		ffprobe:multimedia/ffmpeg
+
+RTMPDUMP_DESC=			Use rtmpdump to download rtmp video streams
+RTMPDUMP_RUN_DEPENDS=		rtmpdump:multimedia/rtmpdump
+
+SECRETSTORAGE_DESC=		Build with ${PYTHON_PKGNAMEPREFIX}SecretStorage for secretstorage option
+SECRETSTORAGE_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}SecretStorage>0:security/py-SecretStorage@${PY_FLAVOR}
+SECRETSTORAGE_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}SecretStorage>0:security/py-SecretStorage@${PY_FLAVOR}
+
+do-install:
+	# copy files
+	cd ${WRKSRC} && \
+		${GMAKE} PYTHON_SITELIBDIR=${STAGEDIR}${PYTHON_SITELIBDIR} freebsd-install-all-files
+	# make the main file executable
+	${CHMOD} +x ${STAGEDIR}${PYTHON_SITELIBDIR}/yt_dlp/__main__.py
+	# create the symlink
+	${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/yt_dlp/__main__.py ${STAGEDIR}${PREFIX}/bin/yt-dlp-devel
+
+.include <bsd.port.mk>
diff --git a/www/py-yt-dlp-devel/distinfo b/www/py-yt-dlp-devel/distinfo
new file mode 100644
index 000000000000..352f1e9e9b65
--- /dev/null
+++ b/www/py-yt-dlp-devel/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1700102733
+SHA256 (yt-dlp/2023.11.16/yt-dlp.tar.gz) = aa7fb7e49b57b1b5ac439a72568575e4df904ffc30417e19e644990e7239ac53
+SIZE (yt-dlp/2023.11.16/yt-dlp.tar.gz) = 5568397
diff --git a/www/py-yt-dlp-devel/files/patch-Makefile b/www/py-yt-dlp-devel/files/patch-Makefile
new file mode 100644
index 000000000000..92240dc11624
--- /dev/null
+++ b/www/py-yt-dlp-devel/files/patch-Makefile
@@ -0,0 +1,16 @@
+--- Makefile.orig	2023-12-21 05:27:41 UTC
++++ Makefile
+@@ -90,6 +90,13 @@ yt-dlp: yt_dlp/*.py yt_dlp/*/*.py
+ 	rm yt-dlp.zip
+ 	chmod a+x yt-dlp
+ 
++freebsd-install-all-files:
++	mkdir -p $(PYTHON_SITELIBDIR)
++	for d in $(CODE_FOLDERS) ; do \
++	  mkdir -p $(PYTHON_SITELIBDIR)/$$d ;\
++	  cp -pPR $$d/*.py $(PYTHON_SITELIBDIR)/$$d/ ;\
++	done
++
+ README.md: yt_dlp/*.py yt_dlp/*/*.py devscripts/make_readme.py
+ 	COLUMNS=80 $(PYTHON) yt_dlp/__main__.py --ignore-config --help | $(PYTHON) devscripts/make_readme.py
+ 
diff --git a/www/py-yt-dlp-devel/files/patch-yt__dlp_update.py b/www/py-yt-dlp-devel/files/patch-yt__dlp_update.py
new file mode 100644
index 000000000000..bc649dd50a7b
--- /dev/null
+++ b/www/py-yt-dlp-devel/files/patch-yt__dlp_update.py
@@ -0,0 +1,22 @@
+- this patch prevents -U from updating yt-dlp - it makes it "unrecognized"
+
+--- yt_dlp/update.py.orig	2023-11-16 00:02:06 UTC
++++ yt_dlp/update.py
+@@ -73,7 +73,7 @@ def _get_variant_and_executable_path():
+ 
+     path = os.path.dirname(__file__)
+     if isinstance(__loader__, zipimporter):
+-        return 'zip', os.path.join(path, '..')
++        return 'unknown', os.path.join(path, '..')
+     elif (os.path.basename(sys.argv[0]) in ('__main__.py', '-m')
+           and os.path.exists(os.path.join(path, '../.git/HEAD'))):
+         return 'source', path
+@@ -114,7 +114,7 @@ _NON_UPDATEABLE_REASONS = {
+     **{variant: f'Auto-update is not supported for unpackaged {name} executable; Re-download the latest release'
+        for variant, name in {'win32_dir': 'Windows', 'darwin_dir': 'MacOS', 'linux_dir': 'Linux'}.items()},
+     'source': 'You cannot update when running from source code; Use git to pull the latest changes',
+-    'unknown': 'You installed yt-dlp with a package manager or setup.py; Use that to update',
++    'unknown': 'Please use the command \'pkg upgrade yt-dlp\' to upgrade.',
+     'other': 'You are using an unofficial build of yt-dlp; Build the executable again',
+ }
+ 
diff --git a/www/py-yt-dlp-devel/pkg-descr b/www/py-yt-dlp-devel/pkg-descr
new file mode 100644
index 000000000000..38c96a7e6fb7
--- /dev/null
+++ b/www/py-yt-dlp-devel/pkg-descr
@@ -0,0 +1,4 @@
+A command-line program to download videos from youtube.com and many other video
+platforms.
+
+This is a fork of youtube-dlc which is inturn a fork of youtube-dl.
diff --git a/www/py-yt-dlp-devel/pkg-plist b/www/py-yt-dlp-devel/pkg-plist
new file mode 100644
index 000000000000..3cba1651f904
--- /dev/null
+++ b/www/py-yt-dlp-devel/pkg-plist
@@ -0,0 +1,1150 @@
+bin/yt-dlp-devel
+%%PYTHON_SITELIBDIR%%/yt_dlp/YoutubeDL.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/__main__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/aes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/cache.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/casefold.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/_deprecated.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/_legacy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/compat_utils.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/functools.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/imghdr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/shutil.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/types.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/urllib/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/compat/urllib/request.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/cookies.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/dependencies/Cryptodome.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/dependencies/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/common.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/dash.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/external.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/f4m.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/fc2.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/fragment.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/hls.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/http.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/ism.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/mhtml.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/niconico.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/rtmp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/rtsp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/websocket.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/downloader/youtube_live_chat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/__init__.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/_extractors.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/abc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/abcnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/abcotvs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/abematv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/academicearth.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/acast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/acfun.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/adn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/adobeconnect.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/adobepass.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/adobetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/adultswim.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aenetworks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aeonco.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/afreecatv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/agora.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/airmozilla.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/airtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aitube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aliexpress.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aljazeera.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/allocine.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/alphaporno.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/alsace20tv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/alura.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/amara.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/amazon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/amazonminitv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/amcnetworks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/americastestkitchen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/amp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/anchorfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/angel.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/antenna.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/anvato.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aol.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/apa.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aparat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/appleconnect.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/applepodcasts.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/appletrailers.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/archiveorg.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/arcpublishing.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ard.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/arkena.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/arnes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/arte.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/atresplayer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/atscaleconf.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/atttechchannel.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/atvat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/audimedia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/audioboom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/audiodraft.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/audiomack.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/audius.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/awaan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/aws.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/axs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/azmedien.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/baidu.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/banbye.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bandaichannel.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bandcamp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bannedvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bbc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/beatbump.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/beatport.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/beeg.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/behindkink.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bellmedia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/berufetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bfi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bfmtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bibeltv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bigflix.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bigo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bild.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bilibili.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/biobiochiletv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/biqle.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bitchute.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bitwave.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/blackboardcollaborate.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bleacherreport.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/blerp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/blogger.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bloomberg.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bokecc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bongacams.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bostonglobe.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/box.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/boxcast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bpb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/br.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/brainpop.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bravotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/breakcom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/breitbart.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/brightcove.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/brilliantpala.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/bundesliga.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/businessinsider.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/buzzfeed.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/byutv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/c56.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cableav.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/callin.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/caltrans.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cam4.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/camdemy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/camfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cammodels.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/camsoda.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/camtasia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/camwithher.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/canal1.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/canalalpha.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/canalc2.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/canalplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/caracoltv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/carambatv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cartoonnetwork.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cbc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cbs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cbsinteractive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cbsnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cbssports.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ccc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ccma.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cctv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cda.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cellebrite.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ceskatelevize.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cgtn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/channel9.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/charlierose.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/chaturbate.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/chilloutzone.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/chingari.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/chirbit.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cinchcast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cinemax.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cinetecamilano.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cineverse.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ciscolive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ciscowebex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cjsw.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/clipchamp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cliphunter.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/clippit.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cliprs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/clipsyndicate.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/closertotruth.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cloudflarestream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cloudy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/clubic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/clyp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cmt.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cnbc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cnn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/comedycentral.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/common.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/commonmistakes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/commonprotocols.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/condenast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/contv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/corus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/coub.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cozytv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cpac.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cracked.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/crackle.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/craftsy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/crooksandliars.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/crowdbunker.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/crtvg.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/crunchyroll.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cspan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ctsnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ctv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ctvnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cultureunplugged.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/curiositystream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cwtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/cybrary.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dacast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/daftsex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dailymail.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dailymotion.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dailywire.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/damtomo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/daum.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/daystar.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dbtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dctp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/deezer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/defense.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/democracynow.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/detik.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/deuxm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dfb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dhm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/digg.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/digitalconcerthall.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/digiteka.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/discogs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/discovery.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/discoverygo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/disney.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dispeak.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dlf.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dlive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dotsub.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/douyutv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/drbonanza.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dreisat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/drooble.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dropbox.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dropout.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/drtuber.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/drtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dtube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/duboku.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dumpert.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dvtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/dw.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eagleplatform.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ebaumsworld.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ebay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/echomsk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/egghead.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ehow.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eighttracks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/einthusan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eitb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/elevensports.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ellentube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/elonet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/elpais.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eltrecetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/embedly.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/engadget.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/epicon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/epoch.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eporner.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/erocast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eroprofile.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ertgr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/escapist.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/espn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/esri.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ettutv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/europa.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/europeantour.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eurosport.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/euscreen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/expotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/expressen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/extractors.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/extremetube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/eyedotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/facebook.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fancode.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/faz.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fc2.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fczenit.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fifa.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/filmmodu.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/filmon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/filmweb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/firsttv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fivetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/flickr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/folketinget.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/footyroom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/formula1.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fourtube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fourzerostudio.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fox.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fox9.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/foxgay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/foxnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/foxsports.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fptplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/franceinter.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/francetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/freesound.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/freespeech.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/freetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/frontendmasters.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fujitv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/funimation.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/funk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/funker530.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fusion.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/fuyintv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gab.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gaia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gameinformer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gamejolt.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gamespot.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gamestar.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gaskrank.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gazeta.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gdcvault.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gedidigital.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/generic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/genericembeds.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/genius.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gettr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gfycat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/giantbomb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/giga.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gigya.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/glide.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/globalplayer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/globo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/glomex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gmanetwork.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/go.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/godtube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gofile.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/golem.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/goodgame.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/googledrive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/googlepodcasts.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/googlesearch.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/goplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gopro.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/goshgay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gotostage.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gputechconf.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/gronkh.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/groupon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/harpodeon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hbo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hearthisat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/heise.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hellporno.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/helsinki.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hgtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hidive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/historicfilms.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hitbox.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hitrecord.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hketv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hollywoodreporter.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/holodex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hotnewhiphop.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hotstar.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/howcast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/howstuffworks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hrefli.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hrfensehen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hrti.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hse.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/huajiao.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/huffpost.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hungama.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/huya.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hypem.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hypergryph.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/hytale.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/icareus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ichinanalive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/idolplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ign.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/iheart.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/iltalehti.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/imdb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/imggaming.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/imgur.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ina.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/inc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/indavideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/infoq.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/instagram.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/internazionale.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/internetvideoarchive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/iprima.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/iqiyi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/islamchannel.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/israelnationalnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/itprotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/itv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ivi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ivideon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/iwara.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ixigua.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/izlesene.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jable.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jamendo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/japandiet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jeuxvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jiosaavn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jixie.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/joj.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jove.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jstream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jtbc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/jwplatform.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kakao.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kaltura.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kanal2.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kankanews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/karaoketv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/karrierevideos.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/keezmovies.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kelbyone.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/khanacademy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kick.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kicker.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kickstarter.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kinja.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kinopoisk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kommunetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kompas.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/konserthusetplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/koo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/krasview.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kth.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ku6.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kusi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/kuwo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/la7.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/laola1tv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lastfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/laxarxames.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lazy_extractors.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lbry.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lci.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lcp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lecture2go.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lecturio.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/leeco.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lefigaro.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lego.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lemonde.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lenta.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/libraryofcongress.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/libsyn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lifenews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/likee.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/limelight.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/linkedin.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/linuxacademy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/liputan6.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/listennotes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/litv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/livejournal.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/livestream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/livestreamfails.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lnkgo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/localnews8.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lovehomeporn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lrt.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lumni.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/lynda.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/m6.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/magellantv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/magentamusik360.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mailru.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mainstreaming.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/malltv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mangomolo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/manoto.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/manyvids.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/maoritv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/markiza.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/massengeschmacktv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/masters.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/matchtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mbn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mdr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/medaltv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediaite.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediaklikk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/medialaan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediaset.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediasite.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediastream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mediaworksnz.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/medici.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/megaphone.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/megatvcom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/meipai.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/melonvod.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/meta.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/metacafe.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/metacritic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mgoon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mgtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/miaopai.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/microsoftembed.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/microsoftstream.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/microsoftvirtualacademy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mildom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/minds.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ministrygrid.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/minoto.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/miomio.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mirrativ.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mirrorcouk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mit.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mitele.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mixch.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mixcloud.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mlb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mlssoccer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mnet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mocha.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/moevideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mofosex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mojvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/monstercat.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/morningstar.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/motherless.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/motorsport.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/movieclips.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/moviepilot.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/moview.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/moviezine.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/movingimage.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/msn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/muenchentv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/murrtube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/museai.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/musescore.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/musicdex.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mwave.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mxplayer.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mychannels.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/myspace.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/myspass.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/myvi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/myvideoge.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/myvidster.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/mzaalo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/n1.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nate.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nationalgeographic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/naver.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nba.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nbc.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ndr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ndtv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nebula.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nekohacker.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nerdcubed.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/neteasemusic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/netverse.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/netzkino.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/newgrounds.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/newspicks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/newstube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/newsy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nextmedia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nexx.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nfb.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nfhsnetwork.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nfl.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nhk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nhl.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nick.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/niconico.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/niconicochannelplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ninecninemedia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ninegag.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ninenow.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nintendo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nitter.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nobelprize.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/noice.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nonktube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/noodlemagazine.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/noovo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/normalboots.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nosnl.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nosvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nova.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/novaplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nowness.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/noz.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/npo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/npr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nrk.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nrl.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ntvcojp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ntvde.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ntvru.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nubilesporn.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nuevo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nuvid.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nytimes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nzherald.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nzonscreen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/nzz.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/odatv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/odkmedia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/odnoklassniki.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/oftv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/oktoberfesttv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/olympics.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/on24.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/once.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ondemandkorea.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/onefootball.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/onenewsnz.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/oneplace.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/onet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/onionstudios.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ooyala.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/opencast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/openload.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/openrec.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ora.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/orf.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/outsidetv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/owncloud.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/packtpub.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/palcomp3.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pandoratv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/panopto.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/paramountplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/parler.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/parlview.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/patreon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pbs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pearvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/peekvids.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/peertube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/peertv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/peloton.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/people.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/performgroup.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/periscope.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pgatour.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/philharmoniedeparis.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/phoenix.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/photobucket.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/piapro.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/piaulizaportal.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/picarto.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/piksel.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pinkbike.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pinterest.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pixivsketch.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pladform.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/planetmarathi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/platzi.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playplustv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/plays.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playstuff.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playsuisse.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playtvak.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playvid.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/playwire.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pluralsight.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/plutotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/podbayfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/podchaser.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/podomatic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pokemon.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pokergo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/polsatgo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/polskieradio.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/popcorntimes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/popcorntv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/porn91.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornbox.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/porncom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornez.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornflip.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornhd.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornhub.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornotube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornovoisines.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pornoxo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pr0gramm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/prankcast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/premiershiprugby.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/presstv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/projectveritas.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/prosiebensat1.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/prx.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/puhutv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/puls4.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/pyvideo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/qdance.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/qingting.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/qqmusic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/r7.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiko.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiobremen.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiocanada.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiocomercial.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiode.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiofrance.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiojavan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiokapital.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radiozet.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/radlive.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rai.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/raywenderlich.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rbgtum.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rbmaradio.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rcs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rcti.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rds.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/recurbate.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/redbee.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/redbulltv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/reddit.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/redgifs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/redtube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/regiotv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rentv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/restudy.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/reuters.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/reverbnation.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rheinmaintv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rice.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rmcdecouverte.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rockstargames.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rokfin.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/roosterteeth.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rottentomatoes.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rozhlas.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rte.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtl2.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtlnl.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtnews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtp.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtrfm.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rts.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtvcplay.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtve.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtvnh.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtvs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rtvslo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ruhd.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rule34video.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rumble.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rutube.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/rutv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ruutu.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/ruv.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/s4c.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/safari.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/saitosan.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/samplefocus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sapo.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/savefrom.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sbs.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sbscokr.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/screen9.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/screencast.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/screencastify.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/screencastomatic.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/scrippsnetworks.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/scrolller.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/scte.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/seeker.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/senalcolombia.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/senategov.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sendtonews.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/servus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sevenplus.py
+%%PYTHON_SITELIBDIR%%/yt_dlp/extractor/sexu.py
*** 337 LINES SKIPPED ***