]>
Commit | Line | Data |
---|---|---|
5e5ddcfb FV |
1 | #!/usr/bin/env python |
2 | ||
3 | import sys | |
4 | import unittest | |
5e5ddcfb FV |
5 | import json |
6 | import io | |
7 | import hashlib | |
8 | ||
9 | # Allow direct execution | |
10 | import os | |
11 | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
12 | ||
0824c28c | 13 | from youtube_dl.extractor import YoutubeIE |
5e5ddcfb | 14 | from youtube_dl.utils import * |
112da0a0 | 15 | from helper import FakeYDL |
5e5ddcfb FV |
16 | |
17 | md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest() | |
18 | ||
19 | class TestYoutubeSubtitles(unittest.TestCase): | |
ae608b80 | 20 | def setUp(self): |
8bf8b5a5 | 21 | DL = FakeYDL() |
ae608b80 IM |
22 | DL.params['allsubtitles'] = False |
23 | DL.params['writesubtitles'] = False | |
9e62bc44 | 24 | DL.params['subtitlesformat'] = 'srt' |
2a4093ea | 25 | DL.params['listsubtitles'] = False |
ae608b80 | 26 | def test_youtube_no_subtitles(self): |
8bf8b5a5 | 27 | DL = FakeYDL() |
ae608b80 IM |
28 | DL.params['writesubtitles'] = False |
29 | IE = YoutubeIE(DL) | |
30 | info_dict = IE.extract('QRS8MkLhQmM') | |
31 | subtitles = info_dict[0]['subtitles'] | |
32 | self.assertEqual(subtitles, None) | |
5e5ddcfb | 33 | def test_youtube_subtitles(self): |
8bf8b5a5 | 34 | DL = FakeYDL() |
5e5ddcfb FV |
35 | DL.params['writesubtitles'] = True |
36 | IE = YoutubeIE(DL) | |
37 | info_dict = IE.extract('QRS8MkLhQmM') | |
5d51a883 JMF |
38 | sub = info_dict[0]['subtitles']['en'] |
39 | self.assertEqual(md5(sub), '4cd9278a35ba2305f47354ee13472260') | |
5e5ddcfb | 40 | def test_youtube_subtitles_it(self): |
8bf8b5a5 | 41 | DL = FakeYDL() |
5e5ddcfb | 42 | DL.params['writesubtitles'] = True |
aa6a10c4 | 43 | DL.params['subtitleslangs'] = ['it'] |
5e5ddcfb FV |
44 | IE = YoutubeIE(DL) |
45 | info_dict = IE.extract('QRS8MkLhQmM') | |
5d51a883 JMF |
46 | sub = info_dict[0]['subtitles']['it'] |
47 | self.assertEqual(md5(sub), '164a51f16f260476a05b50fe4c2f161d') | |
cdb130b0 | 48 | def test_youtube_onlysubtitles(self): |
8bf8b5a5 | 49 | DL = FakeYDL() |
ae608b80 | 50 | DL.params['writesubtitles'] = True |
cdb130b0 IM |
51 | DL.params['onlysubtitles'] = True |
52 | IE = YoutubeIE(DL) | |
53 | info_dict = IE.extract('QRS8MkLhQmM') | |
5d51a883 JMF |
54 | sub = info_dict[0]['subtitles']['en'] |
55 | self.assertEqual(md5(sub), '4cd9278a35ba2305f47354ee13472260') | |
ae608b80 | 56 | def test_youtube_allsubtitles(self): |
8bf8b5a5 | 57 | DL = FakeYDL() |
ae608b80 IM |
58 | DL.params['allsubtitles'] = True |
59 | IE = YoutubeIE(DL) | |
60 | info_dict = IE.extract('QRS8MkLhQmM') | |
61 | subtitles = info_dict[0]['subtitles'] | |
5d51a883 | 62 | self.assertEqual(len(subtitles.keys()), 13) |
65cceef8 | 63 | def test_youtube_subtitles_sbv_format(self): |
8bf8b5a5 | 64 | DL = FakeYDL() |
9e62bc44 IM |
65 | DL.params['writesubtitles'] = True |
66 | DL.params['subtitlesformat'] = 'sbv' | |
67 | IE = YoutubeIE(DL) | |
68 | info_dict = IE.extract('QRS8MkLhQmM') | |
5d51a883 JMF |
69 | sub = info_dict[0]['subtitles']['en'] |
70 | self.assertEqual(md5(sub), '13aeaa0c245a8bed9a451cb643e3ad8b') | |
65cceef8 IM |
71 | def test_youtube_subtitles_vtt_format(self): |
72 | DL = FakeYDL() | |
73 | DL.params['writesubtitles'] = True | |
74 | DL.params['subtitlesformat'] = 'vtt' | |
75 | IE = YoutubeIE(DL) | |
76 | info_dict = IE.extract('QRS8MkLhQmM') | |
5d51a883 JMF |
77 | sub = info_dict[0]['subtitles']['en'] |
78 | self.assertEqual(md5(sub), '356cdc577fde0c6783b9b822e7206ff7') | |
2a4093ea | 79 | def test_youtube_list_subtitles(self): |
8bf8b5a5 | 80 | DL = FakeYDL() |
2a4093ea IM |
81 | DL.params['listsubtitles'] = True |
82 | IE = YoutubeIE(DL) | |
83 | info_dict = IE.extract('QRS8MkLhQmM') | |
84 | self.assertEqual(info_dict, None) | |
dc1c355b | 85 | def test_youtube_automatic_captions(self): |
8bf8b5a5 | 86 | DL = FakeYDL() |
b004821f | 87 | DL.params['writeautomaticsub'] = True |
aa6a10c4 | 88 | DL.params['subtitleslangs'] = ['it'] |
dc1c355b JMF |
89 | IE = YoutubeIE(DL) |
90 | info_dict = IE.extract('8YoUxe5ncPo') | |
5d51a883 JMF |
91 | sub = info_dict[0]['subtitles']['it'] |
92 | self.assertTrue(sub is not None) | |
aa6a10c4 JMF |
93 | def test_youtube_multiple_langs(self): |
94 | DL = FakeYDL() | |
95 | DL.params['writesubtitles'] = True | |
96 | langs = ['it', 'fr', 'de'] | |
97 | DL.params['subtitleslangs'] = langs | |
98 | IE = YoutubeIE(DL) | |
99 | subtitles = IE.extract('QRS8MkLhQmM')[0]['subtitles'] | |
100 | for lang in langs: | |
101 | self.assertTrue(subtitles.get(lang) is not None, u'Subtitles for \'%s\' not extracted' % lang) | |
cdb130b0 | 102 | |
5e5ddcfb FV |
103 | if __name__ == '__main__': |
104 | unittest.main() |