test_dailymotion_subtitles.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env python
  2. import sys
  3. import unittest
  4. import json
  5. import io
  6. import hashlib
  7. # Allow direct execution
  8. import os
  9. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  10. from youtube_dl.extractor import DailymotionIE
  11. from youtube_dl.utils import *
  12. from helper import FakeYDL
  13. md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest()
  14. TEST_URL = 'http://www.dailymotion.com/video/xczg00'
  15. class TestDailymotionSubtitles(unittest.TestCase):
  16. def setUp(self):
  17. DL = FakeYDL()
  18. DL.params['allsubtitles'] = False
  19. DL.params['writesubtitles'] = False
  20. DL.params['subtitlesformat'] = 'srt'
  21. DL.params['listsubtitles'] = False
  22. def test_no_subtitles(self):
  23. DL = FakeYDL()
  24. DL.params['writesubtitles'] = False
  25. IE = DailymotionIE(DL)
  26. info_dict = IE.extract(TEST_URL)
  27. subtitles = info_dict[0]['subtitles']
  28. self.assertEqual(subtitles, None)
  29. def test_subtitles(self):
  30. DL = FakeYDL()
  31. DL.params['writesubtitles'] = True
  32. IE = DailymotionIE(DL)
  33. info_dict = IE.extract(TEST_URL)
  34. sub = info_dict[0]['subtitles']['en']
  35. self.assertEqual(md5(sub), '976553874490cba125086bbfea3ff76f')
  36. def test_subtitles_fr(self):
  37. DL = FakeYDL()
  38. DL.params['writesubtitles'] = True
  39. DL.params['subtitleslang'] = 'fr'
  40. IE = DailymotionIE(DL)
  41. info_dict = IE.extract(TEST_URL)
  42. sub = info_dict[0]['subtitles']['fr']
  43. self.assertEqual(md5(sub), '594564ec7d588942e384e920e5341792')
  44. def test_allsubtitles(self):
  45. DL = FakeYDL()
  46. DL.params['allsubtitles'] = True
  47. IE = DailymotionIE(DL)
  48. info_dict = IE.extract(TEST_URL)
  49. subtitles = info_dict[0]['subtitles']
  50. self.assertEqual(len(subtitles.keys()), 5)
  51. # def test_subtitles_sbv_format(self):
  52. # DL = FakeYDL()
  53. # DL.params['writesubtitles'] = True
  54. # DL.params['subtitlesformat'] = 'sbv'
  55. # IE = DailymotionIE(DL)
  56. # info_dict = IE.extract(TEST_URL)
  57. # sub = info_dict[0]['subtitles'][0]
  58. # self.assertEqual(md5(sub), '13aeaa0c245a8bed9a451cb643e3ad8b')
  59. # def test_subtitles_vtt_format(self):
  60. # DL = FakeYDL()
  61. # DL.params['writesubtitles'] = True
  62. # DL.params['subtitlesformat'] = 'vtt'
  63. # IE = DailymotionIE(DL)
  64. # info_dict = IE.extract(TEST_URL)
  65. # sub = info_dict[0]['subtitles'][0]
  66. # self.assertEqual(md5(sub), '356cdc577fde0c6783b9b822e7206ff7')
  67. def test_list_subtitles(self):
  68. DL = FakeYDL()
  69. DL.params['listsubtitles'] = True
  70. IE = DailymotionIE(DL)
  71. info_dict = IE.extract(TEST_URL)
  72. self.assertEqual(info_dict, None)
  73. def test_automatic_captions(self):
  74. DL = FakeYDL()
  75. DL.params['writeautomaticsub'] = True
  76. DL.params['subtitleslang'] = 'en'
  77. IE = DailymotionIE(DL)
  78. info_dict = IE.extract(TEST_URL)
  79. sub = info_dict[0]['subtitles']
  80. self.assertTrue(len(sub) == 0)
  81. if __name__ == '__main__':
  82. unittest.main()