adding xvideo
[youtube-dl] / test / test_download.py
1 #!/usr/bin/env python2
2 import unittest
3 import hashlib
4 import os
5
6 from youtube_dl.FileDownloader import FileDownloader
7 from youtube_dl.InfoExtractors  import YoutubeIE, DailymotionIE
8 from youtube_dl.InfoExtractors import  MetacafeIE, PhotobucketIE
9 from youtube_dl.InfoExtractors import FacebookIE, BlipTVIE
10 from youtube_dl.InfoExtractors import VimeoIE, XVideosIE
11
12
13 class DownloadTest(unittest.TestCase):
14         #calculated with md5sum:
15         #md5sum (GNU coreutils) 8.19
16         YOUTUBE_MD5 = "8547978241cb87dd6782b10b8e90acc3"
17         YOUTUBE_URL = "http://www.youtube.com/watch?v=BaW_jenozKc"
18         YOUTUBE_FILE = "BaW_jenozKc.flv"
19
20
21         DAILYMOTION_MD5 = ""
22         DAILYMOTION_URL = "http://www.dailymotion.com/video/x33vw9_tutoriel-de-youtubeur-dl-des-video_tech"
23         DAILYMOTION_FILE = ""
24
25
26         METACAFE_MD5 = ""
27         METACAFE_URL = "http://www.metacafe.com/watch/yt-bV9L5Ht9LgY/download_youtube_playlist_with_youtube_dl/"
28         METACAFE_FILE = ""
29
30
31         PHOTOBUCKET_MD5 = ""
32         PHOTOBUCKET_URL = "http://www.metacafe.com/watch/yt-bV9L5Ht9LgY/download_youtube_playlist_with_youtube_dl/"
33         PHOTOBUCKET_FILE = ""
34
35
36         FACEBOOK_MD5 = ""
37         FACEBOOK_URL = "https://www.facebook.com/video/video.php?v=207446242657384"
38         FACEBOOK_FILE = ""
39
40
41         BLIP_MD5 = ""
42         BLIP_URL = "https://www.facebook.com/video/video.php?v=207446242657384"
43         BLIP_FILE = ""
44
45         VIMEO_MD5 = ""
46         VIMEO_URL = "https://www.facebook.com/video/video.php?v=207446242657384"
47         VIMEO_FILE = ""
48
49         XVIDEO_MD5 = ""
50         XVIDEO_URL = "https://www.facebook.com/video/video.php?v=207446242657384"
51         XVIDEO_FILE = ""
52
53
54         def test_youtube(self):
55                 #let's download a file from youtube
56                 fd = FileDownloader({})
57                 fd.add_info_extractor(YoutubeIE())
58                 fd.download([DownloadTest.YOUTUBE_URL])
59                 self.assertTrue(os.path.exists(DownloadTest.YOUTUBE_FILE))
60                 md5_down_file = md5_for_file(DownloadTest.YOUTUBE_FILE)
61                 self.assertEqual(md5_down_file, DownloadTest.YOUTUBE_MD5)
62
63         def test_dailymotion(self):
64                 fd = FileDownloader({})
65                 fd.add_info_extractor(DailymotionIE())
66                 fd.download([DownloadTest.DAILYMOTION_URL])
67                 self.assertTrue(os.path.exists(DownloadTest.DAILYMOTION_FILE))
68                 md5_down_file = md5_for_file(DownloadTest.DAILYMOTION_FILE)
69                 self.assertEqual(md5_down_file, DownloadTest.DAILYMOTION_MD5)
70
71
72         def test_metacafe(self):
73                 fd = FileDownloader({})
74                 fd.add_info_extractor(MetacafeIE())
75                 fd.download([DownloadTest.METACAFE_URL])
76                 self.assertTrue(os.path.exists(DownloadTest.METACAFE_FILE))
77                 md5_down_file = md5_for_file(DownloadTest.METACAFE_FILE)
78                 self.assertEqual(md5_down_file, DownloadTest.METACAFE_MD5)
79
80         def test_photobucket(self):
81                 fd = FileDownloader({})
82                 fd.add_info_extractor(PhotobucketIE())
83                 fd.download([DownloadTest.PHOTOBUCKET_URL])
84                 self.assertTrue(os.path.exists(DownloadTest.PHOTOBUCKET_FILE))
85                 md5_down_file = md5_for_file(DownloadTest.PHOTOBUCKET_FILE)
86                 self.assertEqual(md5_down_file, DownloadTest.PHOTOBUCKET_MD5)
87
88
89         def test_facebook(self):
90                 fd = FileDownloader({})
91                 fd.add_info_extractor(FacebookIE())
92                 fd.download([DownloadTest.FACEBOOK_URL])
93                 self.assertTrue(os.path.exists(DownloadTest.FACEBOOK_FILE))
94                 md5_down_file = md5_for_file(DownloadTest.FACEBOOK_FILE)
95                 self.assertEqual(md5_down_file, DownloadTest.FACEBOOK_MD5)
96
97         def test_blip(self):
98                 fd = FileDownloader({})
99                 fd.add_info_extractor(BlipTVIE())
100                 fd.download([DownloadTest.BLIP_URL])
101                 self.assertTrue(os.path.exists(DownloadTest.BLIP_FILE))
102                 md5_down_file = md5_for_file(DownloadTest.BLIP_FILE)
103                 self.assertEqual(md5_down_file, DownloadTest.BLIP_MD5)
104
105
106         def test_vimeo(self):
107                 fd = FileDownloader({})
108                 fd.add_info_extractor(VimeoIE())
109                 fd.download([DownloadTest.VIMEO_URL])
110                 self.assertTrue(os.path.exists(DownloadTest.VIMEO_FILE))
111                 md5_down_file = md5_for_file(DownloadTest.VIMEO_FILE)
112                 self.assertEqual(md5_down_file, DownloadTest.VIMEO_MD5)
113
114
115         def test_xvideo(self):
116                 fd = FileDownloader({})
117                 fd.add_info_extractor(XVideosIE())
118                 fd.download([DownloadTest.XVIDEO_URL])
119                 self.assertTrue(os.path.exists(DownloadTest.XVIDEO_FILE))
120                 md5_down_file = md5_for_file(DownloadTest.XVIDEO_FILE)
121                 self.assertEqual(md5_down_file, DownloadTest.XVIDEO_MD5)
122
123         def cleanUp(self):
124                 if os.path.exists(DownloadTest.YOUTUBE_FILE):
125                         os.remove(DownloadTest.YOUTUBE_FILE)
126                 if os.path.exists(DownloadTest.DAILYMOTION_FILE):
127                         os.remove(DownloadTest.DAILYMOTION_FILE)
128                 if os.path.exists(DownloadTest.METACAFE_FILE):
129                         os.remove(DownloadTest.METACAFE_FILE)
130                 if os.path.exists(DownloadTest.PHOTOBUCKET_FILE):
131                         os.remove(DownloadTest.PHOTOBUCKET_FILE)
132                 if os.path.exists(DownloadTest.FACEBOOK_FILE):
133                         os.remove(DownloadTest.FACEBOOK_FILE)
134                 if os.path.exists(DownloadTest.BLIP_FILE):
135                         os.remove(DownloadTest.BLIP_FILE)
136                 if os.path.exists(DownloadTest.VIMEO_FILE):
137                         os.remove(DownloadTest.VIMEO_FILE)
138                 if os.path.exists(DownloadTest.XVIDEO_FILE):
139                         os.remove(DownloadTest.XVIDEO_FILE)
140
141 def md5_for_file(f, block_size=2**20):
142         md5 = hashlib.md5()
143         while True:
144                 data = f.read(block_size)
145                 if not data:
146                         break
147                 md5.update(data)
148                 return md5.digest()