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