test_ted_subtitles.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. import sys
  3. import unittest
  4. import hashlib
  5. # Allow direct execution
  6. import os
  7. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  8. from youtube_dl.extractor import TEDIE
  9. from youtube_dl.utils import *
  10. from test.helper import FakeYDL, md5
  11. class TestTedSubtitles(unittest.TestCase):
  12. def setUp(self):
  13. self.DL = FakeYDL()
  14. self.url = 'http://www.ted.com/talks/dan_dennett_on_our_consciousness.html'
  15. def getInfoDict(self):
  16. IE = TEDIE(self.DL)
  17. info_dict = IE.extract(self.url)
  18. return info_dict
  19. def getSubtitles(self):
  20. info_dict = self.getInfoDict()
  21. return info_dict['subtitles']
  22. def test_no_writesubtitles(self):
  23. subtitles = self.getSubtitles()
  24. self.assertEqual(subtitles, None)
  25. def test_subtitles(self):
  26. self.DL.params['writesubtitles'] = True
  27. subtitles = self.getSubtitles()
  28. self.assertEqual(md5(subtitles['en']), '2154f31ff9b9f89a0aa671537559c21d')
  29. def test_subtitles_lang(self):
  30. self.DL.params['writesubtitles'] = True
  31. self.DL.params['subtitleslangs'] = ['fr']
  32. subtitles = self.getSubtitles()
  33. self.assertEqual(md5(subtitles['fr']), '7616cbc6df20ec2c1204083c83871cf6')
  34. def test_allsubtitles(self):
  35. self.DL.params['writesubtitles'] = True
  36. self.DL.params['allsubtitles'] = True
  37. subtitles = self.getSubtitles()
  38. self.assertEqual(len(subtitles.keys()), 28)
  39. def test_list_subtitles(self):
  40. self.DL.params['listsubtitles'] = True
  41. info_dict = self.getInfoDict()
  42. self.assertEqual(info_dict, None)
  43. def test_automatic_captions(self):
  44. self.DL.params['writeautomaticsub'] = True
  45. self.DL.params['subtitleslang'] = ['en']
  46. subtitles = self.getSubtitles()
  47. self.assertTrue(len(subtitles.keys()) == 0)
  48. # def test_nosubtitles(self):
  49. # self.DL.expect_warning(u'video doesn\'t have subtitles')
  50. # self.url = 'http://www.ted.com/talks/rodrigo_canales_the_deadly_genius_of_drug_cartels.html'
  51. # self.DL.params['writesubtitles'] = True
  52. # self.DL.params['allsubtitles'] = True
  53. # subtitles = self.getSubtitles()
  54. def test_multiple_langs(self):
  55. self.DL.params['writesubtitles'] = True
  56. langs = ['es', 'fr', 'de']
  57. self.DL.params['subtitleslangs'] = langs
  58. subtitles = self.getSubtitles()
  59. for lang in langs:
  60. self.assertTrue(subtitles.get(lang) is not None, u'Subtitles for \'%s\' not extracted' % lang)
  61. if __name__ == '__main__':
  62. unittest.main()