Merge remote-tracking branch 'origin/master' into IE_cleanup
[youtube-dl] / youtube_dl / FileDownloader.py
index 4e9b55f49268fbf22bf5c6057ee13de94b663007..870c8227235c5a423768be8b13e92f7cb9cb2a7c 100644 (file)
@@ -327,10 +327,13 @@ class FileDownloader(object):
                """Generate the output filename."""
                try:
                        template_dict = dict(info_dict)
+
                        template_dict['epoch'] = int(time.time())
                        template_dict['autonumber'] = u'%05d' % self._num_downloads
 
+                       template_dict = dict((key, u'NA' if val is None else val) for key, val in template_dict.items())
                        template_dict = dict((k, sanitize_filename(u(v), self.params.get('restrictfilenames'))) for k,v in template_dict.items())
+
                        filename = self.params['outtmpl'] % template_dict
                        return filename
                except (ValueError, KeyError), err:
@@ -359,6 +362,9 @@ class FileDownloader(object):
                # Keep for backwards compatibility
                info_dict['stitle'] = info_dict['title']
 
+               if not 'format' in info_dict:
+                       info_dict['format'] = info_dict['ext']
+
                reason = self._match_entry(info_dict)
                if reason is not None:
                        self.to_screen(u'[download] ' + reason)
@@ -481,6 +487,11 @@ class FileDownloader(object):
                                if not ie.suitable(url):
                                        continue
 
+                               # Warn if the _WORKING attribute is False
+                               if not ie.working():
+                                       self.trouble(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.')
+
                                # Suitable InfoExtractor found
                                suitable_found = True