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:
parent
49929a20a7
commit
26e6393134
2 changed files with 17 additions and 3 deletions
|
@ -7,6 +7,7 @@ import unittest
|
||||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
|
|
||||||
from test.helper import FakeYDL
|
from test.helper import FakeYDL
|
||||||
|
from youtube_dl import YoutubeDL
|
||||||
|
|
||||||
|
|
||||||
class YDL(FakeYDL):
|
class YDL(FakeYDL):
|
||||||
|
@ -140,6 +141,20 @@ class TestFormatSelection(unittest.TestCase):
|
||||||
self.assertEqual(test_dict['extractor'], 'Foo')
|
self.assertEqual(test_dict['extractor'], 'Foo')
|
||||||
self.assertEqual(test_dict['playlist'], 'funny videos')
|
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__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import collections
|
||||||
import errno
|
import errno
|
||||||
import io
|
import io
|
||||||
import json
|
import json
|
||||||
|
@ -401,13 +402,11 @@ class YoutubeDL(object):
|
||||||
is_id=(k == u'id'))
|
is_id=(k == u'id'))
|
||||||
template_dict = dict((k, sanitize(k, v))
|
template_dict = dict((k, sanitize(k, v))
|
||||||
for k, v in template_dict.items())
|
for k, v in template_dict.items())
|
||||||
|
template_dict = collections.defaultdict(lambda: u'NA', template_dict)
|
||||||
|
|
||||||
tmpl = os.path.expanduser(self.params['outtmpl'])
|
tmpl = os.path.expanduser(self.params['outtmpl'])
|
||||||
filename = tmpl % template_dict
|
filename = tmpl % template_dict
|
||||||
return filename
|
return filename
|
||||||
except KeyError as err:
|
|
||||||
self.report_error(u'Erroneous output template')
|
|
||||||
return None
|
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
self.report_error(u'Error in output template: ' + str(err) + u' (encoding: ' + repr(preferredencoding()) + ')')
|
self.report_error(u'Error in output template: ' + str(err) + u' (encoding: ' + repr(preferredencoding()) + ')')
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in a new issue