test_dailymotion_subtitles.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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_onlysubtitles(self):
  45. DL = FakeYDL()
  46. DL.params['writesubtitles'] = True
  47. DL.params['onlysubtitles'] = True
  48. IE = DailymotionIE(DL)
  49. info_dict = IE.extract(TEST_URL)
  50. sub = info_dict[0]['subtitles']['en']
  51. self.assertEqual(md5(sub), '976553874490cba125086bbfea3ff76f')
  52. def test_allsubtitles(self):
  53. DL = FakeYDL()
  54. DL.params['allsubtitles'] = True
  55. IE = DailymotionIE(DL)
  56. info_dict = IE.extract(TEST_URL)
  57. subtitles = info_dict[0]['subtitles']
  58. self.assertEqual(len(subtitles.keys()), 5)
  59. # def test_subtitles_sbv_format(self):
  60. # DL = FakeYDL()
  61. # DL.params['writesubtitles'] = True
  62. # DL.params['subtitlesformat'] = 'sbv'
  63. # IE = DailymotionIE(DL)
  64. # info_dict = IE.extract(TEST_URL)
  65. # sub = info_dict[0]['subtitles'][0]
  66. # self.assertEqual(md5(sub), '13aeaa0c245a8bed9a451cb643e3ad8b')
  67. # def test_subtitles_vtt_format(self):
  68. # DL = FakeYDL()
  69. # DL.params['writesubtitles'] = True
  70. # DL.params['subtitlesformat'] = 'vtt'
  71. # IE = DailymotionIE(DL)
  72. # info_dict = IE.extract(TEST_URL)
  73. # sub = info_dict[0]['subtitles'][0]
  74. # self.assertEqual(md5(sub), '356cdc577fde0c6783b9b822e7206ff7')
  75. def test_list_subtitles(self):
  76. DL = FakeYDL()
  77. DL.params['listsubtitles'] = True
  78. IE = DailymotionIE(DL)
  79. info_dict = IE.extract(TEST_URL)
  80. self.assertEqual(info_dict, None)
  81. def test_automatic_captions(self):
  82. DL = FakeYDL()
  83. DL.params['writeautomaticsub'] = True
  84. DL.params['subtitleslang'] = 'en'
  85. IE = DailymotionIE(DL)
  86. info_dict = IE.extract(TEST_URL)
  87. sub = info_dict[0]['subtitles']
  88. self.assertTrue(len(sub) == 0)
  89. if __name__ == '__main__':
  90. unittest.main()