mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[core] Support emitting ConEmu progress codes (#10649)
Authored by: Grub4K
This commit is contained in:
		| @@ -157,7 +157,7 @@ from .utils import ( | ||||
|     write_json_file, | ||||
|     write_string, | ||||
| ) | ||||
| from .utils._utils import _UnsafeExtensionError, _YDLLogger | ||||
| from .utils._utils import _UnsafeExtensionError, _YDLLogger, _ProgressState | ||||
| from .utils.networking import ( | ||||
|     HTTPHeaderDict, | ||||
|     clean_headers, | ||||
| @@ -642,20 +642,19 @@ class YoutubeDL: | ||||
|         self.cache = Cache(self) | ||||
|         self.__header_cookies = [] | ||||
| 
 | ||||
|         try: | ||||
|             windows_enable_vt_mode() | ||||
|         except Exception as e: | ||||
|             self.write_debug(f'Failed to enable VT mode: {e}') | ||||
| 
 | ||||
|         stdout = sys.stderr if self.params.get('logtostderr') else sys.stdout | ||||
|         self._out_files = Namespace( | ||||
|             out=stdout, | ||||
|             error=sys.stderr, | ||||
|             screen=sys.stderr if self.params.get('quiet') else stdout, | ||||
|             console=None if os.name == 'nt' else next( | ||||
|                 filter(supports_terminal_sequences, (sys.stderr, sys.stdout)), None), | ||||
|             console=next(filter(supports_terminal_sequences, (sys.stderr, sys.stdout)), None), | ||||
|         ) | ||||
| 
 | ||||
|         try: | ||||
|             windows_enable_vt_mode() | ||||
|         except Exception as e: | ||||
|             self.write_debug(f'Failed to enable VT mode: {e}') | ||||
| 
 | ||||
|         if self.params.get('no_color'): | ||||
|             if self.params.get('color') is not None: | ||||
|                 self.params.setdefault('_warnings', []).append( | ||||
| @@ -956,21 +955,22 @@ class YoutubeDL: | ||||
|             self._write_string(f'{self._bidi_workaround(message)}\n', self._out_files.error, only_once=only_once) | ||||
| 
 | ||||
|     def _send_console_code(self, code): | ||||
|         if os.name == 'nt' or not self._out_files.console: | ||||
|             return | ||||
|         if not supports_terminal_sequences(self._out_files.console): | ||||
|             return False | ||||
|         self._write_string(code, self._out_files.console) | ||||
|         return True | ||||
| 
 | ||||
|     def to_console_title(self, message): | ||||
|         if not self.params.get('consoletitle', False): | ||||
|     def to_console_title(self, message=None, progress_state=None, percent=None): | ||||
|         if not self.params.get('consoletitle'): | ||||
|             return | ||||
|         message = remove_terminal_sequences(message) | ||||
|         if os.name == 'nt': | ||||
|             if ctypes.windll.kernel32.GetConsoleWindow(): | ||||
|                 # c_wchar_p() might not be necessary if `message` is | ||||
|                 # already of type unicode() | ||||
|                 ctypes.windll.kernel32.SetConsoleTitleW(ctypes.c_wchar_p(message)) | ||||
|         else: | ||||
|             self._send_console_code(f'\033]0;{message}\007') | ||||
| 
 | ||||
|         if message: | ||||
|             success = self._send_console_code(f'\033]0;{remove_terminal_sequences(message)}\007') | ||||
|             if not success and os.name == 'nt' and ctypes.windll.kernel32.GetConsoleWindow(): | ||||
|                 ctypes.windll.kernel32.SetConsoleTitleW(message) | ||||
| 
 | ||||
|         if isinstance(progress_state, _ProgressState): | ||||
|             self._send_console_code(progress_state.get_ansi_escape(percent)) | ||||
| 
 | ||||
|     def save_console_title(self): | ||||
|         if not self.params.get('consoletitle') or self.params.get('simulate'): | ||||
| @@ -984,6 +984,7 @@ class YoutubeDL: | ||||
| 
 | ||||
|     def __enter__(self): | ||||
|         self.save_console_title() | ||||
|         self.to_console_title(progress_state=_ProgressState.INDETERMINATE) | ||||
|         return self | ||||
| 
 | ||||
|     def save_cookies(self): | ||||
| @@ -992,6 +993,7 @@ class YoutubeDL: | ||||
| 
 | ||||
|     def __exit__(self, *args): | ||||
|         self.restore_console_title() | ||||
|         self.to_console_title(progress_state=_ProgressState.HIDDEN) | ||||
|         self.close() | ||||
| 
 | ||||
|     def close(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Simon Sawicki
					Simon Sawicki