Add support for comedycentral clips (closes #233)
[youtube-dl] / test / test_download.py
1 #!/usr/bin/env python
2
3 # DO NOT EDIT THIS FILE BY HAND!
4 # It is auto-generated from tests.json and gentests.py.
5
6 import hashlib
7 import io
8 import os
9 import json
10 import unittest
11 import sys
12 import socket
13
14 # Allow direct execution
15 import os
16 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
17
18 import youtube_dl.FileDownloader
19 import youtube_dl.InfoExtractors
20 from youtube_dl.utils import *
21
22 # General configuration (from __init__, not very elegant...)
23 jar = compat_cookiejar.CookieJar()
24 cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
25 proxy_handler = compat_urllib_request.ProxyHandler()
26 opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
27 compat_urllib_request.install_opener(opener)
28 socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
29
30 class FileDownloader(youtube_dl.FileDownloader):
31     def __init__(self, *args, **kwargs):
32         youtube_dl.FileDownloader.__init__(self, *args, **kwargs)
33         self.to_stderr = self.to_screen
34
35 def _file_md5(fn):
36     with open(fn, 'rb') as f:
37         return hashlib.md5(f.read()).hexdigest()
38 try:
39     _skip_unless = unittest.skipUnless
40 except AttributeError: # Python 2.6
41     def _skip_unless(cond, reason='No reason given'):
42         def resfunc(f):
43             # Start the function name with test to appease nosetests-2.6
44             def test_wfunc(*args, **kwargs):
45                 if cond:
46                     return f(*args, **kwargs)
47                 else:
48                     print('Skipped test')
49                     return
50             test_wfunc.__name__ = f.__name__
51             return test_wfunc
52         return resfunc
53 _skip = lambda *args, **kwargs: _skip_unless(False, *args, **kwargs)
54
55 class DownloadTest(unittest.TestCase):
56     PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json")
57
58     def setUp(self):
59         # Clear old files
60         self.tearDown()
61
62         with io.open(self.PARAMETERS_FILE, encoding='utf-8') as pf:
63             self.parameters = json.load(pf)
64
65     @_skip_unless(youtube_dl.InfoExtractors.YoutubeIE._WORKING, "IE marked as not _WORKING")
66     def test_Youtube(self):
67         filename = 'BaW_jenozKc.mp4'
68         params = self.parameters
69         fd = FileDownloader(params)
70         fd.add_info_extractor(youtube_dl.InfoExtractors.YoutubeIE())
71         fd.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
72         self.assertTrue(os.path.exists(filename))
73
74     @_skip_unless(youtube_dl.InfoExtractors.DailymotionIE._WORKING, "IE marked as not _WORKING")
75     def test_Dailymotion(self):
76         filename = 'x33vw9.mp4'
77         params = self.parameters
78         fd = FileDownloader(params)
79         fd.add_info_extractor(youtube_dl.InfoExtractors.DailymotionIE())
80         fd.download(['http://www.dailymotion.com/video/x33vw9_tutoriel-de-youtubeur-dl-des-video_tech'])
81         self.assertTrue(os.path.exists(filename))
82         md5_for_file = _file_md5(filename)
83         self.assertEqual(md5_for_file, '392c4b85a60a90dc4792da41ce3144eb')
84
85     @_skip_unless(youtube_dl.InfoExtractors.MetacafeIE._WORKING, "IE marked as not _WORKING")
86     def test_Metacafe(self):
87         filename = '_aUehQsCQtM.flv'
88         params = self.parameters
89         fd = FileDownloader(params)
90         fd.add_info_extractor(youtube_dl.InfoExtractors.MetacafeIE())
91         fd.add_info_extractor(youtube_dl.InfoExtractors.YoutubeIE())
92         fd.download(['http://www.metacafe.com/watch/yt-_aUehQsCQtM/the_electric_company_short_i_pbs_kids_go/'])
93         self.assertTrue(os.path.exists(filename))
94
95     @_skip_unless(youtube_dl.InfoExtractors.BlipTVIE._WORKING, "IE marked as not _WORKING")
96     def test_BlipTV(self):
97         filename = '5779306.m4v'
98         params = self.parameters
99         fd = FileDownloader(params)
100         fd.add_info_extractor(youtube_dl.InfoExtractors.BlipTVIE())
101         fd.download(['http://blip.tv/cbr/cbr-exclusive-gotham-city-imposters-bats-vs-jokerz-short-3-5796352'])
102         self.assertTrue(os.path.exists(filename))
103         md5_for_file = _file_md5(filename)
104         self.assertEqual(md5_for_file, 'b2d849efcf7ee18917e4b4d9ff37cafe')
105
106     @_skip_unless(youtube_dl.InfoExtractors.XVideosIE._WORKING, "IE marked as not _WORKING")
107     def test_XVideos(self):
108         filename = '939581.flv'
109         params = self.parameters
110         fd = FileDownloader(params)
111         fd.add_info_extractor(youtube_dl.InfoExtractors.XVideosIE())
112         fd.download(['http://www.xvideos.com/video939581/funny_porns_by_s_-1'])
113         self.assertTrue(os.path.exists(filename))
114         md5_for_file = _file_md5(filename)
115         self.assertEqual(md5_for_file, '1d0c835822f0a71a7bf011855db929d0')
116
117     @_skip_unless(youtube_dl.InfoExtractors.VimeoIE._WORKING, "IE marked as not _WORKING")
118     def test_Vimeo(self):
119         filename = '14160053.mp4'
120         params = self.parameters
121         fd = FileDownloader(params)
122         fd.add_info_extractor(youtube_dl.InfoExtractors.VimeoIE())
123         fd.download(['http://vimeo.com/14160053'])
124         self.assertTrue(os.path.exists(filename))
125         md5_for_file = _file_md5(filename)
126         self.assertEqual(md5_for_file, '60540a4ec7cc378ec84b919c0aed5023')
127
128     @_skip_unless(youtube_dl.InfoExtractors.SoundcloudIE._WORKING, "IE marked as not _WORKING")
129     def test_Soundcloud(self):
130         filename = '62986583.mp3'
131         params = self.parameters
132         fd = FileDownloader(params)
133         fd.add_info_extractor(youtube_dl.InfoExtractors.SoundcloudIE())
134         fd.download(['http://soundcloud.com/ethmusic/lostin-powers-she-so-heavy'])
135         self.assertTrue(os.path.exists(filename))
136         md5_for_file = _file_md5(filename)
137         self.assertEqual(md5_for_file, 'ebef0a451b909710ed1d7787dddbf0d7')
138
139     @_skip_unless(youtube_dl.InfoExtractors.StanfordOpenClassroomIE._WORKING, "IE marked as not _WORKING")
140     def test_StanfordOpenClassroom(self):
141         filename = 'PracticalUnix_intro-environment.mp4'
142         params = self.parameters
143         fd = FileDownloader(params)
144         fd.add_info_extractor(youtube_dl.InfoExtractors.StanfordOpenClassroomIE())
145         fd.download(['http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=PracticalUnix&video=intro-environment&speed=100'])
146         self.assertTrue(os.path.exists(filename))
147         md5_for_file = _file_md5(filename)
148         self.assertEqual(md5_for_file, '544a9468546059d4e80d76265b0443b8')
149
150     @_skip_unless(youtube_dl.InfoExtractors.XNXXIE._WORKING, "IE marked as not _WORKING")
151     def test_XNXX(self):
152         filename = '1135332.flv'
153         params = self.parameters
154         fd = FileDownloader(params)
155         fd.add_info_extractor(youtube_dl.InfoExtractors.XNXXIE())
156         fd.download(['http://video.xnxx.com/video1135332/lida_naked_funny_actress_5_'])
157         self.assertTrue(os.path.exists(filename))
158         md5_for_file = _file_md5(filename)
159         self.assertEqual(md5_for_file, '0831677e2b4761795f68d417e0b7b445')
160
161     @_skip_unless(youtube_dl.InfoExtractors.YoukuIE._WORKING, "IE marked as not _WORKING")
162     def test_Youku(self):
163         filename = 'XNDgyMDQ2NTQw_part00.flv'
164         params = self.parameters
165         params["test"] = False
166         fd = FileDownloader(params)
167         fd.add_info_extractor(youtube_dl.InfoExtractors.YoukuIE())
168         fd.download(['http://v.youku.com/v_show/id_XNDgyMDQ2NTQw.html'])
169         self.assertTrue(os.path.exists(filename))
170         md5_for_file = _file_md5(filename)
171         self.assertEqual(md5_for_file, 'ffe3f2e435663dc2d1eea34faeff5b5b')
172
173
174     def tearDown(self):
175         if os.path.exists('BaW_jenozKc.mp4'):
176             os.remove('BaW_jenozKc.mp4')
177         if os.path.exists('x33vw9.mp4'):
178             os.remove('x33vw9.mp4')
179         if os.path.exists('_aUehQsCQtM.flv'):
180             os.remove('_aUehQsCQtM.flv')
181         if os.path.exists('5779306.m4v'):
182             os.remove('5779306.m4v')
183         if os.path.exists('939581.flv'):
184             os.remove('939581.flv')
185         if os.path.exists('14160053.mp4'):
186             os.remove('14160053.mp4')
187         if os.path.exists('62986583.mp3'):
188             os.remove('62986583.mp3')
189         if os.path.exists('PracticalUnix_intro-environment.mp4'):
190             os.remove('PracticalUnix_intro-environment.mp4')
191         if os.path.exists('1135332.flv'):
192             os.remove('1135332.flv')
193         if os.path.exists('XNDgyMDQ2NTQw_part00.flv'):
194             os.remove('XNDgyMDQ2NTQw_part00.flv')
195
196
197
198 if __name__ == '__main__':
199     unittest.main()