commit 26cad2e
hovercats
·
2024-10-26 17:52:13 +0000 UTC
parent 10bf07a
yt-dlp: import from oasis
10 files changed,
+1343,
-0
+2,
-0
1@@ -73,6 +73,7 @@ subgen 'opus'
2 subgen 'pcre'
3 subgen 'pigz'
4 subgen 'pixman'
5+subgen 'python'
6 subgen 'qbe'
7 subgen 'quark'
8 subgen 'rc'
9@@ -107,5 +108,6 @@ subgen 'wld'
10 subgen 'wpa_supplicant'
11 subgen 'xkeyboard-config'
12 subgen 'xz'
13+subgen 'yt-dlp'
14 subgen 'zlib'
15 subgen 'zstd'
+2,
-0
1@@ -0,0 +1,2 @@
2+/src
3+/yt-dlp.tar.gz
+7,
-0
1@@ -0,0 +1,7 @@
2+file('bin/yt-dlp', '755', '$dir/yt-dlp')
3+for f in iterlines('pylibs.txt') do
4+ file('lib/python3.10/'..f, '644', '$srcdir/'..f)
5+end
6+man{'yt-dlp.1'}
7+
8+fetch 'curl'
1@@ -0,0 +1,248 @@
2+From 85781c9dc7a882b8638dcfdd60da14261178f437 Mon Sep 17 00:00:00 2001
3+From: Michael Forney <mforney@mforney.org>
4+Date: Mon, 4 Jul 2016 16:14:18 -0700
5+Subject: [PATCH] Disable use of ctypes and dynamic loading
6+
7+---
8+ yt_dlp/cookies.py | 100 -----------------------------------------
9+ yt_dlp/utils/_utils.py | 85 +----------------------------------
10+ 2 files changed, 2 insertions(+), 183 deletions(-)
11+
12+diff --git a/yt_dlp/cookies.py b/yt_dlp/cookies.py
13+index 070d2fcb9..e527fdec4 100644
14+--- a/yt_dlp/cookies.py
15++++ b/yt_dlp/cookies.py
16+@@ -400,8 +400,6 @@ def decrypt(self, encrypted_value):
17+ def get_cookie_decryptor(browser_root, browser_keyring_name, logger, *, keyring=None):
18+ if sys.platform == 'darwin':
19+ return MacChromeCookieDecryptor(browser_keyring_name, logger)
20+- elif sys.platform in ('win32', 'cygwin'):
21+- return WindowsChromeCookieDecryptor(browser_root, logger)
22+ return LinuxChromeCookieDecryptor(browser_keyring_name, logger, keyring=keyring)
23+
24+
25+@@ -488,43 +486,6 @@ def decrypt(self, encrypted_value):
26+ return encrypted_value
27+
28+
29+-class WindowsChromeCookieDecryptor(ChromeCookieDecryptor):
30+- def __init__(self, browser_root, logger):
31+- self._logger = logger
32+- self._v10_key = _get_windows_v10_key(browser_root, logger)
33+- self._cookie_counts = {'v10': 0, 'other': 0}
34+-
35+- def decrypt(self, encrypted_value):
36+- version = encrypted_value[:3]
37+- ciphertext = encrypted_value[3:]
38+-
39+- if version == b'v10':
40+- self._cookie_counts['v10'] += 1
41+- if self._v10_key is None:
42+- self._logger.warning('cannot decrypt v10 cookies: no key found', only_once=True)
43+- return None
44+-
45+- # https://chromium.googlesource.com/chromium/src/+/refs/heads/main/components/os_crypt/sync/os_crypt_win.cc
46+- # kNonceLength
47+- nonce_length = 96 // 8
48+- # boringssl
49+- # EVP_AEAD_AES_GCM_TAG_LEN
50+- authentication_tag_length = 16
51+-
52+- raw_ciphertext = ciphertext
53+- nonce = raw_ciphertext[:nonce_length]
54+- ciphertext = raw_ciphertext[nonce_length:-authentication_tag_length]
55+- authentication_tag = raw_ciphertext[-authentication_tag_length:]
56+-
57+- return _decrypt_aes_gcm(ciphertext, self._v10_key, nonce, authentication_tag, self._logger)
58+-
59+- else:
60+- self._cookie_counts['other'] += 1
61+- # any other prefix means the data is DPAPI encrypted
62+- # https://chromium.googlesource.com/chromium/src/+/refs/heads/main/components/os_crypt/sync/os_crypt_win.cc
63+- return _decrypt_windows_dpapi(encrypted_value, self._logger).decode()
64+-
65+-
66+ def _extract_safari_cookies(profile, logger):
67+ if sys.platform != 'darwin':
68+ raise ValueError(f'unsupported platform: {sys.platform}')
69+@@ -971,33 +932,6 @@ def _get_mac_keyring_password(browser_keyring_name, logger):
70+ return None
71+
72+
73+-def _get_windows_v10_key(browser_root, logger):
74+- """
75+- References:
76+- - [1] https://chromium.googlesource.com/chromium/src/+/refs/heads/main/components/os_crypt/sync/os_crypt_win.cc
77+- """
78+- path = _newest(_find_files(browser_root, 'Local State', logger))
79+- if path is None:
80+- logger.error('could not find local state file')
81+- return None
82+- logger.debug(f'Found local state file at "{path}"')
83+- with open(path, encoding='utf8') as f:
84+- data = json.load(f)
85+- try:
86+- # kOsCryptEncryptedKeyPrefName in [1]
87+- base64_key = data['os_crypt']['encrypted_key']
88+- except KeyError:
89+- logger.error('no encrypted key in Local State')
90+- return None
91+- encrypted_key = base64.b64decode(base64_key)
92+- # kDPAPIKeyPrefix in [1]
93+- prefix = b'DPAPI'
94+- if not encrypted_key.startswith(prefix):
95+- logger.error('invalid key')
96+- return None
97+- return _decrypt_windows_dpapi(encrypted_key[len(prefix):], logger)
98+-
99+-
100+ def pbkdf2_sha1(password, salt, iterations, key_length):
101+ return hashlib.pbkdf2_hmac('sha1', password, salt, iterations, key_length)
102+
103+@@ -1027,40 +961,6 @@ def _decrypt_aes_gcm(ciphertext, key, nonce, authentication_tag, logger):
104+ return None
105+
106+
107+-def _decrypt_windows_dpapi(ciphertext, logger):
108+- """
109+- References:
110+- - https://docs.microsoft.com/en-us/windows/win32/api/dpapi/nf-dpapi-cryptunprotectdata
111+- """
112+-
113+- import ctypes
114+- import ctypes.wintypes
115+-
116+- class DATA_BLOB(ctypes.Structure):
117+- _fields_ = [('cbData', ctypes.wintypes.DWORD),
118+- ('pbData', ctypes.POINTER(ctypes.c_char))]
119+-
120+- buffer = ctypes.create_string_buffer(ciphertext)
121+- blob_in = DATA_BLOB(ctypes.sizeof(buffer), buffer)
122+- blob_out = DATA_BLOB()
123+- ret = ctypes.windll.crypt32.CryptUnprotectData(
124+- ctypes.byref(blob_in), # pDataIn
125+- None, # ppszDataDescr: human readable description of pDataIn
126+- None, # pOptionalEntropy: salt?
127+- None, # pvReserved: must be NULL
128+- None, # pPromptStruct: information about prompts to display
129+- 0, # dwFlags
130+- ctypes.byref(blob_out), # pDataOut
131+- )
132+- if not ret:
133+- logger.warning('failed to decrypt with DPAPI', only_once=True)
134+- return None
135+-
136+- result = ctypes.string_at(blob_out.pbData, blob_out.cbData)
137+- ctypes.windll.kernel32.LocalFree(blob_out.pbData)
138+- return result
139+-
140+-
141+ def _config_home():
142+ return os.environ.get('XDG_CONFIG_HOME', os.path.expanduser('~/.config'))
143+
144+diff --git a/yt_dlp/utils/_utils.py b/yt_dlp/utils/_utils.py
145+index 0d3e707c5..357f145d7 100644
146+--- a/yt_dlp/utils/_utils.py
147++++ b/yt_dlp/utils/_utils.py
148+@@ -1482,64 +1482,7 @@ def __init__(self):
149+ super().__init__(self.msg)
150+
151+
152+-# Cross-platform file locking
153+-if sys.platform == 'win32':
154+- import ctypes
155+- import ctypes.wintypes
156+- import msvcrt
157+-
158+- class OVERLAPPED(ctypes.Structure):
159+- _fields_ = [
160+- ('Internal', ctypes.wintypes.LPVOID),
161+- ('InternalHigh', ctypes.wintypes.LPVOID),
162+- ('Offset', ctypes.wintypes.DWORD),
163+- ('OffsetHigh', ctypes.wintypes.DWORD),
164+- ('hEvent', ctypes.wintypes.HANDLE),
165+- ]
166+-
167+- kernel32 = ctypes.WinDLL('kernel32')
168+- LockFileEx = kernel32.LockFileEx
169+- LockFileEx.argtypes = [
170+- ctypes.wintypes.HANDLE, # hFile
171+- ctypes.wintypes.DWORD, # dwFlags
172+- ctypes.wintypes.DWORD, # dwReserved
173+- ctypes.wintypes.DWORD, # nNumberOfBytesToLockLow
174+- ctypes.wintypes.DWORD, # nNumberOfBytesToLockHigh
175+- ctypes.POINTER(OVERLAPPED), # Overlapped
176+- ]
177+- LockFileEx.restype = ctypes.wintypes.BOOL
178+- UnlockFileEx = kernel32.UnlockFileEx
179+- UnlockFileEx.argtypes = [
180+- ctypes.wintypes.HANDLE, # hFile
181+- ctypes.wintypes.DWORD, # dwReserved
182+- ctypes.wintypes.DWORD, # nNumberOfBytesToLockLow
183+- ctypes.wintypes.DWORD, # nNumberOfBytesToLockHigh
184+- ctypes.POINTER(OVERLAPPED), # Overlapped
185+- ]
186+- UnlockFileEx.restype = ctypes.wintypes.BOOL
187+- whole_low = 0xffffffff
188+- whole_high = 0x7fffffff
189+-
190+- def _lock_file(f, exclusive, block):
191+- overlapped = OVERLAPPED()
192+- overlapped.Offset = 0
193+- overlapped.OffsetHigh = 0
194+- overlapped.hEvent = 0
195+- f._lock_file_overlapped_p = ctypes.pointer(overlapped)
196+-
197+- if not LockFileEx(msvcrt.get_osfhandle(f.fileno()),
198+- (0x2 if exclusive else 0x0) | (0x0 if block else 0x1),
199+- 0, whole_low, whole_high, f._lock_file_overlapped_p):
200+- # NB: No argument form of "ctypes.FormatError" does not work on PyPy
201+- raise BlockingIOError(f'Locking file failed: {ctypes.FormatError(ctypes.GetLastError())!r}')
202+-
203+- def _unlock_file(f):
204+- assert f._lock_file_overlapped_p
205+- handle = msvcrt.get_osfhandle(f.fileno())
206+- if not UnlockFileEx(handle, 0, whole_low, whole_high, f._lock_file_overlapped_p):
207+- raise OSError(f'Unlocking file failed: {ctypes.FormatError()!r}')
208+-
209+-else:
210++if True:
211+ try:
212+ import fcntl
213+
214+@@ -1888,31 +1831,7 @@ def fix_xml_ampersands(xml_str):
215+
216+
217+ def setproctitle(title):
218+- assert isinstance(title, str)
219+-
220+- # Workaround for https://github.com/yt-dlp/yt-dlp/issues/4541
221+- try:
222+- import ctypes
223+- except ImportError:
224+- return
225+-
226+- try:
227+- libc = ctypes.cdll.LoadLibrary('libc.so.6')
228+- except OSError:
229+- return
230+- except TypeError:
231+- # LoadLibrary in Windows Python 2.7.13 only expects
232+- # a bytestring, but since unicode_literals turns
233+- # every string into a unicode string, it fails.
234+- return
235+- title_bytes = title.encode()
236+- buf = ctypes.create_string_buffer(len(title_bytes))
237+- buf.value = title_bytes
238+- try:
239+- # PR_SET_NAME = 15 Ref: /usr/include/linux/prctl.h
240+- libc.prctl(15, buf, 0, 0, 0)
241+- except AttributeError:
242+- return # Strange libc, just skip this
243++ return
244+
245+
246+ def remove_start(s, start):
247+--
248+2.44.0
249+
+1074,
-0
1@@ -0,0 +1,1074 @@
2+# 2,<cd src && find yt_dlp -type f -name '*.py' | LC_COLLATE=C sort
3+yt_dlp/YoutubeDL.py
4+yt_dlp/__init__.py
5+yt_dlp/__main__.py
6+yt_dlp/__pyinstaller/__init__.py
7+yt_dlp/__pyinstaller/hook-yt_dlp.py
8+yt_dlp/aes.py
9+yt_dlp/cache.py
10+yt_dlp/compat/__init__.py
11+yt_dlp/compat/_deprecated.py
12+yt_dlp/compat/_legacy.py
13+yt_dlp/compat/compat_utils.py
14+yt_dlp/compat/functools.py
15+yt_dlp/compat/imghdr.py
16+yt_dlp/compat/shutil.py
17+yt_dlp/compat/types.py
18+yt_dlp/compat/urllib/__init__.py
19+yt_dlp/compat/urllib/request.py
20+yt_dlp/cookies.py
21+yt_dlp/dependencies/Cryptodome.py
22+yt_dlp/dependencies/__init__.py
23+yt_dlp/downloader/__init__.py
24+yt_dlp/downloader/common.py
25+yt_dlp/downloader/dash.py
26+yt_dlp/downloader/external.py
27+yt_dlp/downloader/f4m.py
28+yt_dlp/downloader/fc2.py
29+yt_dlp/downloader/fragment.py
30+yt_dlp/downloader/hls.py
31+yt_dlp/downloader/http.py
32+yt_dlp/downloader/ism.py
33+yt_dlp/downloader/mhtml.py
34+yt_dlp/downloader/niconico.py
35+yt_dlp/downloader/rtmp.py
36+yt_dlp/downloader/rtsp.py
37+yt_dlp/downloader/websocket.py
38+yt_dlp/downloader/youtube_live_chat.py
39+yt_dlp/extractor/__init__.py
40+yt_dlp/extractor/_extractors.py
41+yt_dlp/extractor/abc.py
42+yt_dlp/extractor/abcnews.py
43+yt_dlp/extractor/abcotvs.py
44+yt_dlp/extractor/abematv.py
45+yt_dlp/extractor/academicearth.py
46+yt_dlp/extractor/acast.py
47+yt_dlp/extractor/acfun.py
48+yt_dlp/extractor/adn.py
49+yt_dlp/extractor/adobeconnect.py
50+yt_dlp/extractor/adobepass.py
51+yt_dlp/extractor/adobetv.py
52+yt_dlp/extractor/adultswim.py
53+yt_dlp/extractor/aenetworks.py
54+yt_dlp/extractor/aeonco.py
55+yt_dlp/extractor/afreecatv.py
56+yt_dlp/extractor/agora.py
57+yt_dlp/extractor/airtv.py
58+yt_dlp/extractor/aitube.py
59+yt_dlp/extractor/aliexpress.py
60+yt_dlp/extractor/aljazeera.py
61+yt_dlp/extractor/allocine.py
62+yt_dlp/extractor/allstar.py
63+yt_dlp/extractor/alphaporno.py
64+yt_dlp/extractor/alsace20tv.py
65+yt_dlp/extractor/altcensored.py
66+yt_dlp/extractor/alura.py
67+yt_dlp/extractor/amadeustv.py
68+yt_dlp/extractor/amara.py
69+yt_dlp/extractor/amazon.py
70+yt_dlp/extractor/amazonminitv.py
71+yt_dlp/extractor/amcnetworks.py
72+yt_dlp/extractor/americastestkitchen.py
73+yt_dlp/extractor/amp.py
74+yt_dlp/extractor/anchorfm.py
75+yt_dlp/extractor/angel.py
76+yt_dlp/extractor/antenna.py
77+yt_dlp/extractor/anvato.py
78+yt_dlp/extractor/aol.py
79+yt_dlp/extractor/apa.py
80+yt_dlp/extractor/aparat.py
81+yt_dlp/extractor/appleconnect.py
82+yt_dlp/extractor/applepodcasts.py
83+yt_dlp/extractor/appletrailers.py
84+yt_dlp/extractor/archiveorg.py
85+yt_dlp/extractor/arcpublishing.py
86+yt_dlp/extractor/ard.py
87+yt_dlp/extractor/arkena.py
88+yt_dlp/extractor/arnes.py
89+yt_dlp/extractor/art19.py
90+yt_dlp/extractor/arte.py
91+yt_dlp/extractor/asobichannel.py
92+yt_dlp/extractor/asobistage.py
93+yt_dlp/extractor/atresplayer.py
94+yt_dlp/extractor/atscaleconf.py
95+yt_dlp/extractor/atvat.py
96+yt_dlp/extractor/audimedia.py
97+yt_dlp/extractor/audioboom.py
98+yt_dlp/extractor/audiodraft.py
99+yt_dlp/extractor/audiomack.py
100+yt_dlp/extractor/audius.py
101+yt_dlp/extractor/awaan.py
102+yt_dlp/extractor/aws.py
103+yt_dlp/extractor/axs.py
104+yt_dlp/extractor/azmedien.py
105+yt_dlp/extractor/baidu.py
106+yt_dlp/extractor/banbye.py
107+yt_dlp/extractor/bandaichannel.py
108+yt_dlp/extractor/bandcamp.py
109+yt_dlp/extractor/bannedvideo.py
110+yt_dlp/extractor/bbc.py
111+yt_dlp/extractor/beatbump.py
112+yt_dlp/extractor/beatport.py
113+yt_dlp/extractor/beeg.py
114+yt_dlp/extractor/behindkink.py
115+yt_dlp/extractor/bellmedia.py
116+yt_dlp/extractor/berufetv.py
117+yt_dlp/extractor/bet.py
118+yt_dlp/extractor/bfi.py
119+yt_dlp/extractor/bfmtv.py
120+yt_dlp/extractor/bibeltv.py
121+yt_dlp/extractor/bigflix.py
122+yt_dlp/extractor/bigo.py
123+yt_dlp/extractor/bild.py
124+yt_dlp/extractor/bilibili.py
125+yt_dlp/extractor/biobiochiletv.py
126+yt_dlp/extractor/bitchute.py
127+yt_dlp/extractor/blackboardcollaborate.py
128+yt_dlp/extractor/bleacherreport.py
129+yt_dlp/extractor/blerp.py
130+yt_dlp/extractor/blogger.py
131+yt_dlp/extractor/bloomberg.py
132+yt_dlp/extractor/bokecc.py
133+yt_dlp/extractor/bongacams.py
134+yt_dlp/extractor/boosty.py
135+yt_dlp/extractor/bostonglobe.py
136+yt_dlp/extractor/box.py
137+yt_dlp/extractor/boxcast.py
138+yt_dlp/extractor/bpb.py
139+yt_dlp/extractor/br.py
140+yt_dlp/extractor/brainpop.py
141+yt_dlp/extractor/bravotv.py
142+yt_dlp/extractor/breitbart.py
143+yt_dlp/extractor/brightcove.py
144+yt_dlp/extractor/brilliantpala.py
145+yt_dlp/extractor/bundesliga.py
146+yt_dlp/extractor/bundestag.py
147+yt_dlp/extractor/businessinsider.py
148+yt_dlp/extractor/buzzfeed.py
149+yt_dlp/extractor/byutv.py
150+yt_dlp/extractor/c56.py
151+yt_dlp/extractor/caffeinetv.py
152+yt_dlp/extractor/callin.py
153+yt_dlp/extractor/caltrans.py
154+yt_dlp/extractor/cam4.py
155+yt_dlp/extractor/camdemy.py
156+yt_dlp/extractor/camfm.py
157+yt_dlp/extractor/cammodels.py
158+yt_dlp/extractor/camsoda.py
159+yt_dlp/extractor/camtasia.py
160+yt_dlp/extractor/canal1.py
161+yt_dlp/extractor/canalalpha.py
162+yt_dlp/extractor/canalc2.py
163+yt_dlp/extractor/canalplus.py
164+yt_dlp/extractor/caracoltv.py
165+yt_dlp/extractor/cartoonnetwork.py
166+yt_dlp/extractor/cbc.py
167+yt_dlp/extractor/cbs.py
168+yt_dlp/extractor/cbsnews.py
169+yt_dlp/extractor/cbssports.py
170+yt_dlp/extractor/ccc.py
171+yt_dlp/extractor/ccma.py
172+yt_dlp/extractor/cctv.py
173+yt_dlp/extractor/cda.py
174+yt_dlp/extractor/cellebrite.py
175+yt_dlp/extractor/ceskatelevize.py
176+yt_dlp/extractor/cgtn.py
177+yt_dlp/extractor/charlierose.py
178+yt_dlp/extractor/chaturbate.py
179+yt_dlp/extractor/chilloutzone.py
180+yt_dlp/extractor/chzzk.py
181+yt_dlp/extractor/cinemax.py
182+yt_dlp/extractor/cinetecamilano.py
183+yt_dlp/extractor/cineverse.py
184+yt_dlp/extractor/ciscolive.py
185+yt_dlp/extractor/ciscowebex.py
186+yt_dlp/extractor/cjsw.py
187+yt_dlp/extractor/clipchamp.py
188+yt_dlp/extractor/clippit.py
189+yt_dlp/extractor/cliprs.py
190+yt_dlp/extractor/closertotruth.py
191+yt_dlp/extractor/cloudflarestream.py
192+yt_dlp/extractor/cloudycdn.py
193+yt_dlp/extractor/clubic.py
194+yt_dlp/extractor/clyp.py
195+yt_dlp/extractor/cmt.py
196+yt_dlp/extractor/cnbc.py
197+yt_dlp/extractor/cnn.py
198+yt_dlp/extractor/comedycentral.py
199+yt_dlp/extractor/common.py
200+yt_dlp/extractor/commonmistakes.py
201+yt_dlp/extractor/commonprotocols.py
202+yt_dlp/extractor/condenast.py
203+yt_dlp/extractor/contv.py
204+yt_dlp/extractor/corus.py
205+yt_dlp/extractor/coub.py
206+yt_dlp/extractor/cozytv.py
207+yt_dlp/extractor/cpac.py
208+yt_dlp/extractor/cracked.py
209+yt_dlp/extractor/crackle.py
210+yt_dlp/extractor/craftsy.py
211+yt_dlp/extractor/crooksandliars.py
212+yt_dlp/extractor/crowdbunker.py
213+yt_dlp/extractor/crtvg.py
214+yt_dlp/extractor/crunchyroll.py
215+yt_dlp/extractor/cspan.py
216+yt_dlp/extractor/ctsnews.py
217+yt_dlp/extractor/ctv.py
218+yt_dlp/extractor/ctvnews.py
219+yt_dlp/extractor/cultureunplugged.py
220+yt_dlp/extractor/curiositystream.py
221+yt_dlp/extractor/cwtv.py
222+yt_dlp/extractor/cybrary.py
223+yt_dlp/extractor/dacast.py
224+yt_dlp/extractor/dailymail.py
225+yt_dlp/extractor/dailymotion.py
226+yt_dlp/extractor/dailywire.py
227+yt_dlp/extractor/damtomo.py
228+yt_dlp/extractor/dangalplay.py
229+yt_dlp/extractor/daum.py
230+yt_dlp/extractor/daystar.py
231+yt_dlp/extractor/dbtv.py
232+yt_dlp/extractor/dctp.py
233+yt_dlp/extractor/deezer.py
234+yt_dlp/extractor/democracynow.py
235+yt_dlp/extractor/detik.py
236+yt_dlp/extractor/deuxm.py
237+yt_dlp/extractor/dfb.py
238+yt_dlp/extractor/dhm.py
239+yt_dlp/extractor/digitalconcerthall.py
240+yt_dlp/extractor/digiteka.py
241+yt_dlp/extractor/discogs.py
242+yt_dlp/extractor/disney.py
243+yt_dlp/extractor/dispeak.py
244+yt_dlp/extractor/dlf.py
245+yt_dlp/extractor/dlive.py
246+yt_dlp/extractor/douyutv.py
247+yt_dlp/extractor/dplay.py
248+yt_dlp/extractor/drbonanza.py
249+yt_dlp/extractor/dreisat.py
250+yt_dlp/extractor/drooble.py
251+yt_dlp/extractor/dropbox.py
252+yt_dlp/extractor/dropout.py
253+yt_dlp/extractor/drtuber.py
254+yt_dlp/extractor/drtv.py
255+yt_dlp/extractor/dtube.py
256+yt_dlp/extractor/duboku.py
257+yt_dlp/extractor/dumpert.py
258+yt_dlp/extractor/duoplay.py
259+yt_dlp/extractor/dvtv.py
260+yt_dlp/extractor/dw.py
261+yt_dlp/extractor/eagleplatform.py
262+yt_dlp/extractor/ebaumsworld.py
263+yt_dlp/extractor/ebay.py
264+yt_dlp/extractor/egghead.py
265+yt_dlp/extractor/eighttracks.py
266+yt_dlp/extractor/eitb.py
267+yt_dlp/extractor/elementorembed.py
268+yt_dlp/extractor/elonet.py
269+yt_dlp/extractor/elpais.py
270+yt_dlp/extractor/eltrecetv.py
271+yt_dlp/extractor/embedly.py
272+yt_dlp/extractor/epicon.py
273+yt_dlp/extractor/epidemicsound.py
274+yt_dlp/extractor/eplus.py
275+yt_dlp/extractor/epoch.py
276+yt_dlp/extractor/eporner.py
277+yt_dlp/extractor/erocast.py
278+yt_dlp/extractor/eroprofile.py
279+yt_dlp/extractor/err.py
280+yt_dlp/extractor/ertgr.py
281+yt_dlp/extractor/espn.py
282+yt_dlp/extractor/ettutv.py
283+yt_dlp/extractor/europa.py
284+yt_dlp/extractor/europeantour.py
285+yt_dlp/extractor/eurosport.py
286+yt_dlp/extractor/euscreen.py
287+yt_dlp/extractor/expressen.py
288+yt_dlp/extractor/extractors.py
289+yt_dlp/extractor/eyedotv.py
290+yt_dlp/extractor/facebook.py
291+yt_dlp/extractor/fancode.py
292+yt_dlp/extractor/fathom.py
293+yt_dlp/extractor/faz.py
294+yt_dlp/extractor/fc2.py
295+yt_dlp/extractor/fczenit.py
296+yt_dlp/extractor/fifa.py
297+yt_dlp/extractor/filmon.py
298+yt_dlp/extractor/filmweb.py
299+yt_dlp/extractor/firsttv.py
300+yt_dlp/extractor/fivetv.py
301+yt_dlp/extractor/flextv.py
302+yt_dlp/extractor/flickr.py
303+yt_dlp/extractor/floatplane.py
304+yt_dlp/extractor/folketinget.py
305+yt_dlp/extractor/footyroom.py
306+yt_dlp/extractor/formula1.py
307+yt_dlp/extractor/fourtube.py
308+yt_dlp/extractor/fox.py
309+yt_dlp/extractor/fox9.py
310+yt_dlp/extractor/foxnews.py
311+yt_dlp/extractor/foxsports.py
312+yt_dlp/extractor/fptplay.py
313+yt_dlp/extractor/franceinter.py
314+yt_dlp/extractor/francetv.py
315+yt_dlp/extractor/freesound.py
316+yt_dlp/extractor/freespeech.py
317+yt_dlp/extractor/freetv.py
318+yt_dlp/extractor/frontendmasters.py
319+yt_dlp/extractor/fujitv.py
320+yt_dlp/extractor/funimation.py
321+yt_dlp/extractor/funk.py
322+yt_dlp/extractor/funker530.py
323+yt_dlp/extractor/fuyintv.py
324+yt_dlp/extractor/gab.py
325+yt_dlp/extractor/gaia.py
326+yt_dlp/extractor/gamejolt.py
327+yt_dlp/extractor/gamespot.py
328+yt_dlp/extractor/gamestar.py
329+yt_dlp/extractor/gaskrank.py
330+yt_dlp/extractor/gazeta.py
331+yt_dlp/extractor/gbnews.py
332+yt_dlp/extractor/gdcvault.py
333+yt_dlp/extractor/gedidigital.py
334+yt_dlp/extractor/generic.py
335+yt_dlp/extractor/genericembeds.py
336+yt_dlp/extractor/genius.py
337+yt_dlp/extractor/getcourseru.py
338+yt_dlp/extractor/gettr.py
339+yt_dlp/extractor/giantbomb.py
340+yt_dlp/extractor/gigya.py
341+yt_dlp/extractor/glide.py
342+yt_dlp/extractor/globalplayer.py
343+yt_dlp/extractor/globo.py
344+yt_dlp/extractor/glomex.py
345+yt_dlp/extractor/gmanetwork.py
346+yt_dlp/extractor/go.py
347+yt_dlp/extractor/godresource.py
348+yt_dlp/extractor/godtube.py
349+yt_dlp/extractor/gofile.py
350+yt_dlp/extractor/golem.py
351+yt_dlp/extractor/goodgame.py
352+yt_dlp/extractor/googledrive.py
353+yt_dlp/extractor/googlepodcasts.py
354+yt_dlp/extractor/googlesearch.py
355+yt_dlp/extractor/goplay.py
356+yt_dlp/extractor/gopro.py
357+yt_dlp/extractor/goshgay.py
358+yt_dlp/extractor/gotostage.py
359+yt_dlp/extractor/gputechconf.py
360+yt_dlp/extractor/graspop.py
361+yt_dlp/extractor/gronkh.py
362+yt_dlp/extractor/groupon.py
363+yt_dlp/extractor/harpodeon.py
364+yt_dlp/extractor/hbo.py
365+yt_dlp/extractor/hearthisat.py
366+yt_dlp/extractor/heise.py
367+yt_dlp/extractor/hellporno.py
368+yt_dlp/extractor/hgtv.py
369+yt_dlp/extractor/hidive.py
370+yt_dlp/extractor/historicfilms.py
371+yt_dlp/extractor/hitrecord.py
372+yt_dlp/extractor/hketv.py
373+yt_dlp/extractor/hollywoodreporter.py
374+yt_dlp/extractor/holodex.py
375+yt_dlp/extractor/hotnewhiphop.py
376+yt_dlp/extractor/hotstar.py
377+yt_dlp/extractor/hrefli.py
378+yt_dlp/extractor/hrfensehen.py
379+yt_dlp/extractor/hrti.py
380+yt_dlp/extractor/hse.py
381+yt_dlp/extractor/huajiao.py
382+yt_dlp/extractor/huffpost.py
383+yt_dlp/extractor/hungama.py
384+yt_dlp/extractor/huya.py
385+yt_dlp/extractor/hypem.py
386+yt_dlp/extractor/hypergryph.py
387+yt_dlp/extractor/hytale.py
388+yt_dlp/extractor/icareus.py
389+yt_dlp/extractor/ichinanalive.py
390+yt_dlp/extractor/idolplus.py
391+yt_dlp/extractor/ign.py
392+yt_dlp/extractor/iheart.py
393+yt_dlp/extractor/ilpost.py
394+yt_dlp/extractor/iltalehti.py
395+yt_dlp/extractor/imdb.py
396+yt_dlp/extractor/imggaming.py
397+yt_dlp/extractor/imgur.py
398+yt_dlp/extractor/ina.py
399+yt_dlp/extractor/inc.py
400+yt_dlp/extractor/indavideo.py
401+yt_dlp/extractor/infoq.py
402+yt_dlp/extractor/instagram.py
403+yt_dlp/extractor/internazionale.py
404+yt_dlp/extractor/internetvideoarchive.py
405+yt_dlp/extractor/iprima.py
406+yt_dlp/extractor/iqiyi.py
407+yt_dlp/extractor/islamchannel.py
408+yt_dlp/extractor/israelnationalnews.py
409+yt_dlp/extractor/itprotv.py
410+yt_dlp/extractor/itv.py
411+yt_dlp/extractor/ivi.py
412+yt_dlp/extractor/ivideon.py
413+yt_dlp/extractor/iwara.py
414+yt_dlp/extractor/ixigua.py
415+yt_dlp/extractor/izlesene.py
416+yt_dlp/extractor/jamendo.py
417+yt_dlp/extractor/japandiet.py
418+yt_dlp/extractor/jeuxvideo.py
419+yt_dlp/extractor/jiocinema.py
420+yt_dlp/extractor/jiosaavn.py
421+yt_dlp/extractor/jixie.py
422+yt_dlp/extractor/joj.py
423+yt_dlp/extractor/joqrag.py
424+yt_dlp/extractor/jove.py
425+yt_dlp/extractor/jstream.py
426+yt_dlp/extractor/jtbc.py
427+yt_dlp/extractor/jwplatform.py
428+yt_dlp/extractor/kakao.py
429+yt_dlp/extractor/kaltura.py
430+yt_dlp/extractor/kankanews.py
431+yt_dlp/extractor/karaoketv.py
432+yt_dlp/extractor/kelbyone.py
433+yt_dlp/extractor/khanacademy.py
434+yt_dlp/extractor/kick.py
435+yt_dlp/extractor/kicker.py
436+yt_dlp/extractor/kickstarter.py
437+yt_dlp/extractor/kinja.py
438+yt_dlp/extractor/kinopoisk.py
439+yt_dlp/extractor/kommunetv.py
440+yt_dlp/extractor/kompas.py
441+yt_dlp/extractor/koo.py
442+yt_dlp/extractor/krasview.py
443+yt_dlp/extractor/kth.py
444+yt_dlp/extractor/ku6.py
445+yt_dlp/extractor/kukululive.py
446+yt_dlp/extractor/kuwo.py
447+yt_dlp/extractor/la7.py
448+yt_dlp/extractor/laracasts.py
449+yt_dlp/extractor/lastfm.py
450+yt_dlp/extractor/laxarxames.py
451+yt_dlp/extractor/lazy_extractors.py
452+yt_dlp/extractor/lbry.py
453+yt_dlp/extractor/lci.py
454+yt_dlp/extractor/lcp.py
455+yt_dlp/extractor/learningonscreen.py
456+yt_dlp/extractor/lecture2go.py
457+yt_dlp/extractor/lecturio.py
458+yt_dlp/extractor/leeco.py
459+yt_dlp/extractor/lefigaro.py
460+yt_dlp/extractor/lego.py
461+yt_dlp/extractor/lemonde.py
462+yt_dlp/extractor/lenta.py
463+yt_dlp/extractor/libraryofcongress.py
464+yt_dlp/extractor/libsyn.py
465+yt_dlp/extractor/lifenews.py
466+yt_dlp/extractor/likee.py
467+yt_dlp/extractor/limelight.py
468+yt_dlp/extractor/linkedin.py
469+yt_dlp/extractor/liputan6.py
470+yt_dlp/extractor/listennotes.py
471+yt_dlp/extractor/litv.py
472+yt_dlp/extractor/livejournal.py
473+yt_dlp/extractor/livestream.py
474+yt_dlp/extractor/livestreamfails.py
475+yt_dlp/extractor/lnkgo.py
476+yt_dlp/extractor/loom.py
477+yt_dlp/extractor/lovehomeporn.py
478+yt_dlp/extractor/lrt.py
479+yt_dlp/extractor/lsm.py
480+yt_dlp/extractor/lumni.py
481+yt_dlp/extractor/lynda.py
482+yt_dlp/extractor/maariv.py
483+yt_dlp/extractor/magellantv.py
484+yt_dlp/extractor/magentamusik.py
485+yt_dlp/extractor/mailru.py
486+yt_dlp/extractor/mainstreaming.py
487+yt_dlp/extractor/mangomolo.py
488+yt_dlp/extractor/manoto.py
489+yt_dlp/extractor/manyvids.py
490+yt_dlp/extractor/maoritv.py
491+yt_dlp/extractor/markiza.py
492+yt_dlp/extractor/massengeschmacktv.py
493+yt_dlp/extractor/masters.py
494+yt_dlp/extractor/matchtv.py
495+yt_dlp/extractor/mbn.py
496+yt_dlp/extractor/mdr.py
497+yt_dlp/extractor/medaltv.py
498+yt_dlp/extractor/mediaite.py
499+yt_dlp/extractor/mediaklikk.py
500+yt_dlp/extractor/medialaan.py
501+yt_dlp/extractor/mediaset.py
502+yt_dlp/extractor/mediasite.py
503+yt_dlp/extractor/mediastream.py
504+yt_dlp/extractor/mediaworksnz.py
505+yt_dlp/extractor/medici.py
506+yt_dlp/extractor/megaphone.py
507+yt_dlp/extractor/megatvcom.py
508+yt_dlp/extractor/meipai.py
509+yt_dlp/extractor/melonvod.py
510+yt_dlp/extractor/metacritic.py
511+yt_dlp/extractor/mgtv.py
512+yt_dlp/extractor/microsoftembed.py
513+yt_dlp/extractor/microsoftstream.py
514+yt_dlp/extractor/mildom.py
515+yt_dlp/extractor/minds.py
516+yt_dlp/extractor/minoto.py
517+yt_dlp/extractor/mirrativ.py
518+yt_dlp/extractor/mirrorcouk.py
519+yt_dlp/extractor/mit.py
520+yt_dlp/extractor/mitele.py
521+yt_dlp/extractor/mixch.py
522+yt_dlp/extractor/mixcloud.py
523+yt_dlp/extractor/mlb.py
524+yt_dlp/extractor/mlssoccer.py
525+yt_dlp/extractor/mocha.py
526+yt_dlp/extractor/mojvideo.py
527+yt_dlp/extractor/monstercat.py
528+yt_dlp/extractor/motherless.py
529+yt_dlp/extractor/motorsport.py
530+yt_dlp/extractor/moviepilot.py
531+yt_dlp/extractor/moview.py
532+yt_dlp/extractor/moviezine.py
533+yt_dlp/extractor/movingimage.py
534+yt_dlp/extractor/msn.py
535+yt_dlp/extractor/mtv.py
536+yt_dlp/extractor/muenchentv.py
537+yt_dlp/extractor/murrtube.py
538+yt_dlp/extractor/museai.py
539+yt_dlp/extractor/musescore.py
540+yt_dlp/extractor/musicdex.py
541+yt_dlp/extractor/mx3.py
542+yt_dlp/extractor/mxplayer.py
543+yt_dlp/extractor/myspace.py
544+yt_dlp/extractor/myspass.py
545+yt_dlp/extractor/myvideoge.py
546+yt_dlp/extractor/myvidster.py
547+yt_dlp/extractor/mzaalo.py
548+yt_dlp/extractor/n1.py
549+yt_dlp/extractor/nate.py
550+yt_dlp/extractor/nationalgeographic.py
551+yt_dlp/extractor/naver.py
552+yt_dlp/extractor/nba.py
553+yt_dlp/extractor/nbc.py
554+yt_dlp/extractor/ndr.py
555+yt_dlp/extractor/ndtv.py
556+yt_dlp/extractor/nebula.py
557+yt_dlp/extractor/nekohacker.py
558+yt_dlp/extractor/nerdcubed.py
559+yt_dlp/extractor/neteasemusic.py
560+yt_dlp/extractor/netverse.py
561+yt_dlp/extractor/netzkino.py
562+yt_dlp/extractor/newgrounds.py
563+yt_dlp/extractor/newspicks.py
564+yt_dlp/extractor/newsy.py
565+yt_dlp/extractor/nextmedia.py
566+yt_dlp/extractor/nexx.py
567+yt_dlp/extractor/nfb.py
568+yt_dlp/extractor/nfhsnetwork.py
569+yt_dlp/extractor/nfl.py
570+yt_dlp/extractor/nhk.py
571+yt_dlp/extractor/nhl.py
572+yt_dlp/extractor/nick.py
573+yt_dlp/extractor/niconico.py
574+yt_dlp/extractor/niconicochannelplus.py
575+yt_dlp/extractor/ninaprotocol.py
576+yt_dlp/extractor/ninecninemedia.py
577+yt_dlp/extractor/ninegag.py
578+yt_dlp/extractor/ninenews.py
579+yt_dlp/extractor/ninenow.py
580+yt_dlp/extractor/nintendo.py
581+yt_dlp/extractor/nitter.py
582+yt_dlp/extractor/nobelprize.py
583+yt_dlp/extractor/noice.py
584+yt_dlp/extractor/nonktube.py
585+yt_dlp/extractor/noodlemagazine.py
586+yt_dlp/extractor/noovo.py
587+yt_dlp/extractor/nosnl.py
588+yt_dlp/extractor/nova.py
589+yt_dlp/extractor/novaplay.py
590+yt_dlp/extractor/nowness.py
591+yt_dlp/extractor/noz.py
592+yt_dlp/extractor/npo.py
593+yt_dlp/extractor/npr.py
594+yt_dlp/extractor/nrk.py
595+yt_dlp/extractor/nrl.py
596+yt_dlp/extractor/nts.py
597+yt_dlp/extractor/ntvcojp.py
598+yt_dlp/extractor/ntvde.py
599+yt_dlp/extractor/ntvru.py
600+yt_dlp/extractor/nubilesporn.py
601+yt_dlp/extractor/nuevo.py
602+yt_dlp/extractor/nuum.py
603+yt_dlp/extractor/nuvid.py
604+yt_dlp/extractor/nytimes.py
605+yt_dlp/extractor/nzherald.py
606+yt_dlp/extractor/nzonscreen.py
607+yt_dlp/extractor/nzz.py
608+yt_dlp/extractor/odkmedia.py
609+yt_dlp/extractor/odnoklassniki.py
610+yt_dlp/extractor/oftv.py
611+yt_dlp/extractor/oktoberfesttv.py
612+yt_dlp/extractor/olympics.py
613+yt_dlp/extractor/on24.py
614+yt_dlp/extractor/once.py
615+yt_dlp/extractor/ondemandkorea.py
616+yt_dlp/extractor/onefootball.py
617+yt_dlp/extractor/onenewsnz.py
618+yt_dlp/extractor/oneplace.py
619+yt_dlp/extractor/onet.py
620+yt_dlp/extractor/onionstudios.py
621+yt_dlp/extractor/opencast.py
622+yt_dlp/extractor/openload.py
623+yt_dlp/extractor/openrec.py
624+yt_dlp/extractor/ora.py
625+yt_dlp/extractor/orf.py
626+yt_dlp/extractor/outsidetv.py
627+yt_dlp/extractor/owncloud.py
628+yt_dlp/extractor/packtpub.py
629+yt_dlp/extractor/palcomp3.py
630+yt_dlp/extractor/panopto.py
631+yt_dlp/extractor/paramountplus.py
632+yt_dlp/extractor/parler.py
633+yt_dlp/extractor/parlview.py
634+yt_dlp/extractor/patreon.py
635+yt_dlp/extractor/pbs.py
636+yt_dlp/extractor/pearvideo.py
637+yt_dlp/extractor/peekvids.py
638+yt_dlp/extractor/peertube.py
639+yt_dlp/extractor/peertv.py
640+yt_dlp/extractor/peloton.py
641+yt_dlp/extractor/performgroup.py
642+yt_dlp/extractor/periscope.py
643+yt_dlp/extractor/pgatour.py
644+yt_dlp/extractor/philharmoniedeparis.py
645+yt_dlp/extractor/phoenix.py
646+yt_dlp/extractor/photobucket.py
647+yt_dlp/extractor/piapro.py
648+yt_dlp/extractor/piaulizaportal.py
649+yt_dlp/extractor/picarto.py
650+yt_dlp/extractor/piksel.py
651+yt_dlp/extractor/pinkbike.py
652+yt_dlp/extractor/pinterest.py
653+yt_dlp/extractor/pixivsketch.py
654+yt_dlp/extractor/pladform.py
655+yt_dlp/extractor/planetmarathi.py
656+yt_dlp/extractor/platzi.py
657+yt_dlp/extractor/playplustv.py
658+yt_dlp/extractor/playsuisse.py
659+yt_dlp/extractor/playtvak.py
660+yt_dlp/extractor/playwire.py
661+yt_dlp/extractor/pluralsight.py
662+yt_dlp/extractor/plutotv.py
663+yt_dlp/extractor/podbayfm.py
664+yt_dlp/extractor/podchaser.py
665+yt_dlp/extractor/podomatic.py
666+yt_dlp/extractor/pokemon.py
667+yt_dlp/extractor/pokergo.py
668+yt_dlp/extractor/polsatgo.py
669+yt_dlp/extractor/polskieradio.py
670+yt_dlp/extractor/popcorntimes.py
671+yt_dlp/extractor/popcorntv.py
672+yt_dlp/extractor/pornbox.py
673+yt_dlp/extractor/pornflip.py
674+yt_dlp/extractor/pornhub.py
675+yt_dlp/extractor/pornotube.py
676+yt_dlp/extractor/pornovoisines.py
677+yt_dlp/extractor/pornoxo.py
678+yt_dlp/extractor/pr0gramm.py
679+yt_dlp/extractor/prankcast.py
680+yt_dlp/extractor/premiershiprugby.py
681+yt_dlp/extractor/presstv.py
682+yt_dlp/extractor/projectveritas.py
683+yt_dlp/extractor/prosiebensat1.py
684+yt_dlp/extractor/prx.py
685+yt_dlp/extractor/puhutv.py
686+yt_dlp/extractor/puls4.py
687+yt_dlp/extractor/pyvideo.py
688+yt_dlp/extractor/qdance.py
689+yt_dlp/extractor/qingting.py
690+yt_dlp/extractor/qqmusic.py
691+yt_dlp/extractor/r7.py
692+yt_dlp/extractor/radiko.py
693+yt_dlp/extractor/radiocanada.py
694+yt_dlp/extractor/radiocomercial.py
695+yt_dlp/extractor/radiode.py
696+yt_dlp/extractor/radiofrance.py
697+yt_dlp/extractor/radiojavan.py
698+yt_dlp/extractor/radiokapital.py
699+yt_dlp/extractor/radiozet.py
700+yt_dlp/extractor/radlive.py
701+yt_dlp/extractor/rai.py
702+yt_dlp/extractor/raywenderlich.py
703+yt_dlp/extractor/rbgtum.py
704+yt_dlp/extractor/rcs.py
705+yt_dlp/extractor/rcti.py
706+yt_dlp/extractor/rds.py
707+yt_dlp/extractor/redbee.py
708+yt_dlp/extractor/redbulltv.py
709+yt_dlp/extractor/reddit.py
710+yt_dlp/extractor/redge.py
711+yt_dlp/extractor/redgifs.py
712+yt_dlp/extractor/redtube.py
713+yt_dlp/extractor/rentv.py
714+yt_dlp/extractor/restudy.py
715+yt_dlp/extractor/reuters.py
716+yt_dlp/extractor/reverbnation.py
717+yt_dlp/extractor/rheinmaintv.py
718+yt_dlp/extractor/ridehome.py
719+yt_dlp/extractor/rinsefm.py
720+yt_dlp/extractor/rmcdecouverte.py
721+yt_dlp/extractor/rockstargames.py
722+yt_dlp/extractor/rokfin.py
723+yt_dlp/extractor/roosterteeth.py
724+yt_dlp/extractor/rottentomatoes.py
725+yt_dlp/extractor/rozhlas.py
726+yt_dlp/extractor/rte.py
727+yt_dlp/extractor/rtl2.py
728+yt_dlp/extractor/rtlnl.py
729+yt_dlp/extractor/rtnews.py
730+yt_dlp/extractor/rtp.py
731+yt_dlp/extractor/rtrfm.py
732+yt_dlp/extractor/rts.py
733+yt_dlp/extractor/rtvcplay.py
734+yt_dlp/extractor/rtve.py
735+yt_dlp/extractor/rtvs.py
736+yt_dlp/extractor/rtvslo.py
737+yt_dlp/extractor/rudovideo.py
738+yt_dlp/extractor/rule34video.py
739+yt_dlp/extractor/rumble.py
740+yt_dlp/extractor/rutube.py
741+yt_dlp/extractor/rutv.py
742+yt_dlp/extractor/ruutu.py
743+yt_dlp/extractor/ruv.py
744+yt_dlp/extractor/s4c.py
745+yt_dlp/extractor/safari.py
746+yt_dlp/extractor/saitosan.py
747+yt_dlp/extractor/samplefocus.py
748+yt_dlp/extractor/sapo.py
749+yt_dlp/extractor/sbs.py
750+yt_dlp/extractor/sbscokr.py
751+yt_dlp/extractor/screen9.py
752+yt_dlp/extractor/screencast.py
753+yt_dlp/extractor/screencastify.py
754+yt_dlp/extractor/screencastomatic.py
755+yt_dlp/extractor/scrippsnetworks.py
756+yt_dlp/extractor/scrolller.py
757+yt_dlp/extractor/scte.py
758+yt_dlp/extractor/sejmpl.py
759+yt_dlp/extractor/senalcolombia.py
760+yt_dlp/extractor/senategov.py
761+yt_dlp/extractor/sendtonews.py
762+yt_dlp/extractor/servus.py
763+yt_dlp/extractor/sevenplus.py
764+yt_dlp/extractor/sexu.py
765+yt_dlp/extractor/seznamzpravy.py
766+yt_dlp/extractor/shahid.py
767+yt_dlp/extractor/sharepoint.py
768+yt_dlp/extractor/sharevideos.py
769+yt_dlp/extractor/shemaroome.py
770+yt_dlp/extractor/showroomlive.py
771+yt_dlp/extractor/sibnet.py
772+yt_dlp/extractor/simplecast.py
773+yt_dlp/extractor/sina.py
774+yt_dlp/extractor/sixplay.py
775+yt_dlp/extractor/skeb.py
776+yt_dlp/extractor/sky.py
777+yt_dlp/extractor/skyit.py
778+yt_dlp/extractor/skylinewebcams.py
779+yt_dlp/extractor/skynewsarabia.py
780+yt_dlp/extractor/skynewsau.py
781+yt_dlp/extractor/slideshare.py
782+yt_dlp/extractor/slideslive.py
783+yt_dlp/extractor/slutload.py
784+yt_dlp/extractor/smotrim.py
785+yt_dlp/extractor/snotr.py
786+yt_dlp/extractor/sohu.py
787+yt_dlp/extractor/sonyliv.py
788+yt_dlp/extractor/soundcloud.py
789+yt_dlp/extractor/soundgasm.py
790+yt_dlp/extractor/southpark.py
791+yt_dlp/extractor/sovietscloset.py
792+yt_dlp/extractor/spankbang.py
793+yt_dlp/extractor/spiegel.py
794+yt_dlp/extractor/spike.py
795+yt_dlp/extractor/sport5.py
796+yt_dlp/extractor/sportbox.py
797+yt_dlp/extractor/sportdeutschland.py
798+yt_dlp/extractor/spotify.py
799+yt_dlp/extractor/spreaker.py
800+yt_dlp/extractor/springboardplatform.py
801+yt_dlp/extractor/sprout.py
802+yt_dlp/extractor/sproutvideo.py
803+yt_dlp/extractor/srgssr.py
804+yt_dlp/extractor/srmediathek.py
805+yt_dlp/extractor/stacommu.py
806+yt_dlp/extractor/stageplus.py
807+yt_dlp/extractor/stanfordoc.py
808+yt_dlp/extractor/startrek.py
809+yt_dlp/extractor/startv.py
810+yt_dlp/extractor/steam.py
811+yt_dlp/extractor/stitcher.py
812+yt_dlp/extractor/storyfire.py
813+yt_dlp/extractor/streamable.py
814+yt_dlp/extractor/streamcz.py
815+yt_dlp/extractor/streetvoice.py
816+yt_dlp/extractor/stretchinternet.py
817+yt_dlp/extractor/stripchat.py
818+yt_dlp/extractor/stv.py
819+yt_dlp/extractor/substack.py
820+yt_dlp/extractor/sunporno.py
821+yt_dlp/extractor/sverigesradio.py
822+yt_dlp/extractor/svt.py
823+yt_dlp/extractor/swearnet.py
824+yt_dlp/extractor/syfy.py
825+yt_dlp/extractor/syvdk.py
826+yt_dlp/extractor/sztvhu.py
827+yt_dlp/extractor/tagesschau.py
828+yt_dlp/extractor/taptap.py
829+yt_dlp/extractor/tass.py
830+yt_dlp/extractor/tbs.py
831+yt_dlp/extractor/tbsjp.py
832+yt_dlp/extractor/teachable.py
833+yt_dlp/extractor/teachertube.py
834+yt_dlp/extractor/teachingchannel.py
835+yt_dlp/extractor/teamcoco.py
836+yt_dlp/extractor/teamtreehouse.py
837+yt_dlp/extractor/ted.py
838+yt_dlp/extractor/tele13.py
839+yt_dlp/extractor/tele5.py
840+yt_dlp/extractor/telebruxelles.py
841+yt_dlp/extractor/telecaribe.py
842+yt_dlp/extractor/telecinco.py
843+yt_dlp/extractor/telegraaf.py
844+yt_dlp/extractor/telegram.py
845+yt_dlp/extractor/telemb.py
846+yt_dlp/extractor/telemundo.py
847+yt_dlp/extractor/telequebec.py
848+yt_dlp/extractor/teletask.py
849+yt_dlp/extractor/telewebion.py
850+yt_dlp/extractor/tempo.py
851+yt_dlp/extractor/tencent.py
852+yt_dlp/extractor/tennistv.py
853+yt_dlp/extractor/tenplay.py
854+yt_dlp/extractor/testurl.py
855+yt_dlp/extractor/tf1.py
856+yt_dlp/extractor/tfo.py
857+yt_dlp/extractor/theguardian.py
858+yt_dlp/extractor/theholetv.py
859+yt_dlp/extractor/theintercept.py
860+yt_dlp/extractor/theplatform.py
861+yt_dlp/extractor/thestar.py
862+yt_dlp/extractor/thesun.py
863+yt_dlp/extractor/theweatherchannel.py
864+yt_dlp/extractor/thisamericanlife.py
865+yt_dlp/extractor/thisoldhouse.py
866+yt_dlp/extractor/thisvid.py
867+yt_dlp/extractor/threeqsdn.py
868+yt_dlp/extractor/threespeak.py
869+yt_dlp/extractor/tiktok.py
870+yt_dlp/extractor/tmz.py
871+yt_dlp/extractor/tnaflix.py
872+yt_dlp/extractor/toggle.py
873+yt_dlp/extractor/toggo.py
874+yt_dlp/extractor/tonline.py
875+yt_dlp/extractor/toongoggles.py
876+yt_dlp/extractor/toutv.py
877+yt_dlp/extractor/toypics.py
878+yt_dlp/extractor/traileraddict.py
879+yt_dlp/extractor/triller.py
880+yt_dlp/extractor/trovo.py
881+yt_dlp/extractor/trtcocuk.py
882+yt_dlp/extractor/trtworld.py
883+yt_dlp/extractor/trueid.py
884+yt_dlp/extractor/trunews.py
885+yt_dlp/extractor/truth.py
886+yt_dlp/extractor/trutv.py
887+yt_dlp/extractor/tube8.py
888+yt_dlp/extractor/tubetugraz.py
889+yt_dlp/extractor/tubitv.py
890+yt_dlp/extractor/tumblr.py
891+yt_dlp/extractor/tunein.py
892+yt_dlp/extractor/turner.py
893+yt_dlp/extractor/tv2.py
894+yt_dlp/extractor/tv24ua.py
895+yt_dlp/extractor/tv2dk.py
896+yt_dlp/extractor/tv2hu.py
897+yt_dlp/extractor/tv4.py
898+yt_dlp/extractor/tv5mondeplus.py
899+yt_dlp/extractor/tv5unis.py
900+yt_dlp/extractor/tva.py
901+yt_dlp/extractor/tvanouvelles.py
902+yt_dlp/extractor/tvc.py
903+yt_dlp/extractor/tver.py
904+yt_dlp/extractor/tvigle.py
905+yt_dlp/extractor/tviplayer.py
906+yt_dlp/extractor/tvland.py
907+yt_dlp/extractor/tvn24.py
908+yt_dlp/extractor/tvnoe.py
909+yt_dlp/extractor/tvopengr.py
910+yt_dlp/extractor/tvp.py
911+yt_dlp/extractor/tvplay.py
912+yt_dlp/extractor/tvplayer.py
913+yt_dlp/extractor/tweakers.py
914+yt_dlp/extractor/twentymin.py
915+yt_dlp/extractor/twentythreevideo.py
916+yt_dlp/extractor/twitcasting.py
917+yt_dlp/extractor/twitch.py
918+yt_dlp/extractor/twitter.py
919+yt_dlp/extractor/txxx.py
920+yt_dlp/extractor/udemy.py
921+yt_dlp/extractor/udn.py
922+yt_dlp/extractor/ufctv.py
923+yt_dlp/extractor/ukcolumn.py
924+yt_dlp/extractor/uktvplay.py
925+yt_dlp/extractor/umg.py
926+yt_dlp/extractor/unistra.py
927+yt_dlp/extractor/unity.py
928+yt_dlp/extractor/unsupported.py
929+yt_dlp/extractor/uol.py
930+yt_dlp/extractor/uplynk.py
931+yt_dlp/extractor/urort.py
932+yt_dlp/extractor/urplay.py
933+yt_dlp/extractor/usanetwork.py
934+yt_dlp/extractor/usatoday.py
935+yt_dlp/extractor/ustream.py
936+yt_dlp/extractor/ustudio.py
937+yt_dlp/extractor/utreon.py
938+yt_dlp/extractor/varzesh3.py
939+yt_dlp/extractor/vbox7.py
940+yt_dlp/extractor/veo.py
941+yt_dlp/extractor/veoh.py
942+yt_dlp/extractor/vesti.py
943+yt_dlp/extractor/vevo.py
944+yt_dlp/extractor/vgtv.py
945+yt_dlp/extractor/vh1.py
946+yt_dlp/extractor/vice.py
947+yt_dlp/extractor/viddler.py
948+yt_dlp/extractor/videa.py
949+yt_dlp/extractor/videocampus_sachsen.py
950+yt_dlp/extractor/videodetective.py
951+yt_dlp/extractor/videofyme.py
952+yt_dlp/extractor/videoken.py
953+yt_dlp/extractor/videomore.py
954+yt_dlp/extractor/videopress.py
955+yt_dlp/extractor/vidio.py
956+yt_dlp/extractor/vidlii.py
957+yt_dlp/extractor/vidly.py
958+yt_dlp/extractor/vidyard.py
959+yt_dlp/extractor/viewlift.py
960+yt_dlp/extractor/viidea.py
961+yt_dlp/extractor/viki.py
962+yt_dlp/extractor/vimeo.py
963+yt_dlp/extractor/vimm.py
964+yt_dlp/extractor/vine.py
965+yt_dlp/extractor/viously.py
966+yt_dlp/extractor/viqeo.py
967+yt_dlp/extractor/viu.py
968+yt_dlp/extractor/vk.py
969+yt_dlp/extractor/vocaroo.py
970+yt_dlp/extractor/vodpl.py
971+yt_dlp/extractor/vodplatform.py
972+yt_dlp/extractor/voicy.py
973+yt_dlp/extractor/volejtv.py
974+yt_dlp/extractor/voxmedia.py
975+yt_dlp/extractor/vrt.py
976+yt_dlp/extractor/vtm.py
977+yt_dlp/extractor/vtv.py
978+yt_dlp/extractor/vuclip.py
979+yt_dlp/extractor/vvvvid.py
980+yt_dlp/extractor/walla.py
981+yt_dlp/extractor/washingtonpost.py
982+yt_dlp/extractor/wat.py
983+yt_dlp/extractor/wdr.py
984+yt_dlp/extractor/webcamerapl.py
985+yt_dlp/extractor/webcaster.py
986+yt_dlp/extractor/webofstories.py
987+yt_dlp/extractor/weibo.py
988+yt_dlp/extractor/weiqitv.py
989+yt_dlp/extractor/weverse.py
990+yt_dlp/extractor/wevidi.py
991+yt_dlp/extractor/weyyak.py
992+yt_dlp/extractor/whowatch.py
993+yt_dlp/extractor/whyp.py
994+yt_dlp/extractor/wikimedia.py
995+yt_dlp/extractor/wimbledon.py
996+yt_dlp/extractor/wimtv.py
997+yt_dlp/extractor/wistia.py
998+yt_dlp/extractor/wordpress.py
999+yt_dlp/extractor/worldstarhiphop.py
1000+yt_dlp/extractor/wppilot.py
1001+yt_dlp/extractor/wrestleuniverse.py
1002+yt_dlp/extractor/wsj.py
1003+yt_dlp/extractor/wwe.py
1004+yt_dlp/extractor/wykop.py
1005+yt_dlp/extractor/xanimu.py
1006+yt_dlp/extractor/xboxclips.py
1007+yt_dlp/extractor/xhamster.py
1008+yt_dlp/extractor/xiaohongshu.py
1009+yt_dlp/extractor/ximalaya.py
1010+yt_dlp/extractor/xinpianchang.py
1011+yt_dlp/extractor/xminus.py
1012+yt_dlp/extractor/xnxx.py
1013+yt_dlp/extractor/xstream.py
1014+yt_dlp/extractor/xvideos.py
1015+yt_dlp/extractor/xxxymovies.py
1016+yt_dlp/extractor/yahoo.py
1017+yt_dlp/extractor/yandexdisk.py
1018+yt_dlp/extractor/yandexmusic.py
1019+yt_dlp/extractor/yandexvideo.py
1020+yt_dlp/extractor/yapfiles.py
1021+yt_dlp/extractor/yappy.py
1022+yt_dlp/extractor/yle_areena.py
1023+yt_dlp/extractor/youjizz.py
1024+yt_dlp/extractor/youku.py
1025+yt_dlp/extractor/younow.py
1026+yt_dlp/extractor/youporn.py
1027+yt_dlp/extractor/youtube.py
1028+yt_dlp/extractor/zaiko.py
1029+yt_dlp/extractor/zapiks.py
1030+yt_dlp/extractor/zattoo.py
1031+yt_dlp/extractor/zdf.py
1032+yt_dlp/extractor/zee5.py
1033+yt_dlp/extractor/zeenews.py
1034+yt_dlp/extractor/zenporn.py
1035+yt_dlp/extractor/zetland.py
1036+yt_dlp/extractor/zhihu.py
1037+yt_dlp/extractor/zingmp3.py
1038+yt_dlp/extractor/zoom.py
1039+yt_dlp/extractor/zype.py
1040+yt_dlp/jsinterp.py
1041+yt_dlp/minicurses.py
1042+yt_dlp/networking/__init__.py
1043+yt_dlp/networking/_curlcffi.py
1044+yt_dlp/networking/_helper.py
1045+yt_dlp/networking/_requests.py
1046+yt_dlp/networking/_urllib.py
1047+yt_dlp/networking/_websockets.py
1048+yt_dlp/networking/common.py
1049+yt_dlp/networking/exceptions.py
1050+yt_dlp/networking/impersonate.py
1051+yt_dlp/networking/websocket.py
1052+yt_dlp/options.py
1053+yt_dlp/plugins.py
1054+yt_dlp/postprocessor/__init__.py
1055+yt_dlp/postprocessor/common.py
1056+yt_dlp/postprocessor/embedthumbnail.py
1057+yt_dlp/postprocessor/exec.py
1058+yt_dlp/postprocessor/ffmpeg.py
1059+yt_dlp/postprocessor/metadataparser.py
1060+yt_dlp/postprocessor/modify_chapters.py
1061+yt_dlp/postprocessor/movefilesafterdownload.py
1062+yt_dlp/postprocessor/sponskrub.py
1063+yt_dlp/postprocessor/sponsorblock.py
1064+yt_dlp/postprocessor/xattrpp.py
1065+yt_dlp/socks.py
1066+yt_dlp/update.py
1067+yt_dlp/utils/__init__.py
1068+yt_dlp/utils/_deprecated.py
1069+yt_dlp/utils/_legacy.py
1070+yt_dlp/utils/_utils.py
1071+yt_dlp/utils/networking.py
1072+yt_dlp/utils/progress.py
1073+yt_dlp/utils/traversal.py
1074+yt_dlp/version.py
1075+yt_dlp/webvtt.py
+1,
-0
1@@ -0,0 +1 @@
2+e08331fb9a36eba56b4efd074b5b25fbf08413e9cb47009a28ecbffe47150310 yt-dlp.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+url = "https://github.com/yt-dlp/yt-dlp/releases/download/2024.08.06/yt-dlp.tar.gz"
+1,
-0
1@@ -0,0 +1 @@
2+2024.08.06 r0
+6,
-0
1@@ -0,0 +1,6 @@
2+#!/bin/python
3+
4+import yt_dlp
5+
6+if __name__ == '__main__':
7+ yt_dlp.main()
M
sets.lua
+1,
-0
1@@ -65,6 +65,7 @@ return {
2 'ffmpeg',
3 'mpv',
4 'tinyalsa',
5+ 'yt-dlp',
6 },
7 desktop={
8 'liberation-fonts',