mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[cleanup] Sort imports
Using https://github.com/PyCQA/isort isort -m VERTICAL_HANGING_INDENT --py 36 -l 80 --rr -n --tc .
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -82,6 +82,7 @@ updates_key.pem | |||||||
| *.egg-info | *.egg-info | ||||||
| .tox | .tox | ||||||
| *.class | *.class | ||||||
|  | *.isorted | ||||||
|  |  | ||||||
| # Generated | # Generated | ||||||
| AUTHORS | AUTHORS | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import os | import os | ||||||
| from os.path import dirname as dirn |  | ||||||
| import sys | import sys | ||||||
|  | from os.path import dirname as dirn | ||||||
| 
 | 
 | ||||||
| sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
| import yt_dlp | import yt_dlp | ||||||
|   | |||||||
| @@ -10,11 +10,12 @@ pass the list filename as the only argument | |||||||
| # Allow direct execution | # Allow direct execution | ||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import gettestcases | from test.helper import gettestcases | ||||||
| from yt_dlp.utils import compat_urllib_parse_urlparse | 
 | ||||||
| from yt_dlp.utils import compat_urllib_request | from yt_dlp.utils import compat_urllib_parse_urlparse, compat_urllib_request | ||||||
| 
 | 
 | ||||||
| if len(sys.argv) > 1: | if len(sys.argv) > 1: | ||||||
|     METHOD = 'LIST' |     METHOD = 'LIST' | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import optparse | import optparse | ||||||
| import os | import os | ||||||
| from os.path import dirname as dirn |  | ||||||
| import sys | import sys | ||||||
|  | from os.path import dirname as dirn | ||||||
| 
 | 
 | ||||||
| sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
| import yt_dlp | import yt_dlp | ||||||
|   | |||||||
| @@ -1,13 +1,13 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import codecs | import codecs | ||||||
| import subprocess |  | ||||||
| 
 |  | ||||||
| import os | import os | ||||||
|  | import subprocess | ||||||
| import sys | import sys | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from yt_dlp.utils import intlist_to_bytes |  | ||||||
| from yt_dlp.aes import aes_encrypt, key_expansion | from yt_dlp.aes import aes_encrypt, key_expansion | ||||||
|  | from yt_dlp.utils import intlist_to_bytes | ||||||
| 
 | 
 | ||||||
| secret_msg = b'Secret message goes here' | secret_msg = b'Secret message goes here' | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| from inspect import getsource |  | ||||||
| import os | import os | ||||||
| from os.path import dirname as dirn |  | ||||||
| import sys | import sys | ||||||
|  | from inspect import getsource | ||||||
|  | from os.path import dirname as dirn | ||||||
| 
 | 
 | ||||||
| sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -2,8 +2,8 @@ | |||||||
| 
 | 
 | ||||||
| # yt-dlp --help | make_readme.py | # yt-dlp --help | make_readme.py | ||||||
| # This must be run in a console of correct width | # This must be run in a console of correct width | ||||||
| import sys |  | ||||||
| import re | import re | ||||||
|  | import sys | ||||||
| 
 | 
 | ||||||
| README_FILE = 'README.md' | README_FILE = 'README.md' | ||||||
| helptext = sys.stdin.read() | helptext = sys.stdin.read() | ||||||
|   | |||||||
| @@ -3,7 +3,6 @@ import optparse | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # Import yt_dlp | # Import yt_dlp | ||||||
| ROOT_DIR = os.path.join(os.path.dirname(__file__), '..') | ROOT_DIR = os.path.join(os.path.dirname(__file__), '..') | ||||||
| sys.path.insert(0, ROOT_DIR) | sys.path.insert(0, ROOT_DIR) | ||||||
|   | |||||||
| @@ -8,7 +8,6 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |||||||
| 
 | 
 | ||||||
| from yt_dlp.compat import compat_urllib_request | from yt_dlp.compat import compat_urllib_request | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # usage: python3 ./devscripts/update-formulae.py <path-to-formulae-rb> <version> | # usage: python3 ./devscripts/update-formulae.py <path-to-formulae-rb> <version> | ||||||
| # version can be either 0-aligned (yt-dlp version) or normalized (PyPl version) | # version can be either 0-aligned (yt-dlp version) or normalized (PyPl version) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| from datetime import datetime |  | ||||||
| import sys |  | ||||||
| import subprocess | import subprocess | ||||||
| 
 | import sys | ||||||
|  | from datetime import datetime | ||||||
| 
 | 
 | ||||||
| with open('yt_dlp/version.py') as f: | with open('yt_dlp/version.py') as f: | ||||||
|     exec(compile(f.read(), 'yt_dlp/version.py', 'exec')) |     exec(compile(f.read(), 'yt_dlp/version.py', 'exec')) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import os | import os | ||||||
| from os.path import dirname as dirn |  | ||||||
| import sys | import sys | ||||||
|  | from os.path import dirname as dirn | ||||||
| 
 | 
 | ||||||
| sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | sys.path.insert(0, dirn(dirn(os.path.abspath(__file__)))) | ||||||
| import yt_dlp | import yt_dlp | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								pyinst.py
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								pyinst.py
									
									
									
									
									
								
							| @@ -2,14 +2,20 @@ | |||||||
| import os | import os | ||||||
| import platform | import platform | ||||||
| import sys | import sys | ||||||
| from PyInstaller.utils.hooks import collect_submodules |  | ||||||
| 
 | 
 | ||||||
|  | from PyInstaller.utils.hooks import collect_submodules | ||||||
| 
 | 
 | ||||||
| OS_NAME = platform.system() | OS_NAME = platform.system() | ||||||
| if OS_NAME == 'Windows': | if OS_NAME == 'Windows': | ||||||
|     from PyInstaller.utils.win32.versioninfo import ( |     from PyInstaller.utils.win32.versioninfo import ( | ||||||
|         VarStruct, VarFileInfo, StringStruct, StringTable, |         FixedFileInfo, | ||||||
|         StringFileInfo, FixedFileInfo, VSVersionInfo, SetVersion, |         SetVersion, | ||||||
|  |         StringFileInfo, | ||||||
|  |         StringStruct, | ||||||
|  |         StringTable, | ||||||
|  |         VarFileInfo, | ||||||
|  |         VarStruct, | ||||||
|  |         VSVersionInfo, | ||||||
|     ) |     ) | ||||||
| elif OS_NAME == 'Darwin': | elif OS_NAME == 'Darwin': | ||||||
|     pass |     pass | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								setup.py
									
									
									
									
									
								
							| @@ -1,13 +1,13 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import os.path | import os.path | ||||||
| import warnings |  | ||||||
| import sys | import sys | ||||||
|  | import warnings | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     from setuptools import setup, Command, find_packages |     from setuptools import Command, find_packages, setup | ||||||
|     setuptools_available = True |     setuptools_available = True | ||||||
| except ImportError: | except ImportError: | ||||||
|     from distutils.core import setup, Command |     from distutils.core import Command, setup | ||||||
|     setuptools_available = False |     setuptools_available = False | ||||||
| from distutils.spawn import spawn | from distutils.spawn import spawn | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,21 +3,14 @@ import hashlib | |||||||
| import json | import json | ||||||
| import os.path | import os.path | ||||||
| import re | import re | ||||||
| import types |  | ||||||
| import ssl | import ssl | ||||||
| import sys | import sys | ||||||
|  | import types | ||||||
| 
 | 
 | ||||||
