X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2FFileDownloader.py;h=80c2546ea9b571005088716a63dcf3291ca384be;hb=767e00277f379410288476ecd05622968eec1d1b;hp=100779756d956033ace52742d9be3ef13b821323;hpb=71f37e90ef330f056abe456c93d59cee23765ede;p=youtube-dl diff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py index 100779756..80c2546ea 100644 --- a/youtube_dl/FileDownloader.py +++ b/youtube_dl/FileDownloader.py @@ -89,6 +89,7 @@ class FileDownloader(object): keepvideo: Keep the video file after post-processing min_filesize: Skip files smaller than this size max_filesize: Skip files larger than this size + daterange: A DateRange object, download only if the upload_date is in the range. """ params = None @@ -254,7 +255,7 @@ class FileDownloader(object): 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(): + if sys.stderr.isatty() and os.name != 'nt': _msg_header=u'\033[0;33mWARNING:\033[0m' else: _msg_header=u'WARNING:' @@ -266,7 +267,7 @@ class FileDownloader(object): Do the same as trouble, but prefixes the message with 'ERROR:', colored in red if stderr is a tty file. ''' - if sys.stderr.isatty(): + if sys.stderr.isatty() and os.name != 'nt': _msg_header = u'\033[0;31mERROR:\033[0m' else: _msg_header = u'ERROR:' @@ -406,10 +407,10 @@ class FileDownloader(object): filename = self.params['outtmpl'] % template_dict return filename except KeyError as err: - self.trouble(u'ERROR: Erroneous output template') + self.report_error(u'Erroneous output template') return None except ValueError as err: - self.trouble(u'ERROR: Insufficient system charset ' + repr(preferredencoding())) + self.report_error(u'Insufficient system charset ' + repr(preferredencoding())) return None def _match_entry(self, info_dict): @@ -424,6 +425,11 @@ class FileDownloader(object): if rejecttitle: if re.search(rejecttitle, title, re.IGNORECASE): return u'"' + title + '" title matched reject pattern "' + rejecttitle + '"' + date = info_dict.get('upload_date', None) + if date is not None: + dateRange = self.params.get('daterange', DateRange()) + if date not in dateRange: + return u'[download] %s upload date is not in range %s' % (date_from_str(date).isoformat(), dateRange) return None def extract_info(self, url, download = True, ie_name = None): @@ -449,7 +455,7 @@ 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, ' + 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 @@ -468,16 +474,16 @@ class FileDownloader(object): results.append(self.process_ie_result(ie_result, download)) return results except ExtractorError as de: # An error we somewhat expected - self.trouble(u'ERROR: ' + compat_str(de), de.format_traceback()) + self.report_error(compat_str(de), de.format_traceback()) break except Exception as e: if self.params.get('ignoreerrors', False): - self.trouble(u'ERROR: ' + compat_str(e), tb=compat_str(traceback.format_exc())) + self.report_error(compat_str(e), tb=compat_str(traceback.format_exc())) break else: raise if not suitable_found: - self.trouble(u'ERROR: no suitable InfoExtractor: %s' % url) + self.report_error(u'no suitable InfoExtractor: %s' % url) def process_ie_result(self, ie_result, download = True): """ @@ -636,7 +642,7 @@ class FileDownloader(object): with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8') as subfile: subfile.write(sub) except (OSError, IOError): - self.trouble(u'ERROR: Cannot write subtitles file ' + descfn) + self.report_error(u'Cannot write subtitles file ' + descfn) return if self.params.get('onlysubtitles', False): return @@ -683,7 +689,7 @@ class FileDownloader(object): #It also downloads the videos videos = self.extract_info(url) except UnavailableVideoError: - self.trouble(u'\nERROR: unable to download video') + self.report_error(u'unable to download video') except MaxDownloadsReached: self.to_screen(u'[info] Maximum number of downloaded files reached.') raise