mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 03:47:07 -05:00 
			
		
		
		
	Set 'NA' as the default value for missing fields in the output template (fixes #1931)
Remove the `except KeyError` clause, it won't get raised anymore
This commit is contained in:
		@@ -7,6 +7,7 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class YDL(FakeYDL):
 | 
			
		||||
@@ -140,6 +141,20 @@ class TestFormatSelection(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(test_dict['extractor'], 'Foo')
 | 
			
		||||
        self.assertEqual(test_dict['playlist'], 'funny videos')
 | 
			
		||||
 | 
			
		||||
    def test_prepare_filename(self):
 | 
			
		||||
        info = {
 | 
			
		||||
            u'id': u'1234',
 | 
			
		||||
            u'ext': u'mp4',
 | 
			
		||||
            u'width': None,
 | 
			
		||||
        }
 | 
			
		||||
        def fname(templ):
 | 
			
		||||
            ydl = YoutubeDL({'outtmpl': templ})
 | 
			
		||||
            return ydl.prepare_filename(info)
 | 
			
		||||
        self.assertEqual(fname(u'%(id)s.%(ext)s'), u'1234.mp4')
 | 
			
		||||
        self.assertEqual(fname(u'%(id)s-%(width)s.%(ext)s'), u'1234-NA.mp4')
 | 
			
		||||
        # Replace missing fields with 'NA'
 | 
			
		||||
        self.assertEqual(fname(u'%(uploader_date)s-%(id)s.%(ext)s'), u'NA-1234.mp4')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    unittest.main()
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
 | 
			
		||||
from __future__ import absolute_import
 | 
			
		||||
 | 
			
		||||
import collections
 | 
			
		||||
import errno
 | 
			
		||||
import io
 | 
			
		||||
import json
 | 
			
		||||
@@ -401,13 +402,11 @@ class YoutubeDL(object):
 | 
			
		||||
                is_id=(k == u'id'))
 | 
			
		||||
            template_dict = dict((k, sanitize(k, v))
 | 
			
		||||
                                 for k, v in template_dict.items())
 | 
			
		||||
            template_dict = collections.defaultdict(lambda: u'NA', template_dict)
 | 
			
		||||
 | 
			
		||||
            tmpl = os.path.expanduser(self.params['outtmpl'])
 | 
			
		||||
            filename = tmpl % template_dict
 | 
			
		||||
            return filename
 | 
			
		||||
        except KeyError as err:
 | 
			
		||||
            self.report_error(u'Erroneous output template')
 | 
			
		||||
            return None
 | 
			
		||||
        except ValueError as err:
 | 
			
		||||
            self.report_error(u'Error in output template: ' + str(err) + u' (encoding: ' + repr(preferredencoding()) + ')')
 | 
			
		||||
            return None
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user