| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  | #!/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__)))) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-23 22:42:59 +02:00
										 |  |  | from youtube_dl.extractor import YoutubeIE | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  | from youtube_dl.utils import * | 
					
						
							| 
									
										
										
										
											2013-06-27 00:09:05 +02:00
										 |  |  | from helper import FakeYDL | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestYoutubeSubtitles(unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |     def setUp(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         DL.params['allsubtitles'] = False | 
					
						
							|  |  |  |         DL.params['writesubtitles'] = False | 
					
						
							| 
									
										
										
										
											2013-02-22 03:53:54 +01:00
										 |  |  |         DL.params['subtitlesformat'] = 'srt' | 
					
						
							| 
									
										
										
										
											2013-02-22 04:50:05 +01:00
										 |  |  |         DL.params['listsubtitles'] = False | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |     def test_youtube_no_subtitles(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         DL.params['writesubtitles'] = False | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							|  |  |  |         subtitles = info_dict[0]['subtitles'] | 
					
						
							|  |  |  |         self.assertEqual(subtitles, None) | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  |     def test_youtube_subtitles(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  |         DL.params['writesubtitles'] = True | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertEqual(md5(sub[2]), '4cd9278a35ba2305f47354ee13472260') | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  |     def test_youtube_subtitles_it(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  |         DL.params['writesubtitles'] = True | 
					
						
							|  |  |  |         DL.params['subtitleslang'] = 'it' | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertEqual(md5(sub[2]), '164a51f16f260476a05b50fe4c2f161d') | 
					
						
							| 
									
										
										
										
											2013-02-21 22:12:36 +01:00
										 |  |  |     def test_youtube_onlysubtitles(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         DL.params['writesubtitles'] = True | 
					
						
							| 
									
										
										
										
											2013-02-21 22:12:36 +01:00
										 |  |  |         DL.params['onlysubtitles'] = True | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertEqual(md5(sub[2]), '4cd9278a35ba2305f47354ee13472260') | 
					
						
							|  |  |  |     def test_youtube_allsubtitles(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 02:52:55 +01:00
										 |  |  |         DL.params['allsubtitles'] = True | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							|  |  |  |         subtitles = info_dict[0]['subtitles'] | 
					
						
							| 
									
										
										
										
											2013-04-20 10:39:02 +02:00
										 |  |  |         self.assertEqual(len(subtitles), 13) | 
					
						
							| 
									
										
										
										
											2013-06-26 11:28:47 +02:00
										 |  |  |     def test_youtube_subtitles_sbv_format(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 03:53:54 +01:00
										 |  |  |         DL.params['writesubtitles'] = True | 
					
						
							|  |  |  |         DL.params['subtitlesformat'] = 'sbv' | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							|  |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertEqual(md5(sub[2]), '13aeaa0c245a8bed9a451cb643e3ad8b') | 
					
						
							| 
									
										
										
										
											2013-06-26 11:28:47 +02:00
										 |  |  |     def test_youtube_subtitles_vtt_format(self): | 
					
						
							|  |  |  |         DL = FakeYDL() | 
					
						
							|  |  |  |         DL.params['writesubtitles'] = True | 
					
						
							|  |  |  |         DL.params['subtitlesformat'] = 'vtt' | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							|  |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertEqual(md5(sub[2]), '356cdc577fde0c6783b9b822e7206ff7') | 
					
						
							| 
									
										
										
										
											2013-02-22 04:50:05 +01:00
										 |  |  |     def test_youtube_list_subtitles(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-02-22 04:50:05 +01:00
										 |  |  |         DL.params['listsubtitles'] = True | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('QRS8MkLhQmM') | 
					
						
							|  |  |  |         self.assertEqual(info_dict, None) | 
					
						
							| 
									
										
										
										
											2013-05-26 10:46:09 +02:00
										 |  |  |     def test_youtube_automatic_captions(self): | 
					
						
							| 
									
										
										
										
											2013-06-23 20:41:17 +02:00
										 |  |  |         DL = FakeYDL() | 
					
						
							| 
									
										
										
										
											2013-06-25 23:45:16 +02:00
										 |  |  |         DL.params['writeautomaticsub'] = True | 
					
						
							| 
									
										
										
										
											2013-05-26 10:46:09 +02:00
										 |  |  |         DL.params['subtitleslang'] = 'it' | 
					
						
							|  |  |  |         IE = YoutubeIE(DL) | 
					
						
							|  |  |  |         info_dict = IE.extract('8YoUxe5ncPo') | 
					
						
							|  |  |  |         sub = info_dict[0]['subtitles'][0] | 
					
						
							|  |  |  |         self.assertTrue(sub[2] is not None) | 
					
						
							| 
									
										
										
										
											2013-02-21 22:12:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-17 16:23:55 +01:00
										 |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     unittest.main() |