]>
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): |
447591e1 IM |
21 | self.DL = FakeYDL() |
22 | self.url = 'QRS8MkLhQmM' | |
23 | def getInfoDict(self): | |
24 | IE = YoutubeIE(self.DL) | |
25 | info_dict = IE.extract(self.url) | |
26 | return info_dict | |
27 | def getSubtitles(self): | |
28 | info_dict = self.getInfoDict() | |
29 | return info_dict[0]['subtitles'] | |
d80a064e | 30 | def test_youtube_no_writesubtitles(self): |
447591e1 IM |
31 | self.DL.params['writesubtitles'] = False |
32 | subtitles = self.getSubtitles() | |
ae608b80 | 33 | self.assertEqual(subtitles, None) |
5e5ddcfb | 34 | def test_youtube_subtitles(self): |
447591e1 IM |
35 | self.DL.params['writesubtitles'] = True |
36 | subtitles = self.getSubtitles() | |
37 | self.assertEqual(md5(subtitles['en']), '4cd9278a35ba2305f47354ee13472260') | |
d80a064e | 38 | def test_youtube_subtitles_lang(self): |
447591e1 | 39 | self.DL.params['writesubtitles'] = True |
d6e203b3 | 40 | self.DL.params['subtitleslangs'] = ['it'] |
447591e1 IM |
41 | subtitles = self.getSubtitles() |
42 | self.assertEqual(md5(subtitles['it']), '164a51f16f260476a05b50fe4c2f161d') | |
ae608b80 | 43 | def test_youtube_allsubtitles(self): |
447591e1 IM |
44 | self.DL.params['allsubtitles'] = True |
45 | subtitles = self.getSubtitles() | |
5d51a883 | 46 | self.assertEqual(len(subtitles.keys()), 13) |
65cceef8 | 47 | def test_youtube_subtitles_sbv_format(self): |
447591e1 IM |
48 | self.DL.params['writesubtitles'] = True |
49 | self.DL.params['subtitlesformat'] = 'sbv' | |
50 | subtitles = self.getSubtitles() | |
51 | self.assertEqual(md5(subtitles['en']), '13aeaa0c245a8bed9a451cb643e3ad8b') | |
65cceef8 | 52 | def test_youtube_subtitles_vtt_format(self): |
447591e1 IM |
53 | self.DL.params['writesubtitles'] = True |
54 | self.DL.params['subtitlesformat'] = 'vtt' | |
55 | subtitles = self.getSubtitles() | |
56 | self.assertEqual(md5(subtitles['en']), '356cdc577fde0c6783b9b822e7206ff7') | |
2a4093ea | 57 | def test_youtube_list_subtitles(self): |
447591e1 IM |
58 | self.DL.params['listsubtitles'] = True |
59 | info_dict = self.getInfoDict() | |
2a4093ea | 60 | self.assertEqual(info_dict, None) |
dc1c355b | 61 | def test_youtube_automatic_captions(self): |
447591e1 IM |
62 | self.url = '8YoUxe5ncPo' |
63 | self.DL.params['writeautomaticsub'] = True | |
d6e203b3 | 64 | self.DL.params['subtitleslangs'] = ['it'] |
447591e1 IM |
65 | subtitles = self.getSubtitles() |
66 | self.assertTrue(subtitles['it'] is not None) | |
d80a064e IM |
67 | def test_youtube_nosubtitles(self): |
68 | self.url = 'sAjKT8FhjI8' | |
69 | self.DL.params['allsubtitles'] = True | |
70 | subtitles = self.getSubtitles() | |
71 | self.assertEqual(len(subtitles), 0) | |
d6e203b3 IM |
72 | def test_youtube_multiple_langs(self): |
73 | self.url = 'QRS8MkLhQmM' | |
74 | self.DL.params['writesubtitles'] = True | |
75 | langs = ['it', 'fr', 'de'] | |
76 | self.DL.params['subtitleslangs'] = langs | |
77 | subtitles = self.getSubtitles() | |
78 | for lang in langs: | |
79 | self.assertTrue(subtitles.get(lang) is not None, u'Subtitles for \'%s\' not extracted' % lang) | |
cdb130b0 | 80 | |
5e5ddcfb FV |
81 | if __name__ == '__main__': |
82 | unittest.main() |