aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorIsmael Mejia <iemejia@gmail.com>2013-08-07 18:59:11 +0200
committerIsmael Mejia <iemejia@gmail.com>2013-08-07 18:59:11 +0200
commit953e32b2c1be077e65bba844010a5a2707af2e2b (patch)
treeaec6c45a70102d4c49700bf2f1630a5066d77143 /test
parent5898e282726bc2f54fc52fe425c389226e31a797 (diff)
downloadyoutube-dl-953e32b2c1be077e65bba844010a5a2707af2e2b.tar.xz
[dailymotion] Added support for subtitles + new InfoExtractor for
generic subtitle download. The idea is that all subtitle downloaders must descend from SubtitlesIE and implement only three basic methods to achieve the complete subtitle download functionality. This will allow to reduce the code in YoutubeIE once it is rewritten.
Diffstat (limited to 'test')
-rw-r--r--test/test_dailymotion_subtitles.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/test/test_dailymotion_subtitles.py b/test/test_dailymotion_subtitles.py
new file mode 100644
index 000000000..f63426a18
--- /dev/null
+++ b/test/test_dailymotion_subtitles.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+import sys
+import unittest
+import json
+import io
+import hashlib
+
+# Allow direct execution
+import os
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+from youtube_dl.extractor import DailymotionIE
+from youtube_dl.utils import *
+from helper import FakeYDL
+
+md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest()
+TEST_URL = 'http://www.dailymotion.com/video/xczg00'
+
+class TestDailymotionSubtitles(unittest.TestCase):
+ def setUp(self):
+ DL = FakeYDL()
+ DL.params['allsubtitles'] = False
+ DL.params['writesubtitles'] = False
+ DL.params['subtitlesformat'] = 'srt'
+ DL.params['listsubtitles'] = False
+ def test_no_subtitles(self):
+ DL = FakeYDL()
+ DL.params['writesubtitles'] = False
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ subtitles = info_dict[0]['subtitles']
+ self.assertEqual(subtitles, None)
+ def test_subtitles(self):
+ DL = FakeYDL()
+ DL.params['writesubtitles'] = True
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ sub = info_dict[0]['subtitles']['en']
+ self.assertEqual(md5(sub), '976553874490cba125086bbfea3ff76f')
+ def test_subtitles_fr(self):
+ DL = FakeYDL()
+ DL.params['writesubtitles'] = True
+ DL.params['subtitleslang'] = 'fr'
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ sub = info_dict[0]['subtitles']['fr']
+ self.assertEqual(md5(sub), '594564ec7d588942e384e920e5341792')
+ def test_onlysubtitles(self):
+ DL = FakeYDL()
+ DL.params['writesubtitles'] = True
+ DL.params['onlysubtitles'] = True
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ sub = info_dict[0]['subtitles']['en']
+ self.assertEqual(md5(sub), '976553874490cba125086bbfea3ff76f')
+ def test_allsubtitles(self):
+ DL = FakeYDL()
+ DL.params['allsubtitles'] = True
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ subtitles = info_dict[0]['subtitles']
+ self.assertEqual(len(subtitles.keys()), 5)
+ # def test_subtitles_sbv_format(self):
+ # DL = FakeYDL()
+ # DL.params['writesubtitles'] = True
+ # DL.params['subtitlesformat'] = 'sbv'
+ # IE = DailymotionIE(DL)
+ # info_dict = IE.extract(TEST_URL)
+ # sub = info_dict[0]['subtitles'][0]
+ # self.assertEqual(md5(sub), '13aeaa0c245a8bed9a451cb643e3ad8b')
+ # def test_subtitles_vtt_format(self):
+ # DL = FakeYDL()
+ # DL.params['writesubtitles'] = True
+ # DL.params['subtitlesformat'] = 'vtt'
+ # IE = DailymotionIE(DL)
+ # info_dict = IE.extract(TEST_URL)
+ # sub = info_dict[0]['subtitles'][0]
+ # self.assertEqual(md5(sub), '356cdc577fde0c6783b9b822e7206ff7')
+ def test_list_subtitles(self):
+ DL = FakeYDL()
+ DL.params['listsubtitles'] = True
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ self.assertEqual(info_dict, None)
+ def test_automatic_captions(self):
+ DL = FakeYDL()
+ DL.params['writeautomaticsub'] = True
+ DL.params['subtitleslang'] = 'en'
+ IE = DailymotionIE(DL)
+ info_dict = IE.extract(TEST_URL)
+ sub = info_dict[0]['subtitles']
+ self.assertTrue(len(sub) == 0)
+
+if __name__ == '__main__':
+ unittest.main()