diff options
| -rw-r--r-- | youtube_dl/FileDownloader.py | 20 | ||||
| -rwxr-xr-x | youtube_dl/InfoExtractors.py | 26 | 
2 files changed, 29 insertions, 17 deletions
| diff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py index 192ad37d2..73f8dbd5f 100644 --- a/youtube_dl/FileDownloader.py +++ b/youtube_dl/FileDownloader.py @@ -104,7 +104,7 @@ class FileDownloader(object):          self.params = params          if '%(stitle)s' in self.params['outtmpl']: -            self.to_stderr(u'WARNING: %(stitle)s is deprecated. Use the %(title)s and the --restrict-filenames flag(which also secures %(uploader)s et al) instead.') +            self.report_warning(u'%(stitle)s is deprecated. Use the %(title)s and the --restrict-filenames flag(which also secures %(uploader)s et al) instead.')      @staticmethod      def format_bytes(bytes): @@ -234,6 +234,18 @@ class FileDownloader(object):              raise DownloadError(message)          self._download_retcode = 1 +    def report_warning(self, message): +        ''' +        Print the message to stderr, it will be prefixed with 'WARNING:' +        If stderr is a tty file the 'WARNING:' will be colored +        ''' +        if sys.stderr.isatty(): +            _msg_header=u'\033[0;33mWARNING:\033[0m' +        else: +            _msg_header=u'WARNING:' +        warning_message=u'%s %s' % (_msg_header,message) +        self.to_stderr(warning_message) +      def slow_down(self, start_time, byte_counter):          """Sleep if the download speed is over the rate limit."""          rate_limit = self.params.get('ratelimit', None) @@ -496,8 +508,8 @@ class FileDownloader(object):                  # Warn if the _WORKING attribute is False                  if not ie.working(): -                    self.to_stderr(u'WARNING: the program functionality for this site has been marked as broken, ' -                                   u'and will probably not work. If you want to go on, use the -i option.') +                    self.report_warning(u'the program functionality for this site has been marked as broken, ' +                                        u'and will probably not work. If you want to go on, use the -i option.')                  # Suitable InfoExtractor found                  suitable_found = True @@ -555,7 +567,7 @@ class FileDownloader(object):                  self.to_screen(u'Deleting original file %s (pass -k to keep)' % filename)                  os.remove(encodeFilename(filename))              except (IOError, OSError): -                self.to_stderr(u'WARNING: Unable to remove downloaded video file') +                self.report_warning(u'Unable to remove downloaded video file')      def _download_with_rtmpdump(self, filename, url, player_url, page_url):          self.report_destination(filename) diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index 64079d1fd..d19efe93f 100755 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -308,7 +308,7 @@ class YoutubeIE(InfoExtractor):                  else:                      raise netrc.NetrcParseError('No authenticators for %s' % self._NETRC_MACHINE)              except (IOError, netrc.NetrcParseError) as err: -                self._downloader.to_stderr(u'WARNING: parsing .netrc: %s' % compat_str(err)) +                self._downloader.report_warning(u'parsing .netrc: %s' % compat_str(err))                  return          # Set language @@ -317,7 +317,7 @@ class YoutubeIE(InfoExtractor):              self.report_lang()              compat_urllib_request.urlopen(request).read()          except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -            self._downloader.to_stderr(u'WARNING: unable to set language: %s' % compat_str(err)) +            self._downloader.report_warning(u'unable to set language: %s' % compat_str(err))              return          # No authentication to be performed @@ -328,7 +328,7 @@ class YoutubeIE(InfoExtractor):          try:              login_page = compat_urllib_request.urlopen(request).read().decode('utf-8')          except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -            self._downloader.to_stderr(u'WARNING: unable to fetch login page: %s' % compat_str(err)) +            self._downloader.report_warning(u'unable to fetch login page: %s' % compat_str(err))              return          galx = None @@ -372,10 +372,10 @@ class YoutubeIE(InfoExtractor):              self.report_login()              login_results = compat_urllib_request.urlopen(request).read().decode('utf-8')              if re.search(r'(?i)<form[^>]* id="gaia_loginform"', login_results) is not None: -                self._downloader.to_stderr(u'WARNING: unable to log in: bad username or password') +                self._downloader.report_warning(u'unable to log in: bad username or password')                  return          except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -            self._downloader.to_stderr(u'WARNING: unable to log in: %s' % compat_str(err)) +            self._downloader.report_warning(u'unable to log in: %s' % compat_str(err))              return          # Confirm age @@ -1456,7 +1456,7 @@ class YoutubeSearchIE(InfoExtractor):                      self._downloader.trouble(u'ERROR: invalid download number %s for query "%s"' % (n, query))                      return                  elif n > self._max_youtube_results: -                    self._downloader.to_stderr(u'WARNING: ytsearch returns max %i results (you requested %i)' % (self._max_youtube_results, n)) +                    self._downloader.report_warning(u'ytsearch returns max %i results (you requested %i)' % (self._max_youtube_results, n))                      n = self._max_youtube_results                  self._download_n_results(query, n)                  return @@ -1538,7 +1538,7 @@ class GoogleSearchIE(InfoExtractor):                      self._downloader.trouble(u'ERROR: invalid download number %s for query "%s"' % (n, query))                      return                  elif n > self._max_google_results: -                    self._downloader.to_stderr(u'WARNING: gvsearch returns max %i results (you requested %i)' % (self._max_google_results, n)) +                    self._downloader.report_warning(u'gvsearch returns max %i results (you requested %i)' % (self._max_google_results, n))                      n = self._max_google_results                  self._download_n_results(query, n)                  return @@ -1622,7 +1622,7 @@ class YahooSearchIE(InfoExtractor):                      self._downloader.trouble(u'ERROR: invalid download number %s for query "%s"' % (n, query))                      return                  elif n > self._max_yahoo_results: -                    self._downloader.to_stderr(u'WARNING: yvsearch returns max %i results (you requested %i)' % (self._max_yahoo_results, n)) +                    self._downloader.report_warning(u'yvsearch returns max %i results (you requested %i)' % (self._max_yahoo_results, n))                      n = self._max_yahoo_results                  self._download_n_results(query, n)                  return @@ -2080,7 +2080,7 @@ class FacebookIE(InfoExtractor):                  else:                      raise netrc.NetrcParseError('No authenticators for %s' % self._NETRC_MACHINE)              except (IOError, netrc.NetrcParseError) as err: -                self._downloader.to_stderr(u'WARNING: parsing .netrc: %s' % compat_str(err)) +                self._downloader.report_warning(u'parsing .netrc: %s' % compat_str(err))                  return          if useremail is None: @@ -2097,10 +2097,10 @@ class FacebookIE(InfoExtractor):              self.report_login()              login_results = compat_urllib_request.urlopen(request).read()              if re.search(r'<form(.*)name="login"(.*)</form>', login_results) is not None: -                self._downloader.to_stderr(u'WARNING: unable to log in: bad username/password, or exceded login rate limit (~3/min). Check credentials or wait.') +                self._downloader.report_warning(u'unable to log in: bad username/password, or exceded login rate limit (~3/min). Check credentials or wait.')                  return          except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -            self._downloader.to_stderr(u'WARNING: unable to log in: %s' % compat_str(err)) +            self._downloader.report_warning(u'unable to log in: %s' % compat_str(err))              return      def _real_extract(self, url): @@ -3782,7 +3782,7 @@ class YouPornIE(InfoExtractor):          # Get the video date          result = re.search(r'Date:</label>(?P<date>.*) </li>', webpage)          if result is None: -            self._downloader.to_stderr(u'WARNING: unable to extract video date') +            self._downloader.report_warning(u'unable to extract video date')              upload_date = None          else:              upload_date = result.group('date').strip() @@ -3790,7 +3790,7 @@ class YouPornIE(InfoExtractor):          # Get the video uploader          result = re.search(r'Submitted:</label>(?P<uploader>.*)</li>', webpage)          if result is None: -            self._downloader.to_stderr(u'WARNING: unable to extract uploader') +            self._downloader.report_warning(u'unable to extract uploader')              video_uploader = None          else:              video_uploader = result.group('uploader').strip() | 
