Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Download video from URL in Python

I am trying to download a video using the below code in Python.

import urllib
dwn_link = 'https://class.coursera.org/textanalytics-001/lecture/download.mp4?lecture_id=73'

file_name = 'trial_video.mp4' 
urllib.retrieve(dwn_link, file_name)

But this code downloads only 382 kb and video open with an error.

Any help?

Edit: I could download all .pdf files in this page using their download links, but there seems to be some issue with video files. Video does get downloaded int my local system, but with error

like image 932
user3035935 Avatar asked Jun 20 '15 10:06

user3035935


4 Answers

In python 3,

import urllib.request
urllib.request.urlretrieve(url_link, 'video_name.mp4') 

It works for me and you can see the script at the following link

like image 185
Ankit Jain Avatar answered Oct 19 '22 17:10

Ankit Jain


If you have access to urllib2 , you can use urlopen on the url , this would give back a response object , you can do response.read() to read the data and then write it to a file.

Example -

import urllib2
dwn_link = 'https://class.coursera.org/textanalytics-001/lecture/download.mp4?lecture_id=73'

file_name = 'trial_video.mp4' 
rsp = urllib2.urlopen(dwn_link)
with open(file_name,'wb') as f:
    f.write(rsp.read())

Also you need to make sure that you have authenticated to the server , if that is required for downloading the video.

I am not sure what kind of authentication coursera.org uses, but if its Basic HTTP Authentication (Which I highly doubt) , you can use -

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "http://class.coursera.org/"
password_mgr.add_password(None, top_level_url, username, password)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(handler)

# use the opener to fetch a URL
opener.open(dwn_link)
like image 36
Anand S Kumar Avatar answered Oct 19 '22 16:10

Anand S Kumar


You can use the library requests:

def download_video_series(video_links): 

for link in video_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 file:%s"%file_name 

    # create response object 
    r = requests.get(link, stream = True) 

    # download started 
    with open(file_name, 'wb') as f: 
        for chunk in r.iter_content(chunk_size = 1024*1024): 
            if chunk: 
                f.write(chunk) 

    print "%s downloaded!\n"%file_name 

print "All videos downloaded!"
return
like image 10
Dmitry Avatar answered Oct 19 '22 17:10

Dmitry


To download that video from that Coursera class, you need to be:

  1. signed into a session for Coursera.org
  2. signed up for that class in Coursera.org

Once you do that, you can download the video after your HTTP client authenticates (with your username / password) and has a valid session.

like image 4
Grokify Avatar answered Oct 19 '22 16:10

Grokify