test_YoutubeDL.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env python
  2. # Allow direct execution
  3. import os
  4. import sys
  5. import unittest
  6. sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  7. from test.helper import FakeYDL
  8. class YDL(FakeYDL):
  9. def __init__(self):
  10. super(YDL, self).__init__()
  11. self.downloaded_info_dicts = []
  12. def process_info(self, info_dict):
  13. self.downloaded_info_dicts.append(info_dict)
  14. class TestFormatSelection(unittest.TestCase):
  15. def test_prefer_free_formats(self):
  16. # Same resolution => download webm
  17. ydl = YDL()
  18. ydl.params['prefer_free_formats'] = True
  19. formats = [
  20. {u'ext': u'webm', u'height': 460},
  21. {u'ext': u'mp4', u'height': 460},
  22. ]
  23. info_dict = {u'formats': formats, u'extractor': u'test'}
  24. ydl.process_ie_result(info_dict)
  25. downloaded = ydl.downloaded_info_dicts[0]
  26. self.assertEqual(downloaded[u'ext'], u'webm')
  27. # Different resolution => download best quality (mp4)
  28. ydl = YDL()
  29. ydl.params['prefer_free_formats'] = True
  30. formats = [
  31. {u'ext': u'webm', u'height': 720},
  32. {u'ext': u'mp4', u'height': 1080},
  33. ]
  34. info_dict[u'formats'] = formats
  35. ydl.process_ie_result(info_dict)
  36. downloaded = ydl.downloaded_info_dicts[0]
  37. self.assertEqual(downloaded[u'ext'], u'mp4')
  38. # No prefer_free_formats => keep original formats order
  39. ydl = YDL()
  40. ydl.params['prefer_free_formats'] = False
  41. formats = [
  42. {u'ext': u'webm', u'height': 720},
  43. {u'ext': u'flv', u'height': 720},
  44. ]
  45. info_dict[u'formats'] = formats
  46. ydl.process_ie_result(info_dict)
  47. downloaded = ydl.downloaded_info_dicts[0]
  48. self.assertEqual(downloaded[u'ext'], u'flv')
  49. if __name__ == '__main__':
  50. unittest.main()