]>
jfr.im git - yt-dlp.git/blob - test/test_download.py
7 from youtube_dl
.FileDownloader
import FileDownloader
8 from youtube_dl
.InfoExtractors
import YoutubeIE
, DailymotionIE
9 from youtube_dl
.InfoExtractors
import MetacafeIE
, BlipTVIE
10 from youtube_dl
.InfoExtractors
import XVideosIE
, VimeoIE
11 from youtube_dl
.InfoExtractors
import SoundcloudIE
, StanfordOpenClassroomIE
12 from youtube_dl
.InfoExtractors
import CollegeHumorIE
, XNXXIE
15 class DownloadTest(unittest
.TestCase
):
16 PARAMETERS_FILE
= "test/parameters.json"
17 #calculated with md5sum:
18 #md5sum (GNU coreutils) 8.19
20 YOUTUBE_SIZE
= 1993883
21 YOUTUBE_URL
= "http://www.youtube.com/watch?v=BaW_jenozKc"
22 YOUTUBE_FILE
= "BaW_jenozKc.mp4"
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"
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"
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"
36 XVIDEO_MD5
= "1ab4dedc01f771cb2a65e91caa801aaf"
37 XVIDEO_URL
= "http://www.xvideos.com/video939581/funny_porns_by_s_-1"
38 XVIDEO_FILE
= "939581.flv"
40 VIMEO_MD5
= "1ab4dedc01f771cb2a65e91caa801aaf"
41 VIMEO_URL
= "http://vimeo.com/14160053"
45 VIMEO2_URL
= "http://player.vimeo.com/video/47019590"
48 SOUNDCLOUD_MD5
= "ce3775768ebb6432fa8495d446a078ed"
49 SOUNDCLOUD_URL
= "http://soundcloud.com/ethmusic/lostin-powers-she-so-heavy"
50 SOUNDCLOUD_FILE
= "n6FLbx6ZzMiu.mp3"
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"
57 COLLEGEHUMOR_URL
= "http://www.collegehumor.com/video/6830834/mitt-romney-style-gangnam-style-parody"
58 COLLEGEHUMOR_FILE
= ""
60 XNXX_MD5
= "5f0469c8d1dfd1bc38c8e6deb5e0a21d"
61 XNXX_URL
= "http://video.xnxx.com/video1135332/lida_naked_funny_actress_5_"
62 XNXX_FILE
= "1135332.flv"
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
)
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
)
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
)
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
)
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
)
110 def test_vimeo(self
):
111 #skipped for the moment produce an error
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
)
121 def test_vimeo2(self
):
122 #skipped for the moment produce an error
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
)
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
)
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
)
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
)
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
)
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
)
190 def md5_for_file(filename
, block_size
=2**20):
191 with open(filename
) as f
:
194 data
= f
.read(block_size
)
198 return md5
.hexdigest()