diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2013-12-09 22:00:42 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2013-12-09 22:00:42 +0100 | 
| commit | 26e6393134b35121ab956a408250c565596dd2a1 (patch) | |
| tree | 7935c4fbb14b3d44759f048a9c44ed38c0ad22b8 | |
| parent | 49929a20a7166199307b9d8eda623f8b81540bdb (diff) | |
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
| -rw-r--r-- | test/test_YoutubeDL.py | 15 | ||||
| -rw-r--r-- | youtube_dl/YoutubeDL.py | 5 | 
2 files changed, 17 insertions, 3 deletions
| diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index 58cf9c313..3100c362a 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -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() diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 2dd7e4907..11d4972dd 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -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 | 
