]>
Raphaƫl G. Git Repositories - youtubedl/blob - test/test_subtitles.py
   3 # Allow direct execution 
   7 sys
.path
.insert(0, os
.path
.dirname(os
.path
.dirname(os
.path
.abspath(__file__
)))) 
   9 from test
.helper 
import FakeYDL
, md5
 
  12 from youtube_dl
.extractor 
import ( 
  21 class BaseTestSubtitles(unittest
.TestCase
): 
  26         self
.ie 
= self
.IE(self
.DL
) 
  28     def getInfoDict(self
): 
  29         info_dict 
= self
.ie
.extract(self
.url
) 
  32     def getSubtitles(self
): 
  33         info_dict 
= self
.getInfoDict() 
  34         return info_dict
['subtitles'] 
  37 class TestYoutubeSubtitles(BaseTestSubtitles
): 
  41     def test_youtube_no_writesubtitles(self
): 
  42         self
.DL
.params
['writesubtitles'] = False 
  43         subtitles 
= self
.getSubtitles() 
  44         self
.assertEqual(subtitles
, None) 
  46     def test_youtube_subtitles(self
): 
  47         self
.DL
.params
['writesubtitles'] = True 
  48         subtitles 
= self
.getSubtitles() 
  49         self
.assertEqual(md5(subtitles
['en']), '4cd9278a35ba2305f47354ee13472260') 
  51     def test_youtube_subtitles_lang(self
): 
  52         self
.DL
.params
['writesubtitles'] = True 
  53         self
.DL
.params
['subtitleslangs'] = ['it'] 
  54         subtitles 
= self
.getSubtitles() 
  55         self
.assertEqual(md5(subtitles
['it']), '164a51f16f260476a05b50fe4c2f161d') 
  57     def test_youtube_allsubtitles(self
): 
  58         self
.DL
.params
['writesubtitles'] = True 
  59         self
.DL
.params
['allsubtitles'] = True 
  60         subtitles 
= self
.getSubtitles() 
  61         self
.assertEqual(len(subtitles
.keys()), 13) 
  63     def test_youtube_subtitles_sbv_format(self
): 
  64         self
.DL
.params
['writesubtitles'] = True 
  65         self
.DL
.params
['subtitlesformat'] = 'sbv' 
  66         subtitles 
= self
.getSubtitles() 
  67         self
.assertEqual(md5(subtitles
['en']), '13aeaa0c245a8bed9a451cb643e3ad8b') 
  69     def test_youtube_subtitles_vtt_format(self
): 
  70         self
.DL
.params
['writesubtitles'] = True 
  71         self
.DL
.params
['subtitlesformat'] = 'vtt' 
  72         subtitles 
= self
.getSubtitles() 
  73         self
.assertEqual(md5(subtitles
['en']), '3cb210999d3e021bd6c7f0ea751eab06') 
  75     def test_youtube_list_subtitles(self
): 
  76         self
.DL
.expect_warning(u
'Video doesn\'t have automatic captions') 
  77         self
.DL
.params
['listsubtitles'] = True 
  78         info_dict 
= self
.getInfoDict() 
  79         self
.assertEqual(info_dict
, None) 
  81     def test_youtube_automatic_captions(self
): 
  82         self
.url 
= '8YoUxe5ncPo' 
  83         self
.DL
.params
['writeautomaticsub'] = True 
  84         self
.DL
.params
['subtitleslangs'] = ['it'] 
  85         subtitles 
= self
.getSubtitles() 
  86         self
.assertTrue(subtitles
['it'] is not None) 
  88     def test_youtube_nosubtitles(self
): 
  89         self
.DL
.expect_warning(u
'video doesn\'t have subtitles') 
  90         self
.url 
= 'sAjKT8FhjI8' 
  91         self
.DL
.params
['writesubtitles'] = True 
  92         self
.DL
.params
['allsubtitles'] = True 
  93         subtitles 
= self
.getSubtitles() 
  94         self
.assertEqual(len(subtitles
), 0) 
  96     def test_youtube_multiple_langs(self
): 
  97         self
.url 
= 'QRS8MkLhQmM' 
  98         self
.DL
.params
['writesubtitles'] = True 
  99         langs 
= ['it', 'fr', 'de'] 
 100         self
.DL
.params
['subtitleslangs'] = langs
 
 101         subtitles 
= self
.getSubtitles() 
 103             self
.assertTrue(subtitles
.get(lang
) is not None, u
'Subtitles for \'%s\' not extracted' % lang
) 
 106 class TestDailymotionSubtitles(BaseTestSubtitles
): 
 107     url 
= 'http://www.dailymotion.com/video/xczg00' 
 110     def test_no_writesubtitles(self
): 
 111         subtitles 
= self
.getSubtitles() 
 112         self
.assertEqual(subtitles
, None) 
 114     def test_subtitles(self
): 
 115         self
.DL
.params
['writesubtitles'] = True 
 116         subtitles 
= self
.getSubtitles() 
 117         self
.assertEqual(md5(subtitles
['en']), '976553874490cba125086bbfea3ff76f') 
 119     def test_subtitles_lang(self
): 
 120         self
.DL
.params
['writesubtitles'] = True 
 121         self
.DL
.params
['subtitleslangs'] = ['fr'] 
 122         subtitles 
= self
.getSubtitles() 
 123         self
.assertEqual(md5(subtitles
['fr']), '594564ec7d588942e384e920e5341792') 
 125     def test_allsubtitles(self
): 
 126         self
.DL
.params
['writesubtitles'] = True 
 127         self
.DL
.params
['allsubtitles'] = True 
 128         subtitles 
= self
.getSubtitles() 
 129         self
.assertEqual(len(subtitles
.keys()), 5) 
 131     def test_list_subtitles(self
): 
 132         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 133         self
.DL
.params
['listsubtitles'] = True 
 134         info_dict 
= self
.getInfoDict() 
 135         self
.assertEqual(info_dict
, None) 
 137     def test_automatic_captions(self
): 
 138         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 139         self
.DL
.params
['writeautomaticsub'] = True 
 140         self
.DL
.params
['subtitleslang'] = ['en'] 
 141         subtitles 
= self
.getSubtitles() 
 142         self
.assertTrue(len(subtitles
.keys()) == 0) 
 144     def test_nosubtitles(self
): 
 145         self
.DL
.expect_warning(u
'video doesn\'t have subtitles') 
 146         self
.url 
= 'http://www.dailymotion.com/video/x12u166_le-zapping-tele-star-du-08-aout-2013_tv' 
 147         self
.DL
.params
['writesubtitles'] = True 
 148         self
.DL
.params
['allsubtitles'] = True 
 149         subtitles 
= self
.getSubtitles() 
 150         self
.assertEqual(len(subtitles
), 0) 
 152     def test_multiple_langs(self
): 
 153         self
.DL
.params
['writesubtitles'] = True 
 154         langs 
= ['es', 'fr', 'de'] 
 155         self
.DL
.params
['subtitleslangs'] = langs
 
 156         subtitles 
= self
.getSubtitles() 
 158             self
.assertTrue(subtitles
.get(lang
) is not None, u
'Subtitles for \'%s\' not extracted' % lang
) 
 161 class TestTedSubtitles(BaseTestSubtitles
): 
 162     url 
= 'http://www.ted.com/talks/dan_dennett_on_our_consciousness.html' 
 165     def test_no_writesubtitles(self
): 
 166         subtitles 
= self
.getSubtitles() 
 167         self
.assertEqual(subtitles
, None) 
 169     def test_subtitles(self
): 
 170         self
.DL
.params
['writesubtitles'] = True 
 171         subtitles 
= self
.getSubtitles() 
 172         self
.assertEqual(md5(subtitles
['en']), '4262c1665ff928a2dada178f62cb8d14') 
 174     def test_subtitles_lang(self
): 
 175         self
.DL
.params
['writesubtitles'] = True 
 176         self
.DL
.params
['subtitleslangs'] = ['fr'] 
 177         subtitles 
= self
.getSubtitles() 
 178         self
.assertEqual(md5(subtitles
['fr']), '66a63f7f42c97a50f8c0e90bc7797bb5') 
 180     def test_allsubtitles(self
): 
 181         self
.DL
.params
['writesubtitles'] = True 
 182         self
.DL
.params
['allsubtitles'] = True 
 183         subtitles 
= self
.getSubtitles() 
 184         self
.assertEqual(len(subtitles
.keys()), 28) 
 186     def test_list_subtitles(self
): 
 187         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 188         self
.DL
.params
['listsubtitles'] = True 
 189         info_dict 
= self
.getInfoDict() 
 190         self
.assertEqual(info_dict
, None) 
 192     def test_automatic_captions(self
): 
 193         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 194         self
.DL
.params
['writeautomaticsub'] = True 
 195         self
.DL
.params
['subtitleslang'] = ['en'] 
 196         subtitles 
= self
.getSubtitles() 
 197         self
.assertTrue(len(subtitles
.keys()) == 0) 
 199     def test_multiple_langs(self
): 
 200         self
.DL
.params
['writesubtitles'] = True 
 201         langs 
= ['es', 'fr', 'de'] 
 202         self
.DL
.params
['subtitleslangs'] = langs
 
 203         subtitles 
= self
.getSubtitles() 
 205             self
.assertTrue(subtitles
.get(lang
) is not None, u
'Subtitles for \'%s\' not extracted' % lang
) 
 208 class TestBlipTVSubtitles(BaseTestSubtitles
): 
 209     url 
= 'http://blip.tv/a/a-6603250' 
 212     def test_list_subtitles(self
): 
 213         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 214         self
.DL
.params
['listsubtitles'] = True 
 215         info_dict 
= self
.getInfoDict() 
 216         self
.assertEqual(info_dict
, None) 
 218     def test_allsubtitles(self
): 
 219         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 220         self
.DL
.params
['writesubtitles'] = True 
 221         self
.DL
.params
['allsubtitles'] = True 
 222         subtitles 
= self
.getSubtitles() 
 223         self
.assertEqual(set(subtitles
.keys()), set(['en'])) 
 224         self
.assertEqual(md5(subtitles
['en']), '5b75c300af65fe4476dff79478bb93e4') 
 227 class TestVimeoSubtitles(BaseTestSubtitles
): 
 228     url 
= 'http://vimeo.com/76979871' 
 231     def test_no_writesubtitles(self
): 
 232         subtitles 
= self
.getSubtitles() 
 233         self
.assertEqual(subtitles
, None) 
 235     def test_subtitles(self
): 
 236         self
.DL
.params
['writesubtitles'] = True 
 237         subtitles 
= self
.getSubtitles() 
 238         self
.assertEqual(md5(subtitles
['en']), '8062383cf4dec168fc40a088aa6d5888') 
 240     def test_subtitles_lang(self
): 
 241         self
.DL
.params
['writesubtitles'] = True 
 242         self
.DL
.params
['subtitleslangs'] = ['fr'] 
 243         subtitles 
= self
.getSubtitles() 
 244         self
.assertEqual(md5(subtitles
['fr']), 'b6191146a6c5d3a452244d853fde6dc8') 
 246     def test_allsubtitles(self
): 
 247         self
.DL
.params
['writesubtitles'] = True 
 248         self
.DL
.params
['allsubtitles'] = True 
 249         subtitles 
= self
.getSubtitles() 
 250         self
.assertEqual(set(subtitles
.keys()), set(['de', 'en', 'es', 'fr'])) 
 252     def test_list_subtitles(self
): 
 253         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 254         self
.DL
.params
['listsubtitles'] = True 
 255         info_dict 
= self
.getInfoDict() 
 256         self
.assertEqual(info_dict
, None) 
 258     def test_automatic_captions(self
): 
 259         self
.DL
.expect_warning(u
'Automatic Captions not supported by this server') 
 260         self
.DL
.params
['writeautomaticsub'] = True 
 261         self
.DL
.params
['subtitleslang'] = ['en'] 
 262         subtitles 
= self
.getSubtitles() 
 263         self
.assertTrue(len(subtitles
.keys()) == 0) 
 265     def test_nosubtitles(self
): 
 266         self
.DL
.expect_warning(u
'video doesn\'t have subtitles') 
 267         self
.url 
= 'http://vimeo.com/56015672' 
 268         self
.DL
.params
['writesubtitles'] = True 
 269         self
.DL
.params
['allsubtitles'] = True 
 270         subtitles 
= self
.getSubtitles() 
 271         self
.assertEqual(len(subtitles
), 0) 
 273     def test_multiple_langs(self
): 
 274         self
.DL
.params
['writesubtitles'] = True 
 275         langs 
= ['es', 'fr', 'de'] 
 276         self
.DL
.params
['subtitleslangs'] = langs
 
 277         subtitles 
= self
.getSubtitles() 
 279             self
.assertTrue(subtitles
.get(lang
) is not None, u
'Subtitles for \'%s\' not extracted' % lang
) 
 282 if __name__ 
== '__main__':