mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[cleanup] Misc
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -27,11 +27,13 @@ cookies | |||||||
| *.ass | *.ass | ||||||
| *.avi | *.avi | ||||||
| *.desktop | *.desktop | ||||||
|  | *.f4v | ||||||
| *.flac | *.flac | ||||||
| *.flv | *.flv | ||||||
| *.jpeg | *.jpeg | ||||||
| *.jpg | *.jpg | ||||||
| *.m4a | *.m4a | ||||||
|  | *.mpga | ||||||
| *.m4v | *.m4v | ||||||
| *.mhtml | *.mhtml | ||||||
| *.mkv | *.mkv | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @@ -17,8 +17,8 @@ pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites \ | |||||||
| clean-test: | clean-test: | ||||||
| 	rm -rf test/testdata/sigs/player-*.js tmp/ *.annotations.xml *.aria2 *.description *.dump *.frag \ | 	rm -rf test/testdata/sigs/player-*.js tmp/ *.annotations.xml *.aria2 *.description *.dump *.frag \ | ||||||
| 	*.frag.aria2 *.frag.urls *.info.json *.live_chat.json *.meta *.part* *.tmp *.temp *.unknown_video *.ytdl \ | 	*.frag.aria2 *.frag.urls *.info.json *.live_chat.json *.meta *.part* *.tmp *.temp *.unknown_video *.ytdl \ | ||||||
| 	*.3gp *.ape *.ass *.avi *.desktop *.flac *.flv *.jpeg *.jpg *.m4a *.m4v *.mhtml *.mkv *.mov *.mp3 \ | 	*.3gp *.ape *.ass *.avi *.desktop *.f4v *.flac *.flv *.jpeg *.jpg *.m4a *.mpga *.m4v *.mhtml *.mkv *.mov \ | ||||||
| 	*.mp4 *.ogg *.opus *.png *.sbv *.srt *.swf *.swp *.ttml *.url *.vtt *.wav *.webloc *.webm *.webp | 	*.mp3 *.mp4 *.ogg *.opus *.png *.sbv *.srt *.swf *.swp *.ttml *.url *.vtt *.wav *.webloc *.webm *.webp | ||||||
| clean-dist: | clean-dist: | ||||||
| 	rm -rf yt-dlp.1.temp.md yt-dlp.1 README.txt MANIFEST build/ dist/ .coverage cover/ yt-dlp.tar.gz completions/ \ | 	rm -rf yt-dlp.1.temp.md yt-dlp.1 README.txt MANIFEST build/ dist/ .coverage cover/ yt-dlp.tar.gz completions/ \ | ||||||
| 	yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS .mailmap | 	yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS .mailmap | ||||||
|   | |||||||
| @@ -306,7 +306,7 @@ class YoutubeDL: | |||||||
|     client_certificate_password:  Password for client certificate private key, if encrypted. |     client_certificate_password:  Password for client certificate private key, if encrypted. | ||||||
|                         If not provided and the key is encrypted, yt-dlp will ask interactively |                         If not provided and the key is encrypted, yt-dlp will ask interactively | ||||||
|     prefer_insecure:   Use HTTP instead of HTTPS to retrieve information. |     prefer_insecure:   Use HTTP instead of HTTPS to retrieve information. | ||||||
|                        At the moment, this is only supported by YouTube. |                        (Only supported by some extractors) | ||||||
|     http_headers:      A dictionary of custom headers to be used for all requests |     http_headers:      A dictionary of custom headers to be used for all requests | ||||||
|     proxy:             URL of the proxy server to use |     proxy:             URL of the proxy server to use | ||||||
|     geo_verification_proxy:  URL of the proxy to use for IP address verification |     geo_verification_proxy:  URL of the proxy to use for IP address verification | ||||||
| @@ -589,7 +589,7 @@ class YoutubeDL: | |||||||
|         if current_version < MIN_RECOMMENDED: |         if current_version < MIN_RECOMMENDED: | ||||||
|             msg = ('Support for Python version %d.%d has been deprecated. ' |             msg = ('Support for Python version %d.%d has been deprecated. ' | ||||||
|                    'See  https://github.com/yt-dlp/yt-dlp/issues/3764  for more details.' |                    'See  https://github.com/yt-dlp/yt-dlp/issues/3764  for more details.' | ||||||
|                    '\n                    You will no longer recieve updates on this version') |                    '\n                    You will no longer receive updates on this version') | ||||||
|             if current_version < MIN_SUPPORTED: |             if current_version < MIN_SUPPORTED: | ||||||
|                 msg = 'Python version %d.%d is no longer supported' |                 msg = 'Python version %d.%d is no longer supported' | ||||||
|             self.deprecation_warning( |             self.deprecation_warning( | ||||||
| @@ -1693,7 +1693,7 @@ class YoutubeDL: | |||||||
|         assert ie_result['_type'] in ('playlist', 'multi_video') |         assert ie_result['_type'] in ('playlist', 'multi_video') | ||||||
| 
 | 
 | ||||||
|         title = ie_result.get('title') or ie_result.get('id') or '<Untitled>' |         title = ie_result.get('title') or ie_result.get('id') or '<Untitled>' | ||||||
|         self.to_screen(f'[download] Downloading playlist: {title}') |         self.to_screen(f'[download] Downloading {ie_result["_type"]}: {title}') | ||||||
| 
 | 
 | ||||||
|         all_entries = PlaylistEntries(self, ie_result) |         all_entries = PlaylistEntries(self, ie_result) | ||||||
|         entries = orderedSet(all_entries.get_requested_items(), lazy=True) |         entries = orderedSet(all_entries.get_requested_items(), lazy=True) | ||||||
|   | |||||||
| @@ -24,6 +24,10 @@ else: | |||||||
|         return intlist_to_bytes(aes_gcm_decrypt_and_verify(*map(bytes_to_intlist, (data, key, tag, nonce)))) |         return intlist_to_bytes(aes_gcm_decrypt_and_verify(*map(bytes_to_intlist, (data, key, tag, nonce)))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def aes_cbc_encrypt_bytes(data, key, iv, **kwargs): | ||||||
|  |     return intlist_to_bytes(aes_cbc_encrypt(*map(bytes_to_intlist, (data, key, iv)), **kwargs)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def unpad_pkcs7(data): | def unpad_pkcs7(data): | ||||||
|     return data[:-compat_ord(data[-1])] |     return data[:-compat_ord(data[-1])] | ||||||
| 
 | 
 | ||||||
| @@ -164,7 +168,7 @@ def aes_cbc_decrypt(data, key, iv): | |||||||
|     return decrypted_data |     return decrypted_data | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def aes_cbc_encrypt(data, key, iv, padding_mode='pkcs7'): | def aes_cbc_encrypt(data, key, iv, *, padding_mode='pkcs7'): | ||||||
|     """ |     """ | ||||||
|     Encrypt with aes in CBC mode |     Encrypt with aes in CBC mode | ||||||
| 
 | 
 | ||||||
| @@ -530,13 +534,21 @@ def ghash(subkey, data): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| __all__ = [ | __all__ = [ | ||||||
|     'aes_ctr_decrypt', |  | ||||||
|     'aes_cbc_decrypt', |     'aes_cbc_decrypt', | ||||||
|     'aes_cbc_decrypt_bytes', |     'aes_cbc_decrypt_bytes', | ||||||
|  |     'aes_ctr_decrypt', | ||||||
|     'aes_decrypt_text', |     'aes_decrypt_text', | ||||||
|     'aes_encrypt', |     'aes_decrypt', | ||||||
|  |     'aes_ecb_decrypt', | ||||||
|     'aes_gcm_decrypt_and_verify', |     'aes_gcm_decrypt_and_verify', | ||||||
|     'aes_gcm_decrypt_and_verify_bytes', |     'aes_gcm_decrypt_and_verify_bytes', | ||||||
|  | 
 | ||||||
|  |     'aes_cbc_encrypt', | ||||||
|  |     'aes_cbc_encrypt_bytes', | ||||||
|  |     'aes_ctr_encrypt', | ||||||
|  |     'aes_ecb_encrypt', | ||||||
|  |     'aes_encrypt', | ||||||
|  | 
 | ||||||
|     'key_expansion', |     'key_expansion', | ||||||
|     'pad_block', |     'pad_block', | ||||||
|     'unpad_pkcs7', |     'unpad_pkcs7', | ||||||
|   | |||||||
| @@ -1446,7 +1446,7 @@ from .rtbf import RTBFIE | |||||||
| from .rte import RteIE, RteRadioIE | from .rte import RteIE, RteRadioIE | ||||||
| from .rtlnl import ( | from .rtlnl import ( | ||||||
|     RtlNlIE, |     RtlNlIE, | ||||||
|     RTLLuTeleVODIE,  |     RTLLuTeleVODIE, | ||||||
|     RTLLuArticleIE, |     RTLLuArticleIE, | ||||||
|     RTLLuLiveIE, |     RTLLuLiveIE, | ||||||
|     RTLLuRadioIE, |     RTLLuRadioIE, | ||||||
|   | |||||||
| @@ -931,9 +931,9 @@ class InfoExtractor: | |||||||
| 
 | 
 | ||||||
|     def __print_error(self, errnote, fatal, video_id, err): |     def __print_error(self, errnote, fatal, video_id, err): | ||||||
|         if fatal: |         if fatal: | ||||||
|             raise ExtractorError(f'{video_id}: {errnote} ', cause=err) |             raise ExtractorError(f'{video_id}: {errnote}', cause=err) | ||||||
|         elif errnote: |         elif errnote: | ||||||
|             self.report_warning(f'{video_id}: {errnote} {err}') |             self.report_warning(f'{video_id}: {errnote}: {err}') | ||||||
| 
 | 
 | ||||||
|     def _parse_xml(self, xml_string, video_id, transform_source=None, fatal=True, errnote=None): |     def _parse_xml(self, xml_string, video_id, transform_source=None, fatal=True, errnote=None): | ||||||
|         if transform_source: |         if transform_source: | ||||||
|   | |||||||
| @@ -67,7 +67,7 @@ class MGTVIE(InfoExtractor): | |||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         video_id = self._match_id(url) |         video_id = self._match_id(url) | ||||||
|         tk2 = base64.urlsafe_b64encode( |         tk2 = base64.urlsafe_b64encode( | ||||||
|             f'did={compat_str(uuid.uuid4()).encode()}|pno=1030|ver=0.3.0301|clit={int(time.time())}'.encode())[::-1] |             f'did={str(uuid.uuid4())}|pno=1030|ver=0.3.0301|clit={int(time.time())}'.encode())[::-1] | ||||||
|         try: |         try: | ||||||
|             api_data = self._download_json( |             api_data = self._download_json( | ||||||
|                 'https://pcweb.api.mgtv.com/player/video', video_id, query={ |                 'https://pcweb.api.mgtv.com/player/video', video_id, query={ | ||||||
|   | |||||||
| @@ -104,9 +104,8 @@ class PhantomJSwrapper: | |||||||
| 
 | 
 | ||||||
|         self.exe = check_executable('phantomjs', ['-v']) |         self.exe = check_executable('phantomjs', ['-v']) | ||||||
|         if not self.exe: |         if not self.exe: | ||||||
|             raise ExtractorError('PhantomJS executable not found in PATH, ' |             raise ExtractorError( | ||||||
|                                  'download it from http://phantomjs.org', |                 'PhantomJS not found, Please download it from https://phantomjs.org/download.html', expected=True) | ||||||
|                                  expected=True) |  | ||||||
| 
 | 
 | ||||||
|         self.extractor = extractor |         self.extractor = extractor | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -1,7 +1,10 @@ | |||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ExtractorError, traverse_obj, parse_duration, unified_timestamp, |     ExtractorError, | ||||||
|     url_or_none |     parse_duration, | ||||||
|  |     traverse_obj, | ||||||
|  |     unified_timestamp, | ||||||
|  |     url_or_none, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -3,8 +3,8 @@ import re | |||||||
| import time | import time | ||||||
| 
 | 
 | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..aes import aes_cbc_encrypt | from ..aes import aes_cbc_encrypt_bytes | ||||||
| from ..utils import bytes_to_intlist, determine_ext, intlist_to_bytes, int_or_none, traverse_obj, urljoin | from ..utils import determine_ext, int_or_none, traverse_obj, urljoin | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class WeTvBaseIE(InfoExtractor): | class WeTvBaseIE(InfoExtractor): | ||||||
| @@ -16,13 +16,11 @@ class WeTvBaseIE(InfoExtractor): | |||||||
|         payload = (f'{video_id}|{int(time.time())}|mg3c3b04ba|{app_version}|0000000000000000|' |         payload = (f'{video_id}|{int(time.time())}|mg3c3b04ba|{app_version}|0000000000000000|' | ||||||
|                    f'{platform}|{url[:48]}|{ua.lower()[:48]}||Mozilla|Netscape|Win32|00|') |                    f'{platform}|{url[:48]}|{ua.lower()[:48]}||Mozilla|Netscape|Win32|00|') | ||||||
| 
 | 
 | ||||||
|         ciphertext_int_bytes = aes_cbc_encrypt( |         return aes_cbc_encrypt_bytes( | ||||||
|             bytes_to_intlist(bytes(f'|{sum(map(ord, payload))}|{payload}', 'utf-8')), |             bytes(f'|{sum(map(ord, payload))}|{payload}', 'utf-8'), | ||||||
|             bytes_to_intlist(b'Ok\xda\xa3\x9e/\x8c\xb0\x7f^r-\x9e\xde\xf3\x14'), |             b'Ok\xda\xa3\x9e/\x8c\xb0\x7f^r-\x9e\xde\xf3\x14', | ||||||
|             bytes_to_intlist(b'\x01PJ\xf3V\xe6\x19\xcf.B\xbb\xa6\x8c?p\xf9'), |             b'\x01PJ\xf3V\xe6\x19\xcf.B\xbb\xa6\x8c?p\xf9', | ||||||
|             'whitespace') |             padding_mode='whitespace').hex() | ||||||
| 
 |  | ||||||
|         return intlist_to_bytes(ciphertext_int_bytes).hex() |  | ||||||
| 
 | 
 | ||||||
|     def _get_video_api_response(self, video_url, video_id, series_id, subtitle_format, video_format, video_quality): |     def _get_video_api_response(self, video_url, video_id, series_id, subtitle_format, video_format, video_quality): | ||||||
|         app_version = '3.5.57' |         app_version = '3.5.57' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan