Move console_title to YoutubeDL

This commit is contained in:
Philipp Hagemeister 2013-11-17 11:39:52 +01:00
parent 1d699755e0
commit 1e5b9a95fd
2 changed files with 16 additions and 14 deletions

View File

@ -5,9 +5,6 @@ import subprocess
import sys import sys
import time import time
if os.name == 'nt':
import ctypes
from .utils import ( from .utils import (
compat_urllib_error, compat_urllib_error,
compat_urllib_request, compat_urllib_request,
@ -151,16 +148,8 @@ class FileDownloader(object):
def to_stderr(self, message): def to_stderr(self, message):
self.ydl.to_screen(message) self.ydl.to_screen(message)
def to_cons_title(self, message): def to_console_title(self, message):
"""Set console/terminal window title to message.""" self.ydl.to_console_title(message)
if not self.params.get('consoletitle', False):
return
if os.name == 'nt' and 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))
elif 'TERM' in os.environ:
self.to_screen('\033]0;%s\007' % message, skip_eol=True)
def trouble(self, *args, **kargs): def trouble(self, *args, **kargs):
self.ydl.trouble(*args, **kargs) self.ydl.trouble(*args, **kargs)
@ -249,7 +238,7 @@ class FileDownloader(object):
else: else:
self.to_screen(u'\r%s[download] %s of %s at %s ETA %s' % self.to_screen(u'\r%s[download] %s of %s at %s ETA %s' %
(clear_line, percent_str, data_len_str, speed_str, eta_str), skip_eol=True) (clear_line, percent_str, data_len_str, speed_str, eta_str), skip_eol=True)
self.to_cons_title(u'youtube-dl - %s of %s at %s ETA %s' % self.to_console_title(u'youtube-dl - %s of %s at %s ETA %s' %
(percent_str.strip(), data_len_str.strip(), speed_str.strip(), eta_str.strip())) (percent_str.strip(), data_len_str.strip(), speed_str.strip(), eta_str.strip()))
def report_resuming_byte(self, resume_len): def report_resuming_byte(self, resume_len):

View File

@ -13,6 +13,9 @@ import sys
import time import time
import traceback import traceback
if os.name == 'nt':
import ctypes
from .utils import * from .utils import *
from .extractor import get_info_extractor, gen_extractors from .extractor import get_info_extractor, gen_extractors
from .FileDownloader import FileDownloader from .FileDownloader import FileDownloader
@ -176,6 +179,16 @@ class YoutubeDL(object):
output = output.encode(preferredencoding()) output = output.encode(preferredencoding())
sys.stderr.write(output) sys.stderr.write(output)
def to_console_title(self, message):
if not self.params.get('consoletitle', False):
return
if os.name == 'nt' and 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))
elif 'TERM' in os.environ:
self.to_screen('\033]0;%s\007' % message, skip_eol=True)
def fixed_template(self): def fixed_template(self):
"""Checks if the output template is fixed.""" """Checks if the output template is fixed."""
return (re.search(u'(?u)%\\(.+?\\)s', self.params['outtmpl']) is None) return (re.search(u'(?u)%\\(.+?\\)s', self.params['outtmpl']) is None)