]>
Commit | Line | Data |
---|---|---|
efe8902f | 1 | #!/usr/bin/env python2 |
2 | import unittest | |
3 | import hashlib | |
4 | import os | |
7f60b5aa | 5 | import json |
efe8902f | 6 | |
7 | from youtube_dl.FileDownloader import FileDownloader | |
6da7877b | 8 | from youtube_dl.InfoExtractors import YoutubeIE, DailymotionIE |
fc737601 | 9 | from youtube_dl.InfoExtractors import MetacafeIE, BlipTVIE |
28767733 | 10 | from youtube_dl.InfoExtractors import XVideosIE, VimeoIE |
103c508f | 11 | from youtube_dl.InfoExtractors import SoundcloudIE, StanfordOpenClassroomIE |
9c6e9a45 | 12 | from youtube_dl.InfoExtractors import CollegeHumorIE, XNXXIE |
4c9afeca | 13 | |
efe8902f | 14 | |
15 | class DownloadTest(unittest.TestCase): | |
59ae15a5 PH |
16 | PARAMETERS_FILE = "test/parameters.json" |
17 | #calculated with md5sum: | |
18 | #md5sum (GNU coreutils) 8.19 | |
19 | ||
20 | YOUTUBE_SIZE = 1993883 | |
21 | YOUTUBE_URL = "http://www.youtube.com/watch?v=BaW_jenozKc" | |
22 | YOUTUBE_FILE = "BaW_jenozKc.mp4" | |
23 | ||
24 | DAILYMOTION_MD5 = "d363a50e9eb4f22ce90d08d15695bb47" | |
25 | DAILYMOTION_URL = "http://www.dailymotion.com/video/x33vw9_tutoriel-de-youtubeur-dl-des-video_tech" | |
26 | DAILYMOTION_FILE = "x33vw9.mp4" | |
27 | ||
28 | METACAFE_SIZE = 5754305 | |
29 | METACAFE_URL = "http://www.metacafe.com/watch/yt-_aUehQsCQtM/the_electric_company_short_i_pbs_kids_go/" | |
30 | METACAFE_FILE = "_aUehQsCQtM.flv" | |
31 | ||
32 | BLIP_MD5 = "93c24d2f4e0782af13b8a7606ea97ba7" | |
33 | BLIP_URL = "http://blip.tv/cbr/cbr-exclusive-gotham-city-imposters-bats-vs-jokerz-short-3-5796352" | |
34 | BLIP_FILE = "5779306.m4v" | |
35 | ||
36 | XVIDEO_MD5 = "1ab4dedc01f771cb2a65e91caa801aaf" | |
37 | XVIDEO_URL = "http://www.xvideos.com/video939581/funny_porns_by_s_-1" | |
38 | XVIDEO_FILE = "939581.flv" | |
39 | ||
40 | VIMEO_MD5 = "1ab4dedc01f771cb2a65e91caa801aaf" | |
41 | VIMEO_URL = "http://vimeo.com/14160053" | |
42 | VIMEO_FILE = "" | |
43 | ||
44 | VIMEO2_MD5 = "" | |
45 | VIMEO2_URL = "http://player.vimeo.com/video/47019590" | |
46 | VIMEO2_FILE = "" | |
47 | ||
48 | SOUNDCLOUD_MD5 = "ce3775768ebb6432fa8495d446a078ed" | |
49 | SOUNDCLOUD_URL = "http://soundcloud.com/ethmusic/lostin-powers-she-so-heavy" | |
50 | SOUNDCLOUD_FILE = "n6FLbx6ZzMiu.mp3" | |
51 | ||
52 | STANDFORD_MD5 = "22c8206291368c4e2c9c1a307f0ea0f4" | |
53 | STANDFORD_URL = "http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=PracticalUnix&video=intro-environment&speed=100" | |
54 | STANDFORD_FILE = "PracticalUnix_intro-environment.mp4" | |
55 | ||
56 | COLLEGEHUMOR_MD5 = "" | |
57 | COLLEGEHUMOR_URL = "http://www.collegehumor.com/video/6830834/mitt-romney-style-gangnam-style-parody" | |
58 | COLLEGEHUMOR_FILE = "" | |
59 | ||
60 | XNXX_MD5 = "5f0469c8d1dfd1bc38c8e6deb5e0a21d" | |
61 | XNXX_URL = "http://video.xnxx.com/video1135332/lida_naked_funny_actress_5_" | |
62 | XNXX_FILE = "1135332.flv" | |
63 | ||
64 | def test_youtube(self): | |
65 | #let's download a file from youtube | |
66 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
67 | fd = FileDownloader(json.load(f)) | |
68 | fd.add_info_extractor(YoutubeIE()) | |
69 | fd.download([DownloadTest.YOUTUBE_URL]) | |
70 | self.assertTrue(os.path.exists(DownloadTest.YOUTUBE_FILE)) | |
71 | self.assertEqual(os.path.getsize(DownloadTest.YOUTUBE_FILE), DownloadTest.YOUTUBE_SIZE) | |
72 | ||
73 | def test_dailymotion(self): | |
74 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
75 | fd = FileDownloader(json.load(f)) | |
76 | fd.add_info_extractor(DailymotionIE()) | |
77 | fd.download([DownloadTest.DAILYMOTION_URL]) | |
78 | self.assertTrue(os.path.exists(DownloadTest.DAILYMOTION_FILE)) | |
79 | md5_down_file = md5_for_file(DownloadTest.DAILYMOTION_FILE) | |
80 | self.assertEqual(md5_down_file, DownloadTest.DAILYMOTION_MD5) | |
81 | ||
82 | def test_metacafe(self): | |
83 | #this emulate a skip,to be 2.6 compatible | |
84 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
85 | fd = FileDownloader(json.load(f)) | |
86 | fd.add_info_extractor(MetacafeIE()) | |
87 | fd.add_info_extractor(YoutubeIE()) | |
88 | fd.download([DownloadTest.METACAFE_URL]) | |
89 | self.assertTrue(os.path.exists(DownloadTest.METACAFE_FILE)) | |
90 | self.assertEqual(os.path.getsize(DownloadTest.METACAFE_FILE), DownloadTest.METACAFE_SIZE) | |
91 | ||
92 | def test_blip(self): | |
93 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
94 | fd = FileDownloader(json.load(f)) | |
95 | fd.add_info_extractor(BlipTVIE()) | |
96 | fd.download([DownloadTest.BLIP_URL]) | |
97 | self.assertTrue(os.path.exists(DownloadTest.BLIP_FILE)) | |
98 | md5_down_file = md5_for_file(DownloadTest.BLIP_FILE) | |
99 | self.assertEqual(md5_down_file, DownloadTest.BLIP_MD5) | |
100 | ||
101 | def test_xvideo(self): | |
102 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
103 | fd = FileDownloader(json.load(f)) | |
104 | fd.add_info_extractor(XVideosIE()) | |
105 | fd.download([DownloadTest.XVIDEO_URL]) | |
106 | self.assertTrue(os.path.exists(DownloadTest.XVIDEO_FILE)) | |
107 | md5_down_file = md5_for_file(DownloadTest.XVIDEO_FILE) | |
108 | self.assertEqual(md5_down_file, DownloadTest.XVIDEO_MD5) | |
109 | ||
110 | def test_vimeo(self): | |
111 | #skipped for the moment produce an error | |
112 | return | |
113 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
114 | fd = FileDownloader(json.load(f)) | |
115 | fd.add_info_extractor(VimeoIE()) | |
116 | fd.download([DownloadTest.VIMEO_URL]) | |
117 | self.assertTrue(os.path.exists(DownloadTest.VIMEO_FILE)) | |
118 | md5_down_file = md5_for_file(DownloadTest.VIMEO_FILE) | |
119 | self.assertEqual(md5_down_file, DownloadTest.VIMEO_MD5) | |
120 | ||
121 | def test_vimeo2(self): | |
122 | #skipped for the moment produce an error | |
123 | return | |
124 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
125 | fd = FileDownloader(json.load(f)) | |
126 | fd.add_info_extractor(VimeoIE()) | |
127 | fd.download([DownloadTest.VIMEO2_URL]) | |
128 | self.assertTrue(os.path.exists(DownloadTest.VIMEO2_FILE)) | |
129 | md5_down_file = md5_for_file(DownloadTest.VIMEO2_FILE) | |
130 | self.assertEqual(md5_down_file, DownloadTest.VIMEO2_MD5) | |
131 | ||
132 | def test_soundcloud(self): | |
133 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
134 | fd = FileDownloader(json.load(f)) | |
135 | fd.add_info_extractor(SoundcloudIE()) | |
136 | fd.download([DownloadTest.SOUNDCLOUD_URL]) | |
137 | self.assertTrue(os.path.exists(DownloadTest.SOUNDCLOUD_FILE)) | |
138 | md5_down_file = md5_for_file(DownloadTest.SOUNDCLOUD_FILE) | |
139 | self.assertEqual(md5_down_file, DownloadTest.SOUNDCLOUD_MD5) | |
140 | ||
141 | def test_standford(self): | |
142 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
143 | fd = FileDownloader(json.load(f)) | |
144 | fd.add_info_extractor(StanfordOpenClassroomIE()) | |
145 | fd.download([DownloadTest.STANDFORD_URL]) | |
146 | self.assertTrue(os.path.exists(DownloadTest.STANDFORD_FILE)) | |
147 | md5_down_file = md5_for_file(DownloadTest.STANDFORD_FILE) | |
148 | self.assertEqual(md5_down_file, DownloadTest.STANDFORD_MD5) | |
149 | ||
150 | def test_collegehumor(self): | |
151 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
152 | fd = FileDownloader(json.load(f)) | |
153 | fd.add_info_extractor(CollegeHumorIE()) | |
154 | fd.download([DownloadTest.COLLEGEHUMOR_URL]) | |
155 | self.assertTrue(os.path.exists(DownloadTest.COLLEGEHUMOR_FILE)) | |
156 | md5_down_file = md5_for_file(DownloadTest.COLLEGEHUMOR_FILE) | |
157 | self.assertEqual(md5_down_file, DownloadTest.COLLEGEHUMOR_MD5) | |
158 | ||
159 | def test_xnxx(self): | |
160 | with open(DownloadTest.PARAMETERS_FILE) as f: | |
161 | fd = FileDownloader(json.load(f)) | |
162 | fd.add_info_extractor(XNXXIE()) | |
163 | fd.download([DownloadTest.XNXX_URL]) | |
164 | self.assertTrue(os.path.exists(DownloadTest.XNXX_FILE)) | |
165 | md5_down_file = md5_for_file(DownloadTest.XNXX_FILE) | |
166 | self.assertEqual(md5_down_file, DownloadTest.XNXX_MD5) | |
167 | ||
168 | def tearDown(self): | |
169 | if os.path.exists(DownloadTest.YOUTUBE_FILE): | |
170 | os.remove(DownloadTest.YOUTUBE_FILE) | |
171 | if os.path.exists(DownloadTest.DAILYMOTION_FILE): | |
172 | os.remove(DownloadTest.DAILYMOTION_FILE) | |
173 | if os.path.exists(DownloadTest.METACAFE_FILE): | |
174 | os.remove(DownloadTest.METACAFE_FILE) | |
175 | if os.path.exists(DownloadTest.BLIP_FILE): | |
176 | os.remove(DownloadTest.BLIP_FILE) | |
177 | if os.path.exists(DownloadTest.XVIDEO_FILE): | |
178 | os.remove(DownloadTest.XVIDEO_FILE) | |
179 | if os.path.exists(DownloadTest.VIMEO_FILE): | |
180 | os.remove(DownloadTest.VIMEO_FILE) | |
181 | if os.path.exists(DownloadTest.SOUNDCLOUD_FILE): | |
182 | os.remove(DownloadTest.SOUNDCLOUD_FILE) | |
183 | if os.path.exists(DownloadTest.STANDFORD_FILE): | |
184 | os.remove(DownloadTest.STANDFORD_FILE) | |
185 | if os.path.exists(DownloadTest.COLLEGEHUMOR_FILE): | |
186 | os.remove(DownloadTest.COLLEGEHUMOR_FILE) | |
187 | if os.path.exists(DownloadTest.XNXX_FILE): | |
188 | os.remove(DownloadTest.XNXX_FILE) | |
efe8902f | 189 | |
7f60b5aa | 190 | def md5_for_file(filename, block_size=2**20): |
59ae15a5 PH |
191 | with open(filename) as f: |
192 | md5 = hashlib.md5() | |
193 | while True: | |
194 | data = f.read(block_size) | |
195 | if not data: | |
196 | break | |
197 | md5.update(data) | |
198 | return md5.hexdigest() |