| import yt_dlp.extractor | import yt_dlp.extractor | ||||||
| from yt_dlp import YoutubeDL | from yt_dlp import YoutubeDL | ||||||
| from yt_dlp.compat import ( | from yt_dlp.compat import compat_os_name, compat_str | ||||||
|     compat_os_name, | from yt_dlp.utils import preferredencoding, write_string | ||||||
|     compat_str, |  | ||||||
| ) |  | ||||||
| from yt_dlp.utils import ( |  | ||||||
|     preferredencoding, |  | ||||||
|     write_string, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| if 'pytest' in sys.modules: | if 'pytest' in sys.modules: | ||||||
|     import pytest |     import pytest | ||||||
|   | |||||||
| @@ -3,15 +3,21 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import FakeYDL, expect_dict, expect_value, http_server_port |  | ||||||
| from yt_dlp.compat import compat_etree_fromstring, compat_http_server |  | ||||||
| from yt_dlp.extractor.common import InfoExtractor |  | ||||||
| from yt_dlp.extractor import YoutubeIE, get_info_extractor |  | ||||||
| from yt_dlp.utils import encode_data_uri, strip_jsonp, ExtractorError, RegexNotFoundError |  | ||||||
| import threading | import threading | ||||||
|  | from test.helper import FakeYDL, expect_dict, expect_value, http_server_port | ||||||
| 
 | 
 | ||||||
|  | from yt_dlp.compat import compat_etree_fromstring, compat_http_server | ||||||
|  | from yt_dlp.extractor import YoutubeIE, get_info_extractor | ||||||
|  | from yt_dlp.extractor.common import InfoExtractor | ||||||
|  | from yt_dlp.utils import ( | ||||||
|  |     ExtractorError, | ||||||
|  |     RegexNotFoundError, | ||||||
|  |     encode_data_uri, | ||||||
|  |     strip_jsonp, | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| TEAPOT_RESPONSE_STATUS = 418 | TEAPOT_RESPONSE_STATUS = 418 | ||||||
| TEAPOT_RESPONSE_BODY = "<h1>418 I'm a teapot</h1>" | TEAPOT_RESPONSE_BODY = "<h1>418 I'm a teapot</h1>" | ||||||
|   | |||||||
| @@ -3,18 +3,29 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| import copy | import copy | ||||||
| import json | import json | ||||||
| 
 |  | ||||||
| from test.helper import FakeYDL, assertRegexpMatches | from test.helper import FakeYDL, assertRegexpMatches | ||||||
|  | 
 | ||||||
| from yt_dlp import YoutubeDL | from yt_dlp import YoutubeDL | ||||||
| from yt_dlp.compat import compat_os_name, compat_setenv, compat_str, compat_urllib_error | from yt_dlp.compat import ( | ||||||
|  |     compat_os_name, | ||||||
|  |     compat_setenv, | ||||||
|  |     compat_str, | ||||||
|  |     compat_urllib_error, | ||||||
|  | ) | ||||||
| from yt_dlp.extractor import YoutubeIE | from yt_dlp.extractor import YoutubeIE | ||||||
| from yt_dlp.extractor.common import InfoExtractor | from yt_dlp.extractor.common import InfoExtractor | ||||||
| from yt_dlp.postprocessor.common import PostProcessor | from yt_dlp.postprocessor.common import PostProcessor | ||||||
| from yt_dlp.utils import ExtractorError, int_or_none, match_filter_func, LazyList | from yt_dlp.utils import ( | ||||||
|  |     ExtractorError, | ||||||
|  |     LazyList, | ||||||
|  |     int_or_none, | ||||||
|  |     match_filter_func, | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| TEST_URL = 'http://localhost/sample.mp4' | TEST_URL = 'http://localhost/sample.mp4' | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import re | |||||||
| import sys | import sys | ||||||
| import tempfile | import tempfile | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from yt_dlp.utils import YoutubeDLCookieJar | from yt_dlp.utils import YoutubeDLCookieJar | ||||||
|   | |||||||
| @@ -3,26 +3,28 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
|  | import base64 | ||||||
|  | 
 | ||||||
| from yt_dlp.aes import ( | from yt_dlp.aes import ( | ||||||
|     aes_decrypt, |     BLOCK_SIZE_BYTES, | ||||||
|     aes_encrypt, |  | ||||||
|     aes_ecb_encrypt, |  | ||||||
|     aes_ecb_decrypt, |  | ||||||
|     aes_cbc_decrypt, |     aes_cbc_decrypt, | ||||||
|     aes_cbc_decrypt_bytes, |     aes_cbc_decrypt_bytes, | ||||||
|     aes_cbc_encrypt, |     aes_cbc_encrypt, | ||||||
|     aes_ctr_decrypt, |     aes_ctr_decrypt, | ||||||
|     aes_ctr_encrypt, |     aes_ctr_encrypt, | ||||||
|  |     aes_decrypt, | ||||||
|  |     aes_decrypt_text, | ||||||
|  |     aes_ecb_decrypt, | ||||||
|  |     aes_ecb_encrypt, | ||||||
|  |     aes_encrypt, | ||||||
|     aes_gcm_decrypt_and_verify, |     aes_gcm_decrypt_and_verify, | ||||||
|     aes_gcm_decrypt_and_verify_bytes, |     aes_gcm_decrypt_and_verify_bytes, | ||||||
|     aes_decrypt_text, |  | ||||||
|     BLOCK_SIZE_BYTES, |  | ||||||
| ) | ) | ||||||
| from yt_dlp.compat import compat_pycrypto_AES | from yt_dlp.compat import compat_pycrypto_AES | ||||||
| from yt_dlp.utils import bytes_to_intlist, intlist_to_bytes | from yt_dlp.utils import bytes_to_intlist, intlist_to_bytes | ||||||
| import base64 |  | ||||||
| 
 | 
 | ||||||
| # the encrypted data can be generate with 'devscripts/generate_aes_testdata.py' | # the encrypted data can be generate with 'devscripts/generate_aes_testdata.py' | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,9 +3,10 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import try_rm, is_download_test | from test.helper import is_download_test, try_rm | ||||||
| 
 | 
 | ||||||
| from yt_dlp import YoutubeDL | from yt_dlp import YoutubeDL | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,19 +1,16 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| # Allow direct execution | # Allow direct execution | ||||||
|  | import collections | ||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
| import collections | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| from test.helper import gettestcases | from test.helper import gettestcases | ||||||
| 
 | 
 | ||||||
| from yt_dlp.extractor import ( | from yt_dlp.extractor import FacebookIE, YoutubeIE, gen_extractors | ||||||
|     FacebookIE, |  | ||||||
|     gen_extractors, |  | ||||||
|     YoutubeIE, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TestAllURLsMatching(unittest.TestCase): | class TestAllURLsMatching(unittest.TestCase): | ||||||
|   | |||||||
| @@ -1,14 +1,15 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import shutil |  | ||||||
| 
 |  | ||||||
| # Allow direct execution | # Allow direct execution | ||||||
| import os | import os | ||||||
|  | import shutil | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| from test.helper import FakeYDL | from test.helper import FakeYDL | ||||||
|  | 
 | ||||||
| from yt_dlp.cache import Cache | from yt_dlp.cache import Cache | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,14 +3,15 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| from yt_dlp.compat import ( | from yt_dlp.compat import ( | ||||||
|     compat_getenv, |  | ||||||
|     compat_setenv, |  | ||||||
|     compat_etree_fromstring, |     compat_etree_fromstring, | ||||||
|     compat_expanduser, |     compat_expanduser, | ||||||
|  |     compat_getenv, | ||||||
|  |     compat_setenv, | ||||||
|     compat_str, |     compat_str, | ||||||
|     compat_struct_unpack, |     compat_struct_unpack, | ||||||
|     compat_urllib_parse_unquote, |     compat_urllib_parse_unquote, | ||||||
|   | |||||||
| @@ -6,10 +6,10 @@ from yt_dlp.cookies import ( | |||||||
|     LinuxChromeCookieDecryptor, |     LinuxChromeCookieDecryptor, | ||||||
|     MacChromeCookieDecryptor, |     MacChromeCookieDecryptor, | ||||||
|     WindowsChromeCookieDecryptor, |     WindowsChromeCookieDecryptor, | ||||||
|     parse_safari_cookies, |  | ||||||
|     pbkdf2_sha1, |  | ||||||
|     _get_linux_desktop_environment, |     _get_linux_desktop_environment, | ||||||
|     _LinuxDesktopEnvironment, |     _LinuxDesktopEnvironment, | ||||||
|  |     parse_safari_cookies, | ||||||
|  |     pbkdf2_sha1, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,8 +1,12 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| # Allow direct execution | # Allow direct execution | ||||||
|  | import hashlib | ||||||
|  | import json | ||||||
| import os | import os | ||||||
|  | import socket | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import ( | from test.helper import ( | ||||||
| @@ -16,24 +20,19 @@ from test.helper import ( | |||||||
|     try_rm, |     try_rm, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| import hashlib |  | ||||||
| import json |  | ||||||
| import socket |  | ||||||
| 
 |  | ||||||
| import yt_dlp.YoutubeDL | import yt_dlp.YoutubeDL | ||||||
| from yt_dlp.compat import ( | from yt_dlp.compat import ( | ||||||
|     compat_http_client, |     compat_http_client, | ||||||
|     compat_urllib_error, |  | ||||||
|     compat_HTTPError, |     compat_HTTPError, | ||||||
|  |     compat_urllib_error, | ||||||
| ) | ) | ||||||
|  | from yt_dlp.extractor import get_info_extractor | ||||||
| from yt_dlp.utils import ( | from yt_dlp.utils import ( | ||||||
|     DownloadError, |     DownloadError, | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     format_bytes, |  | ||||||
|     UnavailableVideoError, |     UnavailableVideoError, | ||||||
|  |     format_bytes, | ||||||
| ) | ) | ||||||
| from yt_dlp.extractor import get_info_extractor |  | ||||||
| 
 | 
 | ||||||
| RETRIES = 3 | RETRIES = 3 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -4,14 +4,16 @@ import os | |||||||
| import re | import re | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
|  | import threading | ||||||
| from test.helper import http_server_port, try_rm | from test.helper import http_server_port, try_rm | ||||||
|  | 
 | ||||||
| from yt_dlp import YoutubeDL | from yt_dlp import YoutubeDL | ||||||
| from yt_dlp.compat import compat_http_server | from yt_dlp.compat import compat_http_server | ||||||
| from yt_dlp.downloader.http import HttpFD | from yt_dlp.downloader.http import HttpFD | ||||||
| from yt_dlp.utils import encodeFilename | from yt_dlp.utils import encodeFilename | ||||||
| import threading |  | ||||||
| 
 | 
 | ||||||
| TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import unittest |  | ||||||
| 
 |  | ||||||
| import sys |  | ||||||
| import os | import os | ||||||
| import subprocess | import subprocess | ||||||
|  | import sys | ||||||
|  | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from yt_dlp.utils import encodeArgument | from yt_dlp.utils import encodeArgument | ||||||
|   | |||||||
| @@ -3,13 +3,15 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import http_server_port |  | ||||||
| from yt_dlp import YoutubeDL |  | ||||||
| from yt_dlp.compat import compat_http_server, compat_urllib_request |  | ||||||
| import ssl | import ssl | ||||||
| import threading | import threading | ||||||
|  | from test.helper import http_server_port | ||||||
|  | 
 | ||||||
|  | from yt_dlp import YoutubeDL | ||||||
|  | from yt_dlp.compat import compat_http_server, compat_urllib_request | ||||||
| 
 | 
 | ||||||
| TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,9 +3,11 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import FakeYDL, is_download_test | from test.helper import FakeYDL, is_download_test | ||||||
|  | 
 | ||||||
| from yt_dlp.extractor import IqiyiIE | from yt_dlp.extractor import IqiyiIE | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from yt_dlp.jsinterp import JSInterpreter | from yt_dlp.jsinterp import JSInterpreter | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,14 +1,14 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import os | import os | ||||||
| from os.path import join |  | ||||||
| import subprocess | import subprocess | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | from os.path import join | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import is_download_test, try_rm | from test.helper import is_download_test, try_rm | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | ||||||
| download_file = join(root_dir, 'test.webm') | download_file = join(root_dir, 'test.webm') | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -2,9 +2,11 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import get_params, try_rm, is_download_test | from test.helper import get_params, is_download_test, try_rm | ||||||
|  | 
 | ||||||
| import yt_dlp.YoutubeDL | import yt_dlp.YoutubeDL | ||||||
| from yt_dlp.utils import DownloadError | from yt_dlp.utils import DownloadError | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ from yt_dlp.postprocessor import ( | |||||||
|     FFmpegThumbnailsConvertorPP, |     FFmpegThumbnailsConvertorPP, | ||||||
|     MetadataFromFieldPP, |     MetadataFromFieldPP, | ||||||
|     MetadataParserPP, |     MetadataParserPP, | ||||||
|     ModifyChaptersPP |     ModifyChaptersPP, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,20 +3,14 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| import random | import random | ||||||
| import subprocess | import subprocess | ||||||
|  | from test.helper import FakeYDL, get_params, is_download_test | ||||||
| 
 | 
 | ||||||
| from test.helper import ( | from yt_dlp.compat import compat_str, compat_urllib_request | ||||||
|     FakeYDL, |  | ||||||
|     get_params, |  | ||||||
|     is_download_test, |  | ||||||
| ) |  | ||||||
| from yt_dlp.compat import ( |  | ||||||
|     compat_str, |  | ||||||
|     compat_urllib_request, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @is_download_test | @is_download_test | ||||||
|   | |||||||
| @@ -3,29 +3,29 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import FakeYDL, md5, is_download_test | from test.helper import FakeYDL, is_download_test, md5 | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| from yt_dlp.extractor import ( | from yt_dlp.extractor import ( | ||||||
|     YoutubeIE, |     NPOIE, | ||||||
|  |     NRKTVIE, | ||||||
|  |     PBSIE, | ||||||
|  |     CeskaTelevizeIE, | ||||||
|  |     ComedyCentralIE, | ||||||
|     DailymotionIE, |     DailymotionIE, | ||||||
|  |     DemocracynowIE, | ||||||
|  |     LyndaIE, | ||||||
|  |     RaiPlayIE, | ||||||
|  |     RTVEALaCartaIE, | ||||||
|     TedTalkIE, |     TedTalkIE, | ||||||
|  |     ThePlatformFeedIE, | ||||||
|  |     ThePlatformIE, | ||||||
|  |     VikiIE, | ||||||
|     VimeoIE, |     VimeoIE, | ||||||
|     WallaIE, |     WallaIE, | ||||||
|     CeskaTelevizeIE, |     YoutubeIE, | ||||||
|     LyndaIE, |  | ||||||
|     NPOIE, |  | ||||||
|     PBSIE, |  | ||||||
|     ComedyCentralIE, |  | ||||||
|     NRKTVIE, |  | ||||||
|     RaiPlayIE, |  | ||||||
|     VikiIE, |  | ||||||
|     ThePlatformIE, |  | ||||||
|     ThePlatformFeedIE, |  | ||||||
|     RTVEALaCartaIE, |  | ||||||
|     DemocracynowIE, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,10 +3,12 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  |  | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
|  |  | ||||||
| import json | import json | ||||||
|  |  | ||||||
| from yt_dlp.update import rsa_verify | from yt_dlp.update import rsa_verify | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -12,75 +13,95 @@ import itertools | |||||||
| import json | import json | ||||||
| import xml.etree.ElementTree | import xml.etree.ElementTree | ||||||
| 
 | 
 | ||||||
|  | from yt_dlp.compat import ( | ||||||
|  |     compat_chr, | ||||||
|  |     compat_etree_fromstring, | ||||||
|  |     compat_getenv, | ||||||
|  |     compat_HTMLParseError, | ||||||
|  |     compat_os_name, | ||||||
|  |     compat_setenv, | ||||||
|  | ) | ||||||
| from yt_dlp.utils import ( | from yt_dlp.utils import ( | ||||||
|  |     Config, | ||||||
|  |     DateRange, | ||||||
|  |     ExtractorError, | ||||||
|  |     InAdvancePagedList, | ||||||
|  |     LazyList, | ||||||
|  |     OnDemandPagedList, | ||||||
|     age_restricted, |     age_restricted, | ||||||
|     args_to_str, |     args_to_str, | ||||||
|     encode_base_n, |     base_url, | ||||||
|     caesar, |     caesar, | ||||||
|     clean_html, |     clean_html, | ||||||
|     clean_podcast_url, |     clean_podcast_url, | ||||||
|     Config, |     cli_bool_option, | ||||||
|  |     cli_option, | ||||||
|  |     cli_valueless_option, | ||||||
|     date_from_str, |     date_from_str, | ||||||
|     datetime_from_str, |     datetime_from_str, | ||||||
|     DateRange, |  | ||||||
|     detect_exe_version, |     detect_exe_version, | ||||||
|     determine_ext, |     determine_ext, | ||||||
|  |     dfxp2srt, | ||||||
|     dict_get, |     dict_get, | ||||||
|  |     encode_base_n, | ||||||
|     encode_compat_str, |     encode_compat_str, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     escape_rfc3986, |     escape_rfc3986, | ||||||
|     escape_url, |     escape_url, | ||||||
|  |     expand_path, | ||||||
|     extract_attributes, |     extract_attributes, | ||||||
|     ExtractorError, |  | ||||||
|     find_xpath_attr, |     find_xpath_attr, | ||||||
|     fix_xml_ampersands, |     fix_xml_ampersands, | ||||||
|     format_bytes, |  | ||||||
|     float_or_none, |     float_or_none, | ||||||
|     get_element_by_class, |     format_bytes, | ||||||
|     get_element_by_attribute, |     get_element_by_attribute, | ||||||
|     get_elements_by_class, |     get_element_by_class, | ||||||
|     get_elements_by_attribute, |  | ||||||
|     get_element_html_by_class, |  | ||||||
|     get_element_html_by_attribute, |     get_element_html_by_attribute, | ||||||
|     get_elements_html_by_class, |     get_element_html_by_class, | ||||||
|     get_elements_html_by_attribute, |  | ||||||
|     get_elements_text_and_html_by_attribute, |  | ||||||
|     get_element_text_and_html_by_tag, |     get_element_text_and_html_by_tag, | ||||||
|     InAdvancePagedList, |     get_elements_by_attribute, | ||||||
|  |     get_elements_by_class, | ||||||
|  |     get_elements_html_by_attribute, | ||||||
|  |     get_elements_html_by_class, | ||||||
|  |     get_elements_text_and_html_by_attribute, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     intlist_to_bytes, |     intlist_to_bytes, | ||||||
|  |     iri_to_uri, | ||||||
|     is_html, |     is_html, | ||||||
|     js_to_json, |     js_to_json, | ||||||
|     limit_length, |     limit_length, | ||||||
|     locked_file, |     locked_file, | ||||||
|  |     lowercase_escape, | ||||||
|  |     match_str, | ||||||
|     merge_dicts, |     merge_dicts, | ||||||
|     mimetype2ext, |     mimetype2ext, | ||||||
|     month_by_name, |     month_by_name, | ||||||
|     multipart_encode, |     multipart_encode, | ||||||
|     ohdave_rsa_encrypt, |     ohdave_rsa_encrypt, | ||||||
|     OnDemandPagedList, |  | ||||||
|     orderedSet, |     orderedSet, | ||||||
|     parse_age_limit, |     parse_age_limit, | ||||||
|  |     parse_bitrate, | ||||||
|  |     parse_codecs, | ||||||
|  |     parse_count, | ||||||
|  |     parse_dfxp_time_expr, | ||||||
|     parse_duration, |     parse_duration, | ||||||
|     parse_filesize, |     parse_filesize, | ||||||
|     parse_count, |  | ||||||
|     parse_iso8601, |     parse_iso8601, | ||||||
|     parse_resolution, |  | ||||||
|     parse_bitrate, |  | ||||||
|     parse_qs, |     parse_qs, | ||||||
|  |     parse_resolution, | ||||||
|     pkcs1pad, |     pkcs1pad, | ||||||
|  |     prepend_extension, | ||||||
|     read_batch_urls, |     read_batch_urls, | ||||||
|  |     remove_end, | ||||||
|  |     remove_quotes, | ||||||
|  |     remove_start, | ||||||
|  |     render_table, | ||||||
|  |     replace_extension, | ||||||
|  |     rot47, | ||||||
|     sanitize_filename, |     sanitize_filename, | ||||||
|     sanitize_path, |     sanitize_path, | ||||||
|     sanitize_url, |     sanitize_url, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     expand_path, |  | ||||||
|     prepend_extension, |  | ||||||
|     replace_extension, |  | ||||||
|     remove_start, |  | ||||||
|     remove_end, |  | ||||||
|     remove_quotes, |  | ||||||
|     rot47, |  | ||||||
|     shell_quote, |     shell_quote, | ||||||
|     smuggle_url, |     smuggle_url, | ||||||
|     str_to_int, |     str_to_int, | ||||||
| @@ -92,38 +113,18 @@ from yt_dlp.utils import ( | |||||||
|     unified_strdate, |     unified_strdate, | ||||||
|     unified_timestamp, |     unified_timestamp, | ||||||
|     unsmuggle_url, |     unsmuggle_url, | ||||||
|  |     update_url_query, | ||||||
|     uppercase_escape, |     uppercase_escape, | ||||||
|     lowercase_escape, |  | ||||||
|     url_basename, |     url_basename, | ||||||
|     url_or_none, |     url_or_none, | ||||||
|     base_url, |  | ||||||
|     urljoin, |  | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
|  |     urljoin, | ||||||
|     urshift, |     urshift, | ||||||
|     update_url_query, |  | ||||||
|     version_tuple, |     version_tuple, | ||||||
|     xpath_with_ns, |     xpath_attr, | ||||||
|     xpath_element, |     xpath_element, | ||||||
|     xpath_text, |     xpath_text, | ||||||
|     xpath_attr, |     xpath_with_ns, | ||||||
|     render_table, |  | ||||||
|     match_str, |  | ||||||
|     parse_dfxp_time_expr, |  | ||||||
|     dfxp2srt, |  | ||||||
|     cli_option, |  | ||||||
|     cli_valueless_option, |  | ||||||
|     cli_bool_option, |  | ||||||
|     parse_codecs, |  | ||||||
|     iri_to_uri, |  | ||||||
|     LazyList, |  | ||||||
| ) |  | ||||||
| from yt_dlp.compat import ( |  | ||||||
|     compat_chr, |  | ||||||
|     compat_etree_fromstring, |  | ||||||
|     compat_getenv, |  | ||||||
|     compat_HTMLParseError, |  | ||||||
|     compat_os_name, |  | ||||||
|     compat_setenv, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import unittest |  | ||||||
| 
 |  | ||||||
| import sys |  | ||||||
| import os | import os | ||||||
| import subprocess | import subprocess | ||||||
|  | import sys | ||||||
|  | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | ||||||
|   | |||||||
| @@ -3,17 +3,15 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  |  | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import get_params, try_rm, is_download_test |  | ||||||
|  |  | ||||||
|  |  | ||||||
| import io | import io | ||||||
|  |  | ||||||
| import xml.etree.ElementTree | import xml.etree.ElementTree | ||||||
|  | from test.helper import get_params, is_download_test, try_rm | ||||||
|  |  | ||||||
| import yt_dlp.YoutubeDL |  | ||||||
| import yt_dlp.extractor | import yt_dlp.extractor | ||||||
|  | import yt_dlp.YoutubeDL | ||||||
|  |  | ||||||
|  |  | ||||||
| class YoutubeDL(yt_dlp.YoutubeDL): | class YoutubeDL(yt_dlp.YoutubeDL): | ||||||
|   | |||||||
| @@ -3,14 +3,12 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| from test.helper import FakeYDL, is_download_test | from test.helper import FakeYDL, is_download_test | ||||||
| 
 | 
 | ||||||
| from yt_dlp.extractor import ( | from yt_dlp.extractor import YoutubeIE, YoutubeTabIE | ||||||
|     YoutubeIE, |  | ||||||
|     YoutubeTabIE, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @is_download_test | @is_download_test | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,16 +3,17 @@ | |||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import unittest | import unittest | ||||||
|  | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| 
 | 
 | ||||||
| import re | import re | ||||||
| import string | import string | ||||||
| import urllib.request | import urllib.request | ||||||
| 
 |  | ||||||
| from test.helper import FakeYDL, is_download_test | from test.helper import FakeYDL, is_download_test | ||||||
|  | 
 | ||||||
|  | from yt_dlp.compat import compat_str | ||||||
| from yt_dlp.extractor import YoutubeIE | from yt_dlp.extractor import YoutubeIE | ||||||
| from yt_dlp.jsinterp import JSInterpreter | from yt_dlp.jsinterp import JSInterpreter | ||||||
| from yt_dlp.compat import compat_str |  | ||||||
| 
 | 
 | ||||||
| _SIG_TESTS = [ | _SIG_TESTS = [ | ||||||
|     ( |     ( | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ import locale | |||||||
| import operator | import operator | ||||||
| import os | import os | ||||||
| import platform | import platform | ||||||
|  | import random | ||||||
| import re | import re | ||||||
| import shutil | import shutil | ||||||
| import subprocess | import subprocess | ||||||
| @@ -20,13 +21,12 @@ import tempfile | |||||||
| import time | import time | ||||||
| import tokenize | import tokenize | ||||||
| import traceback | import traceback | ||||||
| import random |  | ||||||
| import unicodedata | import unicodedata | ||||||
| import urllib.request | import urllib.request | ||||||
| 
 |  | ||||||
| from enum import Enum | from enum import Enum | ||||||
| from string import ascii_letters | from string import ascii_letters | ||||||
| 
 | 
 | ||||||
|  | from .cache import Cache | ||||||
| from .compat import ( | from .compat import ( | ||||||
|     compat_brotli, |     compat_brotli, | ||||||
|     compat_get_terminal_size, |     compat_get_terminal_size, | ||||||
| @@ -39,109 +39,15 @@ from .compat import ( | |||||||
|     windows_enable_vt_mode, |     windows_enable_vt_mode, | ||||||
| ) | ) | ||||||
| from .cookies import load_cookies | from .cookies import load_cookies | ||||||
| from .utils import ( | from .downloader import FFmpegFD, get_suitable_downloader, shorten_protocol_name | ||||||
|     age_restricted, |  | ||||||
|     args_to_str, |  | ||||||
|     ContentTooShortError, |  | ||||||
|     date_from_str, |  | ||||||
|     DateRange, |  | ||||||
|     DEFAULT_OUTTMPL, |  | ||||||
|     determine_ext, |  | ||||||
|     determine_protocol, |  | ||||||
|     DownloadCancelled, |  | ||||||
|     DownloadError, |  | ||||||
|     encode_compat_str, |  | ||||||
|     encodeFilename, |  | ||||||
|     EntryNotInPlaylist, |  | ||||||
|     error_to_compat_str, |  | ||||||
|     ExistingVideoReached, |  | ||||||
|     expand_path, |  | ||||||
|     ExtractorError, |  | ||||||
|     filter_dict, |  | ||||||
|     float_or_none, |  | ||||||
|     format_bytes, |  | ||||||
|     format_field, |  | ||||||
|     format_decimal_suffix, |  | ||||||
|     formatSeconds, |  | ||||||
|     GeoRestrictedError, |  | ||||||
|     get_domain, |  | ||||||
|     has_certifi, |  | ||||||
|     HEADRequest, |  | ||||||
|     InAdvancePagedList, |  | ||||||
|     int_or_none, |  | ||||||
|     iri_to_uri, |  | ||||||
|     ISO3166Utils, |  | ||||||
|     join_nonempty, |  | ||||||
|     LazyList, |  | ||||||
|     LINK_TEMPLATES, |  | ||||||
|     locked_file, |  | ||||||
|     make_dir, |  | ||||||
|     make_HTTPS_handler, |  | ||||||
|     MaxDownloadsReached, |  | ||||||
|     merge_headers, |  | ||||||
|     network_exceptions, |  | ||||||
|     NO_DEFAULT, |  | ||||||
|     number_of_digits, |  | ||||||
|     orderedSet, |  | ||||||
|     OUTTMPL_TYPES, |  | ||||||
|     PagedList, |  | ||||||
|     parse_filesize, |  | ||||||
|     PerRequestProxyHandler, |  | ||||||
|     platform_name, |  | ||||||
|     Popen, |  | ||||||
|     POSTPROCESS_WHEN, |  | ||||||
|     PostProcessingError, |  | ||||||
|     preferredencoding, |  | ||||||
|     prepend_extension, |  | ||||||
|     ReExtractInfo, |  | ||||||
|     register_socks_protocols, |  | ||||||
|     RejectedVideoReached, |  | ||||||
|     remove_terminal_sequences, |  | ||||||
|     render_table, |  | ||||||
|     replace_extension, |  | ||||||
|     SameFileError, |  | ||||||
|     sanitize_filename, |  | ||||||
|     sanitize_path, |  | ||||||
|     sanitize_url, |  | ||||||
|     sanitized_Request, |  | ||||||
|     std_headers, |  | ||||||
|     STR_FORMAT_RE_TMPL, |  | ||||||
|     STR_FORMAT_TYPES, |  | ||||||
|     str_or_none, |  | ||||||
|     strftime_or_none, |  | ||||||
|     subtitles_filename, |  | ||||||
|     supports_terminal_sequences, |  | ||||||
|     timetuple_from_msec, |  | ||||||
|     to_high_limit_path, |  | ||||||
|     traverse_obj, |  | ||||||
|     try_get, |  | ||||||
|     UnavailableVideoError, |  | ||||||
|     url_basename, |  | ||||||
|     variadic, |  | ||||||
|     version_tuple, |  | ||||||
|     write_json_file, |  | ||||||
|     write_string, |  | ||||||
|     YoutubeDLCookieProcessor, |  | ||||||
|     YoutubeDLHandler, |  | ||||||
|     YoutubeDLRedirectHandler, |  | ||||||
| ) |  | ||||||
| from .cache import Cache |  | ||||||
| from .minicurses import format_text |  | ||||||
| from .extractor import ( |  | ||||||
|     gen_extractor_classes, |  | ||||||
|     get_info_extractor, |  | ||||||
|     _LAZY_LOADER, |  | ||||||
|     _PLUGIN_CLASSES as plugin_extractors |  | ||||||
| ) |  | ||||||
| from .extractor.openload import PhantomJSwrapper |  | ||||||
| from .downloader import ( |  | ||||||
|     FFmpegFD, |  | ||||||
|     get_suitable_downloader, |  | ||||||
|     shorten_protocol_name |  | ||||||
| ) |  | ||||||
| from .downloader.rtmp import rtmpdump_version | from .downloader.rtmp import rtmpdump_version | ||||||
|  | from .extractor import _LAZY_LOADER | ||||||
|  | from .extractor import _PLUGIN_CLASSES as plugin_extractors | ||||||
|  | from .extractor import gen_extractor_classes, get_info_extractor | ||||||
|  | from .extractor.openload import PhantomJSwrapper | ||||||
|  | from .minicurses import format_text | ||||||
|  | from .postprocessor import _PLUGIN_CLASSES as plugin_postprocessors | ||||||
| from .postprocessor import ( | from .postprocessor import ( | ||||||
|     get_postprocessor, |  | ||||||
|     EmbedThumbnailPP, |     EmbedThumbnailPP, | ||||||
|     FFmpegFixupDuplicateMoovPP, |     FFmpegFixupDuplicateMoovPP, | ||||||
|     FFmpegFixupDurationPP, |     FFmpegFixupDurationPP, | ||||||
| @@ -152,10 +58,96 @@ from .postprocessor import ( | |||||||
|     FFmpegMergerPP, |     FFmpegMergerPP, | ||||||
|     FFmpegPostProcessor, |     FFmpegPostProcessor, | ||||||
|     MoveFilesAfterDownloadPP, |     MoveFilesAfterDownloadPP, | ||||||
|     _PLUGIN_CLASSES as plugin_postprocessors |     get_postprocessor, | ||||||
| ) | ) | ||||||
| from .update import detect_variant | from .update import detect_variant | ||||||
| from .version import __version__, RELEASE_GIT_HEAD | from .utils import ( | ||||||
|  |     DEFAULT_OUTTMPL, | ||||||
|  |     LINK_TEMPLATES, | ||||||
|  |     NO_DEFAULT, | ||||||
|  |     OUTTMPL_TYPES, | ||||||
|  |     POSTPROCESS_WHEN, | ||||||
|  |     STR_FORMAT_RE_TMPL, | ||||||
|  |     STR_FORMAT_TYPES, | ||||||
|  |     ContentTooShortError, | ||||||
|  |     DateRange, | ||||||
|  |     DownloadCancelled, | ||||||
|  |     DownloadError, | ||||||
|  |     EntryNotInPlaylist, | ||||||
|  |     ExistingVideoReached, | ||||||
|  |     ExtractorError, | ||||||
|  |     GeoRestrictedError, | ||||||
|  |     HEADRequest, | ||||||
|  |     InAdvancePagedList, | ||||||
|  |     ISO3166Utils, | ||||||
|  |     LazyList, | ||||||
|  |     MaxDownloadsReached, | ||||||
|  |     PagedList, | ||||||
|  |     PerRequestProxyHandler, | ||||||
|  |     Popen, | ||||||
|  |     PostProcessingError, | ||||||
|  |     ReExtractInfo, | ||||||
|  |     RejectedVideoReached, | ||||||
|  |     SameFileError, | ||||||
|  |     UnavailableVideoError, | ||||||
|  |     YoutubeDLCookieProcessor, | ||||||
|  |     YoutubeDLHandler, | ||||||
|  |     YoutubeDLRedirectHandler, | ||||||
|  |     age_restricted, | ||||||
|  |     args_to_str, | ||||||
|  |     date_from_str, | ||||||
|  |     determine_ext, | ||||||
|  |     determine_protocol, | ||||||
|  |     encode_compat_str, | ||||||
|  |     encodeFilename, | ||||||
|  |     error_to_compat_str, | ||||||
|  |     expand_path, | ||||||
|  |     filter_dict, | ||||||
|  |     float_or_none, | ||||||
|  |     format_bytes, | ||||||
|  |     format_decimal_suffix, | ||||||
|  |     format_field, | ||||||
|  |     formatSeconds, | ||||||
|  |     get_domain, | ||||||
|  |     has_certifi, | ||||||
|  |     int_or_none, | ||||||
|  |     iri_to_uri, | ||||||
|  |     join_nonempty, | ||||||
|  |     locked_file, | ||||||
|  |     make_dir, | ||||||
|  |     make_HTTPS_handler, | ||||||
|  |     merge_headers, | ||||||
|  |     network_exceptions, | ||||||
|  |     number_of_digits, | ||||||
|  |     orderedSet, | ||||||
|  |     parse_filesize, | ||||||
|  |     platform_name, | ||||||
|  |     preferredencoding, | ||||||
|  |     prepend_extension, | ||||||
|  |     register_socks_protocols, | ||||||
|  |     remove_terminal_sequences, | ||||||
|  |     render_table, | ||||||
|  |     replace_extension, | ||||||
|  |     sanitize_filename, | ||||||
|  |     sanitize_path, | ||||||
|  |     sanitize_url, | ||||||
|  |     sanitized_Request, | ||||||
|  |     std_headers, | ||||||
|  |     str_or_none, | ||||||
|  |     strftime_or_none, | ||||||
|  |     subtitles_filename, | ||||||
|  |     supports_terminal_sequences, | ||||||
|  |     timetuple_from_msec, | ||||||
|  |     to_high_limit_path, | ||||||
|  |     traverse_obj, | ||||||
|  |     try_get, | ||||||
|  |     url_basename, | ||||||
|  |     variadic, | ||||||
|  |     version_tuple, | ||||||
|  |     write_json_file, | ||||||
|  |     write_string, | ||||||
|  | ) | ||||||
|  | from .version import RELEASE_GIT_HEAD, __version__ | ||||||
| 
 | 
 | ||||||
| if compat_os_name == 'nt': | if compat_os_name == 'nt': | ||||||
|     import ctypes |     import ctypes | ||||||
| @@ -3666,9 +3658,9 @@ class YoutubeDL: | |||||||
|         ) or 'none' |         ) or 'none' | ||||||
|         write_debug('exe versions: %s' % exe_str) |         write_debug('exe versions: %s' % exe_str) | ||||||
| 
 | 
 | ||||||
|  |         from .cookies import SECRETSTORAGE_AVAILABLE, SQLITE_AVAILABLE | ||||||
|         from .downloader.websocket import has_websockets |         from .downloader.websocket import has_websockets | ||||||
|         from .postprocessor.embedthumbnail import has_mutagen |         from .postprocessor.embedthumbnail import has_mutagen | ||||||
|         from .cookies import SQLITE_AVAILABLE, SECRETSTORAGE_AVAILABLE |  | ||||||
| 
 | 
 | ||||||
|         lib_str = join_nonempty( |         lib_str = join_nonempty( | ||||||
|             compat_brotli and compat_brotli.__name__, |             compat_brotli and compat_brotli.__name__, | ||||||
|   | |||||||
| @@ -9,39 +9,13 @@ import random | |||||||
| import re | import re | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| from .options import parseOpts | from .compat import compat_getpass, compat_os_name, compat_shlex_quote | ||||||
| from .compat import ( |  | ||||||
|     compat_getpass, |  | ||||||
|     compat_os_name, |  | ||||||
|     compat_shlex_quote, |  | ||||||
| ) |  | ||||||
| from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS | from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS | ||||||
| from .utils import ( |  | ||||||
|     DateRange, |  | ||||||
|     decodeOption, |  | ||||||
|     DownloadCancelled, |  | ||||||
|     DownloadError, |  | ||||||
|     expand_path, |  | ||||||
|     float_or_none, |  | ||||||
|     GeoUtils, |  | ||||||
|     int_or_none, |  | ||||||
|     match_filter_func, |  | ||||||
|     NO_DEFAULT, |  | ||||||
|     parse_duration, |  | ||||||
|     preferredencoding, |  | ||||||
|     read_batch_urls, |  | ||||||
|     render_table, |  | ||||||
|     SameFileError, |  | ||||||
|     setproctitle, |  | ||||||
|     std_headers, |  | ||||||
|     traverse_obj, |  | ||||||
|     write_string, |  | ||||||
| ) |  | ||||||
| from .update import run_update |  | ||||||
| from .downloader import FileDownloader | from .downloader import FileDownloader | ||||||
| from .extractor import gen_extractors, list_extractors | from .extractor import gen_extractors, list_extractors | ||||||
| from .extractor.common import InfoExtractor |  | ||||||
| from .extractor.adobepass import MSO_INFO | from .extractor.adobepass import MSO_INFO | ||||||
|  | from .extractor.common import InfoExtractor | ||||||
|  | from .options import parseOpts | ||||||
| from .postprocessor import ( | from .postprocessor import ( | ||||||
|     FFmpegExtractAudioPP, |     FFmpegExtractAudioPP, | ||||||
|     FFmpegSubtitlesConvertorPP, |     FFmpegSubtitlesConvertorPP, | ||||||
| @@ -51,6 +25,28 @@ from .postprocessor import ( | |||||||
|     MetadataFromFieldPP, |     MetadataFromFieldPP, | ||||||
|     MetadataParserPP, |     MetadataParserPP, | ||||||
| ) | ) | ||||||
|  | from .update import run_update | ||||||
|  | from .utils import ( | ||||||
|  |     NO_DEFAULT, | ||||||
|  |     DateRange, | ||||||
|  |     DownloadCancelled, | ||||||
|  |     DownloadError, | ||||||
|  |     GeoUtils, | ||||||
|  |     SameFileError, | ||||||
|  |     decodeOption, | ||||||
|  |     expand_path, | ||||||
|  |     float_or_none, | ||||||
|  |     int_or_none, | ||||||
|  |     match_filter_func, | ||||||
|  |     parse_duration, | ||||||
|  |     preferredencoding, | ||||||
|  |     read_batch_urls, | ||||||
|  |     render_table, | ||||||
|  |     setproctitle, | ||||||
|  |     std_headers, | ||||||
|  |     traverse_obj, | ||||||
|  |     write_string, | ||||||
|  | ) | ||||||
| from .YoutubeDL import YoutubeDL | from .YoutubeDL import YoutubeDL | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,15 +1,7 @@ | |||||||
| from math import ceil | from math import ceil | ||||||
| 
 | 
 | ||||||
| from .compat import ( | from .compat import compat_b64decode, compat_ord, compat_pycrypto_AES | ||||||
|     compat_b64decode, | from .utils import bytes_to_intlist, intlist_to_bytes | ||||||
|     compat_ord, |  | ||||||
|     compat_pycrypto_AES, |  | ||||||
| ) |  | ||||||
| from .utils import ( |  | ||||||
|     bytes_to_intlist, |  | ||||||
|     intlist_to_bytes, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| if compat_pycrypto_AES: | if compat_pycrypto_AES: | ||||||
|     def aes_cbc_decrypt_bytes(data, key, iv): |     def aes_cbc_decrypt_bytes(data, key, iv): | ||||||
|   | |||||||
| @@ -6,10 +6,7 @@ import shutil | |||||||
| import traceback | import traceback | ||||||
| 
 | 
 | ||||||
| from .compat import compat_getenv | from .compat import compat_getenv | ||||||
| from .utils import ( | from .utils import expand_path, write_json_file | ||||||
|     expand_path, |  | ||||||
|     write_json_file, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Cache: | class Cache: | ||||||
|   | |||||||
| @@ -16,17 +16,9 @@ from .aes import ( | |||||||
|     aes_gcm_decrypt_and_verify_bytes, |     aes_gcm_decrypt_and_verify_bytes, | ||||||
|     unpad_pkcs7, |     unpad_pkcs7, | ||||||
| ) | ) | ||||||
| from .compat import ( | from .compat import compat_b64decode, compat_cookiejar_Cookie | ||||||
|     compat_b64decode, |  | ||||||
|     compat_cookiejar_Cookie, |  | ||||||
| ) |  | ||||||
| from .minicurses import MultilinePrinter, QuietMultilinePrinter | from .minicurses import MultilinePrinter, QuietMultilinePrinter | ||||||
| from .utils import ( | from .utils import Popen, YoutubeDLCookieJar, error_to_str, expand_path | ||||||
|     error_to_str, |  | ||||||
|     expand_path, |  | ||||||
|     Popen, |  | ||||||
|     YoutubeDLCookieJar, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     import sqlite3 |     import sqlite3 | ||||||
|   | |||||||
| @@ -1,8 +1,5 @@ | |||||||
| from ..compat import compat_str | from ..compat import compat_str | ||||||
| from ..utils import ( | from ..utils import NO_DEFAULT, determine_protocol | ||||||
|     determine_protocol, |  | ||||||
|     NO_DEFAULT |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get_suitable_downloader(info_dict, params={}, default=NO_DEFAULT, protocol=None, to_stdout=False): | def get_suitable_downloader(info_dict, params={}, default=NO_DEFAULT, protocol=None, to_stdout=False): | ||||||
| @@ -27,21 +24,18 @@ def get_suitable_downloader(info_dict, params={}, default=NO_DEFAULT, protocol=N | |||||||
| # Some of these require get_suitable_downloader | # Some of these require get_suitable_downloader | ||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from .dash import DashSegmentsFD | from .dash import DashSegmentsFD | ||||||
|  | from .external import FFmpegFD, get_external_downloader | ||||||
| from .f4m import F4mFD | from .f4m import F4mFD | ||||||
| from .fc2 import FC2LiveFD | from .fc2 import FC2LiveFD | ||||||
| from .hls import HlsFD | from .hls import HlsFD | ||||||
| from .http import HttpFD | from .http import HttpFD | ||||||
| from .rtmp import RtmpFD |  | ||||||
| from .rtsp import RtspFD |  | ||||||
| from .ism import IsmFD | from .ism import IsmFD | ||||||
| from .mhtml import MhtmlFD | from .mhtml import MhtmlFD | ||||||
| from .niconico import NiconicoDmcFD | from .niconico import NiconicoDmcFD | ||||||
|  | from .rtmp import RtmpFD | ||||||
|  | from .rtsp import RtspFD | ||||||
| from .websocket import WebSocketFragmentFD | from .websocket import WebSocketFragmentFD | ||||||
| from .youtube_live_chat import YoutubeLiveChatFD | from .youtube_live_chat import YoutubeLiveChatFD | ||||||
| from .external import ( |  | ||||||
|     get_external_downloader, |  | ||||||
|     FFmpegFD, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| PROTOCOL_MAP = { | PROTOCOL_MAP = { | ||||||
|     'rtmp': RtmpFD, |     'rtmp': RtmpFD, | ||||||
|   | |||||||
| @@ -1,26 +1,26 @@ | |||||||
|  | import errno | ||||||
| import os | import os | ||||||
|  | import random | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| import random |  | ||||||
| import errno |  | ||||||
| 
 | 
 | ||||||
|  | from ..minicurses import ( | ||||||
|  |     BreaklineStatusPrinter, | ||||||
|  |     MultilineLogger, | ||||||
|  |     MultilinePrinter, | ||||||
|  |     QuietMultilinePrinter, | ||||||
|  | ) | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     LockingUnsupportedError, | ||||||
|     decodeArgument, |     decodeArgument, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     error_to_compat_str, |     error_to_compat_str, | ||||||
|     format_bytes, |     format_bytes, | ||||||
|     LockingUnsupportedError, |  | ||||||
|     sanitize_open, |     sanitize_open, | ||||||
|     shell_quote, |     shell_quote, | ||||||
|     timeconvert, |     timeconvert, | ||||||
|     timetuple_from_msec, |     timetuple_from_msec, | ||||||
| ) | ) | ||||||
| from ..minicurses import ( |  | ||||||
|     MultilineLogger, |  | ||||||
|     MultilinePrinter, |  | ||||||
|     QuietMultilinePrinter, |  | ||||||
|     BreaklineStatusPrinter |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class FileDownloader: | class FileDownloader: | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| import time | import time | ||||||
| 
 | 
 | ||||||
| from ..downloader import get_suitable_downloader |  | ||||||
| from .fragment import FragmentFD | from .fragment import FragmentFD | ||||||
| 
 | from ..downloader import get_suitable_downloader | ||||||
| from ..utils import urljoin | from ..utils import urljoin | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -5,23 +5,20 @@ import sys | |||||||
| import time | import time | ||||||
| 
 | 
 | ||||||
| from .fragment import FragmentFD | from .fragment import FragmentFD | ||||||
| from ..compat import ( | from ..compat import compat_setenv, compat_str | ||||||
|     compat_setenv, | from ..postprocessor.ffmpeg import EXT_TO_OUT_FORMATS, FFmpegPostProcessor | ||||||
|     compat_str, |  | ||||||
| ) |  | ||||||
| from ..postprocessor.ffmpeg import FFmpegPostProcessor, EXT_TO_OUT_FORMATS |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     Popen, | ||||||
|  |     _configuration_args, | ||||||
|  |     check_executable, | ||||||
|     classproperty, |     classproperty, | ||||||
|  |     cli_bool_option, | ||||||
|     cli_option, |     cli_option, | ||||||
|     cli_valueless_option, |     cli_valueless_option, | ||||||
|     cli_bool_option, |  | ||||||
|     _configuration_args, |  | ||||||
|     determine_ext, |     determine_ext, | ||||||
|     encodeFilename, |  | ||||||
|     encodeArgument, |     encodeArgument, | ||||||
|  |     encodeFilename, | ||||||
|     handle_youtubedl_headers, |     handle_youtubedl_headers, | ||||||
|     check_executable, |  | ||||||
|     Popen, |  | ||||||
|     remove_end, |     remove_end, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -6,16 +6,13 @@ from .fragment import FragmentFD | |||||||
| from ..compat import ( | from ..compat import ( | ||||||
|     compat_b64decode, |     compat_b64decode, | ||||||
|     compat_etree_fromstring, |     compat_etree_fromstring, | ||||||
|     compat_urlparse, |  | ||||||
|     compat_urllib_error, |  | ||||||
|     compat_urllib_parse_urlparse, |  | ||||||
|     compat_struct_pack, |     compat_struct_pack, | ||||||
|     compat_struct_unpack, |     compat_struct_unpack, | ||||||
|  |     compat_urllib_error, | ||||||
|  |     compat_urllib_parse_urlparse, | ||||||
|  |     compat_urlparse, | ||||||
| ) | ) | ||||||
| from ..utils import ( | from ..utils import fix_xml_ampersands, xpath_text | ||||||
|     fix_xml_ampersands, |  | ||||||
|     xpath_text, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class DataTruncatedError(Exception): | class DataTruncatedError(Exception): | ||||||
|   | |||||||
| @@ -13,15 +13,11 @@ except ImportError: | |||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from .http import HttpFD | from .http import HttpFD | ||||||
| from ..aes import aes_cbc_decrypt_bytes, unpad_pkcs7 | from ..aes import aes_cbc_decrypt_bytes, unpad_pkcs7 | ||||||
| from ..compat import ( | from ..compat import compat_os_name, compat_struct_pack, compat_urllib_error | ||||||
|     compat_os_name, |  | ||||||
|     compat_urllib_error, |  | ||||||
|     compat_struct_pack, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     DownloadError, |     DownloadError, | ||||||
|     error_to_compat_str, |  | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|  |     error_to_compat_str, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     traverse_obj, |     traverse_obj, | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -1,21 +1,13 @@ | |||||||
| import re |  | ||||||
| import io |  | ||||||
| import binascii | import binascii | ||||||
|  | import io | ||||||
|  | import re | ||||||
| 
 | 
 | ||||||
| from ..downloader import get_suitable_downloader |  | ||||||
| from .fragment import FragmentFD |  | ||||||
| from .external import FFmpegFD | from .external import FFmpegFD | ||||||
| 
 | from .fragment import FragmentFD | ||||||
| from ..compat import ( |  | ||||||
|     compat_pycrypto_AES, |  | ||||||
|     compat_urlparse, |  | ||||||
| ) |  | ||||||
| from ..utils import ( |  | ||||||
|     parse_m3u8_attributes, |  | ||||||
|     update_url_query, |  | ||||||
|     bug_reports_message, |  | ||||||
| ) |  | ||||||
| from .. import webvtt | from .. import webvtt | ||||||
|  | from ..compat import compat_pycrypto_AES, compat_urlparse | ||||||
|  | from ..downloader import get_suitable_downloader | ||||||
|  | from ..utils import bug_reports_message, parse_m3u8_attributes, update_url_query | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class HlsFD(FragmentFD): | class HlsFD(FragmentFD): | ||||||
|   | |||||||
| @@ -1,24 +1,21 @@ | |||||||
| import os | import os | ||||||
|  | import random | ||||||
| import ssl | import ssl | ||||||
| import time | import time | ||||||
| import random |  | ||||||
| 
 | 
 | ||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from ..compat import ( | from ..compat import compat_http_client, compat_urllib_error | ||||||
|     compat_urllib_error, |  | ||||||
|     compat_http_client |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ContentTooShortError, |     ContentTooShortError, | ||||||
|  |     ThrottledDownload, | ||||||
|  |     XAttrMetadataError, | ||||||
|  |     XAttrUnavailableError, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     parse_http_range, |     parse_http_range, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     ThrottledDownload, |  | ||||||
|     try_call, |     try_call, | ||||||
|     write_xattr, |     write_xattr, | ||||||
|     XAttrMetadataError, |  | ||||||
|     XAttrUnavailableError, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| RESPONSE_READ_EXCEPTIONS = (TimeoutError, ConnectionError, ssl.SSLError, compat_http_client.HTTPException) | RESPONSE_READ_EXCEPTIONS = (TimeoutError, ConnectionError, ssl.SSLError, compat_http_client.HTTPException) | ||||||
|   | |||||||
| @@ -1,13 +1,10 @@ | |||||||
| import time |  | ||||||
| import binascii | import binascii | ||||||
| import io | import io | ||||||
| import struct | import struct | ||||||
|  | import time | ||||||
| 
 | 
 | ||||||
| from .fragment import FragmentFD | from .fragment import FragmentFD | ||||||
| from ..compat import ( | from ..compat import compat_urllib_error | ||||||
|     compat_urllib_error, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| u8 = struct.Struct('>B') | u8 = struct.Struct('>B') | ||||||
| u88 = struct.Struct('>Bx') | u88 = struct.Struct('>Bx') | ||||||
|   | |||||||
| @@ -4,12 +4,7 @@ import re | |||||||
| import uuid | import uuid | ||||||
| 
 | 
 | ||||||
| from .fragment import FragmentFD | from .fragment import FragmentFD | ||||||
| from ..utils import ( | from ..utils import escapeHTML, formatSeconds, srt_subtitles_timecode, urljoin | ||||||
|     escapeHTML, |  | ||||||
|     formatSeconds, |  | ||||||
|     srt_subtitles_timecode, |  | ||||||
|     urljoin, |  | ||||||
| ) |  | ||||||
| from ..version import __version__ as YT_DLP_VERSION | from ..version import __version__ as YT_DLP_VERSION | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -6,11 +6,11 @@ import time | |||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from ..compat import compat_str | from ..compat import compat_str | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     check_executable, |  | ||||||
|     encodeFilename, |  | ||||||
|     encodeArgument, |  | ||||||
|     get_exe_version, |  | ||||||
|     Popen, |     Popen, | ||||||
|  |     check_executable, | ||||||
|  |     encodeArgument, | ||||||
|  |     encodeFilename, | ||||||
|  |     get_exe_version, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -2,10 +2,7 @@ import os | |||||||
| import subprocess | import subprocess | ||||||
| 
 | 
 | ||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from ..utils import ( | from ..utils import check_executable, encodeFilename | ||||||
|     check_executable, |  | ||||||
|     encodeFilename, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class RtspFD(FileDownloader): | class RtspFD(FileDownloader): | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
|  | import asyncio | ||||||
| import os | import os | ||||||
| import signal | import signal | ||||||
| import asyncio |  | ||||||
| import threading | import threading | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|   | |||||||
| @@ -3,13 +3,8 @@ import time | |||||||
| 
 | 
 | ||||||
| from .fragment import FragmentFD | from .fragment import FragmentFD | ||||||
| from ..compat import compat_urllib_error | from ..compat import compat_urllib_error | ||||||
| from ..utils import ( |  | ||||||
|     try_get, |  | ||||||
|     dict_get, |  | ||||||
|     int_or_none, |  | ||||||
|     RegexNotFoundError, |  | ||||||
| ) |  | ||||||
| from ..extractor.youtube import YoutubeBaseInfoExtractor as YT_BaseIE | from ..extractor.youtube import YoutubeBaseInfoExtractor as YT_BaseIE | ||||||
|  | from ..utils import RegexNotFoundError, dict_get, int_or_none, try_get | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class YoutubeLiveChatFD(FragmentFD): | class YoutubeLiveChatFD(FragmentFD): | ||||||
|   | |||||||
| @@ -1,35 +1,31 @@ | |||||||
| import io | import base64 | ||||||
| import json | import binascii | ||||||
| import time |  | ||||||
| import hashlib | import hashlib | ||||||
| import hmac | import hmac | ||||||
|  | import io | ||||||
|  | import json | ||||||
| import re | import re | ||||||
| import struct | import struct | ||||||
|  | import time | ||||||
| import urllib.response | import urllib.response | ||||||
| import uuid | import uuid | ||||||
| from base64 import urlsafe_b64encode |  | ||||||
| from binascii import unhexlify |  | ||||||
| 
 | 
 | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..aes import aes_ecb_decrypt | from ..aes import aes_ecb_decrypt | ||||||
| from ..compat import ( | from ..compat import compat_urllib_parse_urlparse, compat_urllib_request | ||||||
|     compat_urllib_parse_urlparse, |  | ||||||
|     compat_urllib_request, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|  |     bytes_to_intlist, | ||||||
|     decode_base, |     decode_base, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|  |     intlist_to_bytes, | ||||||
|     request_to_url, |     request_to_url, | ||||||
|     time_seconds, |     time_seconds, | ||||||
|     update_url_query, |  | ||||||
|     traverse_obj, |     traverse_obj, | ||||||
|     intlist_to_bytes, |     update_url_query, | ||||||
|     bytes_to_intlist, |  | ||||||
|     urljoin, |     urljoin, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # NOTE: network handler related code is temporary thing until network stack overhaul PRs are merged (#2861/#2862) | # NOTE: network handler related code is temporary thing until network stack overhaul PRs are merged (#2861/#2862) | ||||||
| 
 | 
 | ||||||
| def add_opener(ydl, handler): | def add_opener(ydl, handler): | ||||||
| @@ -130,7 +126,7 @@ class AbemaLicenseHandler(compat_urllib_request.BaseHandler): | |||||||
|         encvideokey = bytes_to_intlist(struct.pack('>QQ', res >> 64, res & 0xffffffffffffffff)) |         encvideokey = bytes_to_intlist(struct.pack('>QQ', res >> 64, res & 0xffffffffffffffff)) | ||||||
| 
 | 
 | ||||||
|         h = hmac.new( |         h = hmac.new( | ||||||
|             unhexlify(self.HKEY), |             binascii.unhexlify(self.HKEY), | ||||||
|             (license_response['cid'] + self.ie._DEVICE_ID).encode('utf-8'), |             (license_response['cid'] + self.ie._DEVICE_ID).encode('utf-8'), | ||||||
|             digestmod=hashlib.sha256) |             digestmod=hashlib.sha256) | ||||||
|         enckey = bytes_to_intlist(h.digest()) |         enckey = bytes_to_intlist(h.digest()) | ||||||
| @@ -238,7 +234,7 @@ class AbemaTVIE(AbemaTVBaseIE): | |||||||
| 
 | 
 | ||||||
|         def mix_twist(nonce): |         def mix_twist(nonce): | ||||||
|             nonlocal tmp |             nonlocal tmp | ||||||
|             mix_once(urlsafe_b64encode(tmp).rstrip(b'=') + nonce) |             mix_once(base64.urlsafe_b64encode(tmp).rstrip(b'=') + nonce) | ||||||
| 
 | 
 | ||||||
|         mix_once(self._SECRETKEY) |         mix_once(self._SECRETKEY) | ||||||
|         mix_tmp(time_struct.tm_mon) |         mix_tmp(time_struct.tm_mon) | ||||||
| @@ -247,7 +243,7 @@ class AbemaTVIE(AbemaTVBaseIE): | |||||||
|         mix_twist(ts_1hour_str) |         mix_twist(ts_1hour_str) | ||||||
|         mix_tmp(time_struct.tm_hour % 5) |         mix_tmp(time_struct.tm_hour % 5) | ||||||
| 
 | 
 | ||||||
|         return urlsafe_b64encode(tmp).rstrip(b'=').decode('utf-8') |         return base64.urlsafe_b64encode(tmp).rstrip(b'=').decode('utf-8') | ||||||
| 
 | 
 | ||||||
|     def _get_device_token(self): |     def _get_device_token(self): | ||||||
|         if self._USERTOKEN: |         if self._USERTOKEN: | ||||||
|   | |||||||
| @@ -1,16 +1,16 @@ | |||||||
| import base64 | import base64 | ||||||
| import collections | import collections | ||||||
| import xml.etree.ElementTree |  | ||||||
| import hashlib | import hashlib | ||||||
| import itertools | import itertools | ||||||
| import json | import json | ||||||
|  | import math | ||||||
| import netrc | import netrc | ||||||
| import os | import os | ||||||
| import random | import random | ||||||
| import re | import re | ||||||
| import sys | import sys | ||||||
| import time | import time | ||||||
| import math | import xml.etree.ElementTree | ||||||
| 
 | 
 | ||||||
| from ..compat import ( | from ..compat import ( | ||||||
|     compat_cookiejar_Cookie, |     compat_cookiejar_Cookie, | ||||||
| @@ -29,11 +29,15 @@ from ..compat import ( | |||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
| ) | ) | ||||||
| from ..downloader import FileDownloader | from ..downloader import FileDownloader | ||||||
| from ..downloader.f4m import ( | from ..downloader.f4m import get_base_url, remove_encrypted_media | ||||||
|     get_base_url, |  | ||||||
|     remove_encrypted_media, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     JSON_LD_RE, | ||||||
|  |     NO_DEFAULT, | ||||||
|  |     ExtractorError, | ||||||
|  |     GeoRestrictedError, | ||||||
|  |     GeoUtils, | ||||||
|  |     RegexNotFoundError, | ||||||
|  |     UnsupportedError, | ||||||
|     age_restricted, |     age_restricted, | ||||||
|     base_url, |     base_url, | ||||||
|     bug_reports_message, |     bug_reports_message, | ||||||
| @@ -44,20 +48,15 @@ from ..utils import ( | |||||||
|     encode_data_uri, |     encode_data_uri, | ||||||
|     error_to_compat_str, |     error_to_compat_str, | ||||||
|     extract_attributes, |     extract_attributes, | ||||||
|     ExtractorError, |  | ||||||
|     filter_dict, |     filter_dict, | ||||||
|     fix_xml_ampersands, |     fix_xml_ampersands, | ||||||
|     float_or_none, |     float_or_none, | ||||||
|     format_field, |     format_field, | ||||||
|     GeoRestrictedError, |  | ||||||
|     GeoUtils, |  | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     join_nonempty, |     join_nonempty, | ||||||
|     js_to_json, |     js_to_json, | ||||||
|     JSON_LD_RE, |  | ||||||
|     mimetype2ext, |     mimetype2ext, | ||||||
|     network_exceptions, |     network_exceptions, | ||||||
|     NO_DEFAULT, |  | ||||||
|     orderedSet, |     orderedSet, | ||||||
|     parse_bitrate, |     parse_bitrate, | ||||||
|     parse_codecs, |     parse_codecs, | ||||||
| @@ -65,7 +64,6 @@ from ..utils import ( | |||||||
|     parse_iso8601, |     parse_iso8601, | ||||||
|     parse_m3u8_attributes, |     parse_m3u8_attributes, | ||||||
|     parse_resolution, |     parse_resolution, | ||||||
|     RegexNotFoundError, |  | ||||||
|     sanitize_filename, |     sanitize_filename, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     str_or_none, |     str_or_none, | ||||||
| @@ -74,7 +72,6 @@ from ..utils import ( | |||||||
|     traverse_obj, |     traverse_obj, | ||||||
|     try_get, |     try_get, | ||||||
|     unescapeHTML, |     unescapeHTML, | ||||||
|     UnsupportedError, |  | ||||||
|     unified_strdate, |     unified_strdate, | ||||||
|     unified_timestamp, |     unified_timestamp, | ||||||
|     update_Request, |     update_Request, | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..compat import ( | from ..compat import compat_urlparse | ||||||
|     compat_urlparse, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class RtmpIE(InfoExtractor): | class RtmpIE(InfoExtractor): | ||||||
|   | |||||||
| @@ -2,8 +2,107 @@ import os | |||||||
| import re | import re | ||||||
| import xml.etree.ElementTree | import xml.etree.ElementTree | ||||||
| 
 | 
 | ||||||
|  | from .ant1newsgr import Ant1NewsGrEmbedIE | ||||||
|  | from .anvato import AnvatoIE | ||||||
|  | from .apa import APAIE | ||||||
|  | from .arcpublishing import ArcPublishingIE | ||||||
|  | from .arkena import ArkenaIE | ||||||
|  | from .arte import ArteTVEmbedIE | ||||||
|  | from .bitchute import BitChuteIE | ||||||
|  | from .blogger import BloggerIE | ||||||
|  | from .brightcove import BrightcoveLegacyIE, BrightcoveNewIE | ||||||
|  | from .channel9 import Channel9IE | ||||||
|  | from .cloudflarestream import CloudflareStreamIE | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
|  | from .commonprotocols import RtmpIE | ||||||
|  | from .condenast import CondeNastIE | ||||||
|  | from .dailymail import DailyMailIE | ||||||
|  | from .dailymotion import DailymotionIE | ||||||
|  | from .dbtv import DBTVIE | ||||||
|  | from .digiteka import DigitekaIE | ||||||
|  | from .drtuber import DrTuberIE | ||||||
|  | from .eagleplatform import EaglePlatformIE | ||||||
|  | from .ertgr import ERTWebtvEmbedIE | ||||||
|  | from .expressen import ExpressenIE | ||||||
|  | from .facebook import FacebookIE | ||||||
|  | from .foxnews import FoxNewsIE | ||||||
|  | from .gedidigital import GediDigitalIE | ||||||
|  | from .gfycat import GfycatIE | ||||||
|  | from .glomex import GlomexEmbedIE | ||||||
|  | from .googledrive import GoogleDriveIE | ||||||
|  | from .indavideo import IndavideoEmbedIE | ||||||
|  | from .instagram import InstagramIE | ||||||
|  | from .joj import JojIE | ||||||
|  | from .jwplatform import JWPlatformIE | ||||||
|  | from .kaltura import KalturaIE | ||||||
|  | from .kinja import KinjaEmbedIE | ||||||
|  | from .limelight import LimelightBaseIE | ||||||
|  | from .mainstreaming import MainStreamingIE | ||||||
|  | from .medialaan import MedialaanIE | ||||||
|  | from .mediaset import MediasetIE | ||||||
|  | from .mediasite import MediasiteIE | ||||||
|  | from .megaphone import MegaphoneIE | ||||||
|  | from .megatvcom import MegaTVComEmbedIE | ||||||
|  | from .mofosex import MofosexEmbedIE | ||||||
|  | from .mtv import MTVServicesEmbeddedIE | ||||||
|  | from .myvi import MyviIE | ||||||
|  | from .nbc import NBCSportsVPlayerIE | ||||||
|  | from .nexx import NexxEmbedIE, NexxIE | ||||||
|  | from .odnoklassniki import OdnoklassnikiIE | ||||||
|  | from .onionstudios import OnionStudiosIE | ||||||
|  | from .ooyala import OoyalaIE | ||||||
|  | from .panopto import PanoptoBaseIE | ||||||
|  | from .peertube import PeerTubeIE | ||||||
|  | from .piksel import PikselIE | ||||||
|  | from .pladform import PladformIE | ||||||
|  | from .pornhub import PornHubIE | ||||||
|  | from .rcs import RCSEmbedsIE | ||||||
|  | from .redtube import RedTubeIE | ||||||
|  | from .rumble import RumbleEmbedIE | ||||||
|  | from .rutube import RutubeIE | ||||||
|  | from .rutv import RUTVIE | ||||||
|  | from .ruutu import RuutuIE | ||||||
|  | from .senategov import SenateISVPIE | ||||||
|  | from .simplecast import SimplecastIE | ||||||
|  | from .soundcloud import SoundcloudEmbedIE | ||||||
|  | from .spankwire import SpankwireIE | ||||||
|  | from .sportbox import SportBoxIE | ||||||
|  | from .springboardplatform import SpringboardPlatformIE | ||||||
|  | from .svt import SVTIE | ||||||
|  | from .teachable import TeachableIE | ||||||
|  | from .ted import TedEmbedIE | ||||||
|  | from .theplatform import ThePlatformIE | ||||||
|  | from .threeqsdn import ThreeQSDNIE | ||||||
|  | from .tnaflix import TNAFlixNetworkEmbedIE | ||||||
|  | from .tube8 import Tube8IE | ||||||
|  | from .tunein import TuneInBaseIE | ||||||
|  | from .tvc import TVCIE | ||||||
|  | from .tvopengr import TVOpenGrEmbedIE | ||||||
|  | from .tvp import TVPEmbedIE | ||||||
|  | from .twentymin import TwentyMinutenIE | ||||||
|  | from .udn import UDNEmbedIE | ||||||
|  | from .ustream import UstreamIE | ||||||
|  | from .vbox7 import Vbox7IE | ||||||
|  | from .vice import ViceIE | ||||||
|  | from .videa import VideaIE | ||||||
|  | from .videomore import VideomoreIE | ||||||
|  | from .videopress import VideoPressIE | ||||||
|  | from .viewlift import ViewLiftEmbedIE | ||||||
|  | from .vimeo import VHXEmbedIE, VimeoIE | ||||||
|  | from .viqeo import ViqeoIE | ||||||
|  | from .vk import VKIE | ||||||
|  | from .vshare import VShareIE | ||||||
|  | from .vzaar import VzaarIE | ||||||
|  | from .washingtonpost import WashingtonPostIE | ||||||
|  | from .webcaster import WebcasterFeedIE | ||||||
|  | from .wimtv import WimTVIE | ||||||
|  | from .wistia import WistiaIE | ||||||
|  | from .xfileshare import XFileShareIE | ||||||
|  | from .xhamster import XHamsterEmbedIE | ||||||
|  | from .yapfiles import YapFilesIE | ||||||
|  | from .youporn import YouPornIE | ||||||
| from .youtube import YoutubeIE | from .youtube import YoutubeIE | ||||||
|  | from .zype import ZypeIE | ||||||
| from ..compat import ( | from ..compat import ( | ||||||
|     compat_etree_fromstring, |     compat_etree_fromstring, | ||||||
|     compat_str, |     compat_str, | ||||||
| @@ -11,15 +110,16 @@ from ..compat import ( | |||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
| ) | ) | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     KNOWN_EXTENSIONS, | ||||||
|  |     ExtractorError, | ||||||
|  |     HEADRequest, | ||||||
|  |     UnsupportedError, | ||||||
|     determine_ext, |     determine_ext, | ||||||
|     dict_get, |     dict_get, | ||||||
|     ExtractorError, |  | ||||||
|     float_or_none, |     float_or_none, | ||||||
|     HEADRequest, |  | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     is_html, |     is_html, | ||||||
|     js_to_json, |     js_to_json, | ||||||
|     KNOWN_EXTENSIONS, |  | ||||||
|     merge_dicts, |     merge_dicts, | ||||||
|     mimetype2ext, |     mimetype2ext, | ||||||
|     orderedSet, |     orderedSet, | ||||||
| @@ -31,120 +131,11 @@ from ..utils import ( | |||||||
|     unescapeHTML, |     unescapeHTML, | ||||||
|     unified_timestamp, |     unified_timestamp, | ||||||
|     unsmuggle_url, |     unsmuggle_url, | ||||||
|     UnsupportedError, |  | ||||||
|     url_or_none, |     url_or_none, | ||||||
|     xpath_attr, |     xpath_attr, | ||||||
|     xpath_text, |     xpath_text, | ||||||
|     xpath_with_ns, |     xpath_with_ns, | ||||||
| ) | ) | ||||||
| from .commonprotocols import RtmpIE |  | ||||||
| from .brightcove import ( |  | ||||||
|     BrightcoveLegacyIE, |  | ||||||
|     BrightcoveNewIE, |  | ||||||
| ) |  | ||||||
| from .nexx import ( |  | ||||||
|     NexxIE, |  | ||||||
|     NexxEmbedIE, |  | ||||||
| ) |  | ||||||
| from .nbc import NBCSportsVPlayerIE |  | ||||||
| from .ooyala import OoyalaIE |  | ||||||
| from .rutv import RUTVIE |  | ||||||
| from .tvc import TVCIE |  | ||||||
| from .sportbox import SportBoxIE |  | ||||||
| from .myvi import MyviIE |  | ||||||
| from .condenast import CondeNastIE |  | ||||||
| from .udn import UDNEmbedIE |  | ||||||
| from .senategov import SenateISVPIE |  | ||||||
| from .svt import SVTIE |  | ||||||
| from .pornhub import PornHubIE |  | ||||||
| from .xhamster import XHamsterEmbedIE |  | ||||||
| from .tnaflix import TNAFlixNetworkEmbedIE |  | ||||||
| from .drtuber import DrTuberIE |  | ||||||
| from .redtube import RedTubeIE |  | ||||||
| from .tube8 import Tube8IE |  | ||||||
| from .mofosex import MofosexEmbedIE |  | ||||||
| from .spankwire import SpankwireIE |  | ||||||
| from .youporn import YouPornIE |  | ||||||
| from .vimeo import ( |  | ||||||
|     VimeoIE, |  | ||||||
|     VHXEmbedIE, |  | ||||||
| ) |  | ||||||
| from .dailymotion import DailymotionIE |  | ||||||
| from .dailymail import DailyMailIE |  | ||||||
| from .onionstudios import OnionStudiosIE |  | ||||||
| from .viewlift import ViewLiftEmbedIE |  | ||||||
| from .mtv import MTVServicesEmbeddedIE |  | ||||||
| from .pladform import PladformIE |  | ||||||
| from .videomore import VideomoreIE |  | ||||||
| from .webcaster import WebcasterFeedIE |  | ||||||
| from .googledrive import GoogleDriveIE |  | ||||||
| from .jwplatform import JWPlatformIE |  | ||||||
| from .digiteka import DigitekaIE |  | ||||||
| from .arkena import ArkenaIE |  | ||||||
| from .instagram import InstagramIE |  | ||||||
| from .threeqsdn import ThreeQSDNIE |  | ||||||
| from .theplatform import ThePlatformIE |  | ||||||
| from .kaltura import KalturaIE |  | ||||||
| from .eagleplatform import EaglePlatformIE |  | ||||||
| from .facebook import FacebookIE |  | ||||||
| from .soundcloud import SoundcloudEmbedIE |  | ||||||
| from .tunein import TuneInBaseIE |  | ||||||
| from .vbox7 import Vbox7IE |  | ||||||
| from .dbtv import DBTVIE |  | ||||||
| from .piksel import PikselIE |  | ||||||
| from .videa import VideaIE |  | ||||||
| from .twentymin import TwentyMinutenIE |  | ||||||
| from .ustream import UstreamIE |  | ||||||
| from .arte import ArteTVEmbedIE |  | ||||||
| from .videopress import VideoPressIE |  | ||||||
| from .rutube import RutubeIE |  | ||||||
| from .glomex import GlomexEmbedIE |  | ||||||
| from .megatvcom import MegaTVComEmbedIE |  | ||||||
| from .ant1newsgr import Ant1NewsGrEmbedIE |  | ||||||
| from .limelight import LimelightBaseIE |  | ||||||
| from .anvato import AnvatoIE |  | ||||||
| from .washingtonpost import WashingtonPostIE |  | ||||||
| from .wistia import WistiaIE |  | ||||||
| from .mediaset import MediasetIE |  | ||||||
| from .joj import JojIE |  | ||||||
| from .megaphone import MegaphoneIE |  | ||||||
| from .vzaar import VzaarIE |  | ||||||
| from .channel9 import Channel9IE |  | ||||||
| from .vshare import VShareIE |  | ||||||
| from .mediasite import MediasiteIE |  | ||||||
| from .springboardplatform import SpringboardPlatformIE |  | ||||||
| from .ted import TedEmbedIE |  | ||||||
| from .yapfiles import YapFilesIE |  | ||||||
| from .vice import ViceIE |  | ||||||
| from .xfileshare import XFileShareIE |  | ||||||
| from .cloudflarestream import CloudflareStreamIE |  | ||||||
| from .peertube import PeerTubeIE |  | ||||||
| from .teachable import TeachableIE |  | ||||||
| from .indavideo import IndavideoEmbedIE |  | ||||||
| from .apa import APAIE |  | ||||||
| from .foxnews import FoxNewsIE |  | ||||||
| from .viqeo import ViqeoIE |  | ||||||
| from .expressen import ExpressenIE |  | ||||||
| from .zype import ZypeIE |  | ||||||
| from .odnoklassniki import OdnoklassnikiIE |  | ||||||
| from .vk import VKIE |  | ||||||
| from .kinja import KinjaEmbedIE |  | ||||||
| from .gedidigital import GediDigitalIE |  | ||||||
| from .rcs import RCSEmbedsIE |  | ||||||
| from .bitchute import BitChuteIE |  | ||||||
| from .rumble import RumbleEmbedIE |  | ||||||
| from .arcpublishing import ArcPublishingIE |  | ||||||
| from .medialaan import MedialaanIE |  | ||||||
| from .simplecast import SimplecastIE |  | ||||||
| from .wimtv import WimTVIE |  | ||||||
| from .tvopengr import TVOpenGrEmbedIE |  | ||||||
| from .ertgr import ERTWebtvEmbedIE |  | ||||||
| from .tvp import TVPEmbedIE |  | ||||||
| from .blogger import BloggerIE |  | ||||||
| from .mainstreaming import MainStreamingIE |  | ||||||
| from .gfycat import GfycatIE |  | ||||||
| from .panopto import PanoptoBaseIE |  | ||||||
| from .ruutu import RuutuIE |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class GenericIE(InfoExtractor): | class GenericIE(InfoExtractor): | ||||||
|   | |||||||
| @@ -1,9 +1,7 @@ | |||||||
| import re | import re | ||||||
| 
 | 
 | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..compat import ( | from ..compat import compat_str | ||||||
|     compat_str, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     find_xpath_attr, |     find_xpath_attr, | ||||||
|   | |||||||
| @@ -1,13 +1,11 @@ | |||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..compat import ( |  | ||||||
|     compat_urllib_parse_unquote, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     find_xpath_attr, |     find_xpath_attr, | ||||||
|     xpath_text, |     xpath_text, | ||||||
|     update_url_query, |     update_url_query, | ||||||
| ) | ) | ||||||
|  | from ..compat import compat_urllib_parse_unquote | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class NozIE(InfoExtractor): | class NozIE(InfoExtractor): | ||||||
|   | |||||||
| @@ -3,16 +3,14 @@ import os | |||||||
| import subprocess | import subprocess | ||||||
| import tempfile | import tempfile | ||||||
| 
 | 
 | ||||||
| from ..compat import ( | from ..compat import compat_urlparse | ||||||
|     compat_urlparse, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     ExtractorError, | ||||||
|  |     Popen, | ||||||
|     check_executable, |     check_executable, | ||||||
|     encodeArgument, |     encodeArgument, | ||||||
|     ExtractorError, |  | ||||||
|     get_exe_version, |     get_exe_version, | ||||||
|     is_outdated_version, |     is_outdated_version, | ||||||
|     Popen, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -10,9 +10,9 @@ import os.path | |||||||
| import random | import random | ||||||
| import re | import re | ||||||
| import sys | import sys | ||||||
|  | import threading | ||||||
| import time | import time | ||||||
| import traceback | import traceback | ||||||
| import threading |  | ||||||
| 
 | 
 | ||||||
| from .common import InfoExtractor, SearchInfoExtractor | from .common import InfoExtractor, SearchInfoExtractor | ||||||
| from ..compat import ( | from ..compat import ( | ||||||
| @@ -27,12 +27,13 @@ from ..compat import ( | |||||||
| ) | ) | ||||||
| from ..jsinterp import JSInterpreter | from ..jsinterp import JSInterpreter | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     NO_DEFAULT, | ||||||
|  |     ExtractorError, | ||||||
|     bug_reports_message, |     bug_reports_message, | ||||||
|     clean_html, |     clean_html, | ||||||
|     datetime_from_str, |     datetime_from_str, | ||||||
|     dict_get, |     dict_get, | ||||||
|     error_to_compat_str, |     error_to_compat_str, | ||||||
|     ExtractorError, |  | ||||||
|     float_or_none, |     float_or_none, | ||||||
|     format_field, |     format_field, | ||||||
|     get_first, |     get_first, | ||||||
| @@ -42,7 +43,6 @@ from ..utils import ( | |||||||
|     js_to_json, |     js_to_json, | ||||||
|     mimetype2ext, |     mimetype2ext, | ||||||
|     network_exceptions, |     network_exceptions, | ||||||
|     NO_DEFAULT, |  | ||||||
|     orderedSet, |     orderedSet, | ||||||
|     parse_codecs, |     parse_codecs, | ||||||
|     parse_count, |     parse_count, | ||||||
| @@ -68,7 +68,6 @@ from ..utils import ( | |||||||
|     variadic, |     variadic, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # any clients starting with _ cannot be explicity requested by the user | # any clients starting with _ cannot be explicity requested by the user | ||||||
| INNERTUBE_CLIENTS = { | INNERTUBE_CLIENTS = { | ||||||
|     'web': { |     'web': { | ||||||
|   | |||||||
| @@ -1,12 +1,9 @@ | |||||||
| from collections.abc import MutableMapping |  | ||||||
| import json | import json | ||||||
| import operator | import operator | ||||||
| import re | import re | ||||||
|  | from collections.abc import MutableMapping | ||||||
| 
 | 
 | ||||||
| from .utils import ( | from .utils import ExtractorError, remove_quotes | ||||||
|     ExtractorError, |  | ||||||
|     remove_quotes, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| _OPERATORS = [ | _OPERATORS = [ | ||||||
|     ('|', operator.or_), |     ('|', operator.or_), | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import functools | import functools | ||||||
| from threading import Lock | from threading import Lock | ||||||
| from .utils import supports_terminal_sequences, write_string |  | ||||||
| 
 | 
 | ||||||
|  | from .utils import supports_terminal_sequences, write_string | ||||||
| 
 | 
 | ||||||
| CONTROL_SEQUENCES = { | CONTROL_SEQUENCES = { | ||||||
|     'DOWN': '\n', |     'DOWN': '\n', | ||||||
|   | |||||||
| @@ -1,26 +1,11 @@ | |||||||
| import os.path |  | ||||||
| import optparse | import optparse | ||||||
|  | import os.path | ||||||
| import re | import re | ||||||
| import shlex | import shlex | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| from .compat import ( | from .compat import compat_expanduser, compat_get_terminal_size, compat_getenv | ||||||
|     compat_expanduser, |  | ||||||
|     compat_get_terminal_size, |  | ||||||
|     compat_getenv, |  | ||||||
| ) |  | ||||||
| from .utils import ( |  | ||||||
|     Config, |  | ||||||
|     expand_path, |  | ||||||
|     get_executable_path, |  | ||||||
|     OUTTMPL_TYPES, |  | ||||||
|     POSTPROCESS_WHEN, |  | ||||||
|     remove_end, |  | ||||||
|     write_string, |  | ||||||
| ) |  | ||||||
| from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS | from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS | ||||||
| from .version import __version__ |  | ||||||
| 
 |  | ||||||
| from .downloader.external import list_external_downloaders | from .downloader.external import list_external_downloaders | ||||||
| from .postprocessor import ( | from .postprocessor import ( | ||||||
|     FFmpegExtractAudioPP, |     FFmpegExtractAudioPP, | ||||||
| @@ -30,6 +15,16 @@ from .postprocessor import ( | |||||||
|     SponsorBlockPP, |     SponsorBlockPP, | ||||||
| ) | ) | ||||||
| from .postprocessor.modify_chapters import DEFAULT_SPONSORBLOCK_CHAPTER_TITLE | from .postprocessor.modify_chapters import DEFAULT_SPONSORBLOCK_CHAPTER_TITLE | ||||||
|  | from .utils import ( | ||||||
|  |     OUTTMPL_TYPES, | ||||||
|  |     POSTPROCESS_WHEN, | ||||||
|  |     Config, | ||||||
|  |     expand_path, | ||||||
|  |     get_executable_path, | ||||||
|  |     remove_end, | ||||||
|  |     write_string, | ||||||
|  | ) | ||||||
|  | from .version import __version__ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def parseOpts(overrideArguments=None, ignore_config_files='if_override'): | def parseOpts(overrideArguments=None, ignore_config_files='if_override'): | ||||||
|   | |||||||
| @@ -1,27 +1,25 @@ | |||||||
| # flake8: noqa: F401 | # flake8: noqa: F401 | ||||||
| 
 | 
 | ||||||
| from ..utils import load_plugins |  | ||||||
| 
 |  | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from .embedthumbnail import EmbedThumbnailPP | from .embedthumbnail import EmbedThumbnailPP | ||||||
| from .exec import ExecPP, ExecAfterDownloadPP | from .exec import ExecAfterDownloadPP, ExecPP | ||||||
| from .ffmpeg import ( | from .ffmpeg import ( | ||||||
|     FFmpegPostProcessor, |  | ||||||
|     FFmpegCopyStreamPP, |  | ||||||
|     FFmpegConcatPP, |     FFmpegConcatPP, | ||||||
|  |     FFmpegCopyStreamPP, | ||||||
|     FFmpegEmbedSubtitlePP, |     FFmpegEmbedSubtitlePP, | ||||||
|     FFmpegExtractAudioPP, |     FFmpegExtractAudioPP, | ||||||
|     FFmpegFixupDuplicateMoovPP, |     FFmpegFixupDuplicateMoovPP, | ||||||
|     FFmpegFixupDurationPP, |     FFmpegFixupDurationPP, | ||||||
|     FFmpegFixupStretchedPP, |  | ||||||
|     FFmpegFixupTimestampPP, |  | ||||||
|     FFmpegFixupM3u8PP, |     FFmpegFixupM3u8PP, | ||||||
|     FFmpegFixupM4aPP, |     FFmpegFixupM4aPP, | ||||||
|  |     FFmpegFixupStretchedPP, | ||||||
|  |     FFmpegFixupTimestampPP, | ||||||
|     FFmpegMergerPP, |     FFmpegMergerPP, | ||||||
|     FFmpegMetadataPP, |     FFmpegMetadataPP, | ||||||
|  |     FFmpegPostProcessor, | ||||||
|  |     FFmpegSplitChaptersPP, | ||||||
|     FFmpegSubtitlesConvertorPP, |     FFmpegSubtitlesConvertorPP, | ||||||
|     FFmpegThumbnailsConvertorPP, |     FFmpegThumbnailsConvertorPP, | ||||||
|     FFmpegSplitChaptersPP, |  | ||||||
|     FFmpegVideoConvertorPP, |     FFmpegVideoConvertorPP, | ||||||
|     FFmpegVideoRemuxerPP, |     FFmpegVideoRemuxerPP, | ||||||
| ) | ) | ||||||
| @@ -35,6 +33,7 @@ from .movefilesafterdownload import MoveFilesAfterDownloadPP | |||||||
| from .sponskrub import SponSkrubPP | from .sponskrub import SponSkrubPP | ||||||
| from .sponsorblock import SponsorBlockPP | from .sponsorblock import SponsorBlockPP | ||||||
| from .xattrpp import XAttrMetadataPP | from .xattrpp import XAttrMetadataPP | ||||||
|  | from ..utils import load_plugins | ||||||
| 
 | 
 | ||||||
| _PLUGIN_CLASSES = load_plugins('postprocessor', 'PP', globals()) | _PLUGIN_CLASSES = load_plugins('postprocessor', 'PP', globals()) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -6,10 +6,10 @@ import time | |||||||
| import urllib.error | import urllib.error | ||||||
| 
 | 
 | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     PostProcessingError, | ||||||
|     _configuration_args, |     _configuration_args, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     network_exceptions, |     network_exceptions, | ||||||
|     PostProcessingError, |  | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     write_string, |     write_string, | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| import base64 | import base64 | ||||||
| import imghdr | import imghdr | ||||||
| import os | import os | ||||||
| import subprocess |  | ||||||
| import re | import re | ||||||
|  | import subprocess | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     from mutagen.flac import Picture, FLAC |     from mutagen.flac import FLAC, Picture | ||||||
|     from mutagen.mp4 import MP4, MP4Cover |     from mutagen.mp4 import MP4, MP4Cover | ||||||
|     from mutagen.oggopus import OggOpus |     from mutagen.oggopus import OggOpus | ||||||
|     from mutagen.oggvorbis import OggVorbis |     from mutagen.oggvorbis import OggVorbis | ||||||
| @@ -14,17 +14,14 @@ except ImportError: | |||||||
|     has_mutagen = False |     has_mutagen = False | ||||||
| 
 | 
 | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from .ffmpeg import ( | from .ffmpeg import FFmpegPostProcessor, FFmpegThumbnailsConvertorPP | ||||||
|     FFmpegPostProcessor, |  | ||||||
|     FFmpegThumbnailsConvertorPP, |  | ||||||
| ) |  | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     Popen, | ||||||
|  |     PostProcessingError, | ||||||
|     check_executable, |     check_executable, | ||||||
|     encodeArgument, |     encodeArgument, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     error_to_compat_str, |     error_to_compat_str, | ||||||
|     Popen, |  | ||||||
|     PostProcessingError, |  | ||||||
|     prepend_extension, |     prepend_extension, | ||||||
|     shell_quote, |     shell_quote, | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -2,11 +2,7 @@ import subprocess | |||||||
| 
 | 
 | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from ..compat import compat_shlex_quote | from ..compat import compat_shlex_quote | ||||||
| from ..utils import ( | from ..utils import PostProcessingError, encodeArgument, variadic | ||||||
|     encodeArgument, |  | ||||||
|     PostProcessingError, |  | ||||||
|     variadic, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ExecPP(PostProcessor): | class ExecPP(PostProcessor): | ||||||
|   | |||||||
| @@ -1,27 +1,26 @@ | |||||||
| import collections | import collections | ||||||
| import itertools | import itertools | ||||||
|  | import json | ||||||
| import os | import os | ||||||
|  | import re | ||||||
| import subprocess | import subprocess | ||||||
| import time | import time | ||||||
| import re |  | ||||||
| import json |  | ||||||
| 
 | 
 | ||||||
| from .common import AudioConversionError, PostProcessor | from .common import AudioConversionError, PostProcessor | ||||||
| 
 |  | ||||||
| from ..compat import compat_str | from ..compat import compat_str | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     ISO639Utils, | ||||||
|  |     Popen, | ||||||
|  |     PostProcessingError, | ||||||
|  |     _get_exe_version_output, | ||||||
|  |     detect_exe_version, | ||||||
|     determine_ext, |     determine_ext, | ||||||
|     dfxp2srt, |     dfxp2srt, | ||||||
|     encodeArgument, |     encodeArgument, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     float_or_none, |     float_or_none, | ||||||
|     _get_exe_version_output, |  | ||||||
|     detect_exe_version, |  | ||||||
|     is_outdated_version, |     is_outdated_version, | ||||||
|     ISO639Utils, |  | ||||||
|     orderedSet, |     orderedSet, | ||||||
|     Popen, |  | ||||||
|     PostProcessingError, |  | ||||||
|     prepend_extension, |     prepend_extension, | ||||||
|     replace_extension, |     replace_extension, | ||||||
|     shell_quote, |     shell_quote, | ||||||
| @@ -30,7 +29,6 @@ from ..utils import ( | |||||||
|     write_json_file, |     write_json_file, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| EXT_TO_OUT_FORMATS = { | EXT_TO_OUT_FORMATS = { | ||||||
|     'aac': 'adts', |     'aac': 'adts', | ||||||
|     'flac': 'flac', |     'flac': 'flac', | ||||||
|   | |||||||
| @@ -3,17 +3,9 @@ import heapq | |||||||
| import os | import os | ||||||
| 
 | 
 | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from .ffmpeg import ( | from .ffmpeg import FFmpegPostProcessor, FFmpegSubtitlesConvertorPP | ||||||
|     FFmpegPostProcessor, |  | ||||||
|     FFmpegSubtitlesConvertorPP |  | ||||||
| ) |  | ||||||
| from .sponsorblock import SponsorBlockPP | from .sponsorblock import SponsorBlockPP | ||||||
| from ..utils import ( | from ..utils import PostProcessingError, orderedSet, prepend_extension | ||||||
|     orderedSet, |  | ||||||
|     PostProcessingError, |  | ||||||
|     prepend_extension, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| _TINY_CHAPTER_DURATION = 1 | _TINY_CHAPTER_DURATION = 1 | ||||||
| DEFAULT_SPONSORBLOCK_CHAPTER_TITLE = '[SponsorBlock]: %(category_names)l' | DEFAULT_SPONSORBLOCK_CHAPTER_TITLE = '[SponsorBlock]: %(category_names)l' | ||||||
|   | |||||||
| @@ -3,10 +3,10 @@ import shutil | |||||||
| 
 | 
 | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     PostProcessingError, | ||||||
|     decodeFilename, |     decodeFilename, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     make_dir, |     make_dir, | ||||||
|     PostProcessingError, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -4,15 +4,15 @@ import subprocess | |||||||
| 
 | 
 | ||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     Popen, | ||||||
|  |     PostProcessingError, | ||||||
|     check_executable, |     check_executable, | ||||||
|     cli_option, |     cli_option, | ||||||
|     encodeArgument, |     encodeArgument, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|  |     prepend_extension, | ||||||
|     shell_quote, |     shell_quote, | ||||||
|     str_or_none, |     str_or_none, | ||||||
|     Popen, |  | ||||||
|     PostProcessingError, |  | ||||||
|     prepend_extension, |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| from hashlib import sha256 |  | ||||||
| import json | import json | ||||||
| import re | import re | ||||||
|  | from hashlib import sha256 | ||||||
| 
 | 
 | ||||||
| from .ffmpeg import FFmpegPostProcessor | from .ffmpeg import FFmpegPostProcessor | ||||||
| from ..compat import compat_urllib_parse_urlencode | from ..compat import compat_urllib_parse_urlencode | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| from .common import PostProcessor | from .common import PostProcessor | ||||||
| from ..compat import compat_os_name | from ..compat import compat_os_name | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     hyphenate_date, |  | ||||||
|     write_xattr, |  | ||||||
|     PostProcessingError, |     PostProcessingError, | ||||||
|     XAttrMetadataError, |     XAttrMetadataError, | ||||||
|     XAttrUnavailableError, |     XAttrUnavailableError, | ||||||
|  |     hyphenate_date, | ||||||
|  |     write_xattr, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -9,11 +9,7 @@ | |||||||
| import collections | import collections | ||||||
| import socket | import socket | ||||||
| 
 | 
 | ||||||
| from .compat import ( | from .compat import compat_ord, compat_struct_pack, compat_struct_unpack | ||||||
|     compat_ord, |  | ||||||
|     compat_struct_pack, |  | ||||||
|     compat_struct_unpack, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| __author__ = 'Timo Schmid <coding@timoschmid.de>' | __author__ = 'Timo Schmid <coding@timoschmid.de>' | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -8,8 +8,7 @@ import traceback | |||||||
| from zipimport import zipimporter | from zipimport import zipimporter | ||||||
| 
 | 
 | ||||||
| from .compat import compat_realpath | from .compat import compat_realpath | ||||||
| from .utils import encode_compat_str, Popen, write_string | from .utils import Popen, encode_compat_str, write_string | ||||||
| 
 |  | ||||||
| from .version import __version__ | from .version import __version__ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -9,8 +9,8 @@ import collections | |||||||
| import contextlib | import contextlib | ||||||
| import ctypes | import ctypes | ||||||
| import datetime | import datetime | ||||||
| import email.utils |  | ||||||
| import email.header | import email.header | ||||||
|  | import email.utils | ||||||
| import errno | import errno | ||||||
| import functools | import functools | ||||||
| import gzip | import gzip | ||||||
| @@ -22,11 +22,13 @@ import itertools | |||||||
| import json | import json | ||||||
| import locale | import locale | ||||||
| import math | import math | ||||||
|  | import mimetypes | ||||||
| import operator | import operator | ||||||
| import os | import os | ||||||
| import platform | import platform | ||||||
| import random | import random | ||||||
| import re | import re | ||||||
|  | import shlex | ||||||
| import socket | import socket | ||||||
| import ssl | import ssl | ||||||
| import subprocess | import subprocess | ||||||
| @@ -34,16 +36,11 @@ import sys | |||||||
| import tempfile | import tempfile | ||||||
| import time | import time | ||||||
| import traceback | import traceback | ||||||
|  | import urllib.parse | ||||||
| import xml.etree.ElementTree | import xml.etree.ElementTree | ||||||
| import zlib | import zlib | ||||||
| import mimetypes |  | ||||||
| import urllib.parse |  | ||||||
| import shlex |  | ||||||
| 
 | 
 | ||||||
| from .compat import ( | from .compat import ( | ||||||
|     compat_HTMLParseError, |  | ||||||
|     compat_HTMLParser, |  | ||||||
|     compat_HTTPError, |  | ||||||
|     compat_brotli, |     compat_brotli, | ||||||
|     compat_chr, |     compat_chr, | ||||||
|     compat_cookiejar, |     compat_cookiejar, | ||||||
| @@ -51,7 +48,10 @@ from .compat import ( | |||||||
|     compat_expanduser, |     compat_expanduser, | ||||||
|     compat_html_entities, |     compat_html_entities, | ||||||
|     compat_html_entities_html5, |     compat_html_entities_html5, | ||||||
|  |     compat_HTMLParseError, | ||||||
|  |     compat_HTMLParser, | ||||||
|     compat_http_client, |     compat_http_client, | ||||||
|  |     compat_HTTPError, | ||||||
|     compat_os_name, |     compat_os_name, | ||||||
|     compat_parse_qs, |     compat_parse_qs, | ||||||
|     compat_shlex_quote, |     compat_shlex_quote, | ||||||
| @@ -59,18 +59,14 @@ from .compat import ( | |||||||
|     compat_struct_pack, |     compat_struct_pack, | ||||||
|     compat_struct_unpack, |     compat_struct_unpack, | ||||||
|     compat_urllib_error, |     compat_urllib_error, | ||||||
|  |     compat_urllib_parse_unquote_plus, | ||||||
|     compat_urllib_parse_urlencode, |     compat_urllib_parse_urlencode, | ||||||
|     compat_urllib_parse_urlparse, |     compat_urllib_parse_urlparse, | ||||||
|     compat_urllib_parse_unquote_plus, |  | ||||||
|     compat_urllib_request, |     compat_urllib_request, | ||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
|     compat_websockets, |     compat_websockets, | ||||||
| ) | ) | ||||||
| 
 | from .socks import ProxyType, sockssocket | ||||||
| from .socks import ( |  | ||||||
|     ProxyType, |  | ||||||
|     sockssocket, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     import certifi |     import certifi | ||||||
|   | |||||||
| @@ -8,13 +8,11 @@ Regular expressions based on the W3C WebVTT specification | |||||||
| in RFC 8216 §3.5 <https://tools.ietf.org/html/rfc8216#section-3.5>. | in RFC 8216 §3.5 <https://tools.ietf.org/html/rfc8216#section-3.5>. | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import re |  | ||||||
| import io | import io | ||||||
|  | import re | ||||||
|  | 
 | ||||||
|  | from .compat import compat_Match, compat_Pattern | ||||||
| from .utils import int_or_none, timetuple_from_msec | from .utils import int_or_none, timetuple_from_msec | ||||||
| from .compat import ( |  | ||||||
|     compat_Pattern, |  | ||||||
|     compat_Match, |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class _MatchParser: | class _MatchParser: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan