forked from geekcomputers/Python
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpythonVideoDownloader.py
More file actions
Latest commit
66 lines (44 loc) · 1.68 KB
/
Copy pathpythonVideoDownloader.py
File metadata and controls
66 lines (44 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
importrequests
frombs4importBeautifulSoup
'''
URL of the archive web-page which provides link to
all video lectures. It would have been tiring to
download each video manually.
In this example, we first crawl the webpage to extract
all the links and then download videos.
'''
# specify the URL of the archive here
archive_url="http://www-personal.umich.edu/~csev/books/py4inf/media/"
defget_video_links():
# create response object
r=requests.get(archive_url)
# create beautiful-soup object
soup=BeautifulSoup(r.content,'html5lib')
# find all links on web-page
links=soup.findAll('a')
# filter the link sending with .mp4
video_links= [archive_url+link['href'] forlinkinlinksiflink['href'].endswith('mp4')]
returnvideo_links
defdownload_video_series(video_links):
forlinkinvideo_links:
'''iterate through all links in video_links
and download them one by one'''
# obtain filename by splitting url and getting
# last string
file_name=link.split('/')[-1]
print"Downloading the file:%s"%file_name
# create response object
r=requests.get(link, stream=True)
# download started
withopen(file_name, 'wb') asf:
forchunkinr.iter_content(chunk_size=1024*1024):
ifchunk:
f.write(chunk)
print"%s downloaded!\n"%file_name
print"All videos are downloaded!"
return
if__name__=="__main__":
# getting all video links
video_links=get_video_links()
# download all videos
download_video_series(video_links)