#!/usr/bin/env python __all__ = ['coursera_download'] from ..common import * def coursera_login(user, password, csrf_token): url = 'https://www.coursera.org/maestro/api/user/login' my_headers = { 'Cookie': ('csrftoken=%s' % csrf_token), 'Referer': 'https://www.coursera.org', 'X-CSRFToken': csrf_token, } values = { 'email_address': user, 'password': password, } form_data = parse.urlencode(values).encode('utf-8') response = request.urlopen(request.Request(url, headers = my_headers, data = form_data)) return response.headers def coursera_download(url, output_dir = '.', merge = True, info_only = False): course_code = r1(r'coursera.org/([^/]+)', url) url = "http://class.coursera.org/%s/lecture/index" % course_code request.install_opener(request.build_opener(request.HTTPCookieProcessor())) import http.client conn = http.client.HTTPConnection('class.coursera.org') conn.request('GET', "/%s/lecture/index" % course_code) response = conn.getresponse() csrf_token = r1(r'csrf_token=([^;]+);', response.headers['Set-Cookie']) import netrc, getpass info = netrc.netrc().authenticators('coursera.org') if info is None: user = input("User: ") password = getpass.getpass("Password: ") else: user, password = info[0], info[2] print("Logging in...") coursera_login(user, password, csrf_token) request.urlopen("https://class.coursera.org/%s/auth/auth_redirector?type=login&subtype=normal" % course_code) # necessary! html = get_html(url) course_name = "%s (%s)" % (r1(r'course_strings_name = "([^"]+)"', html), course_code) output_dir = os.path.join(output_dir, course_name) materials = re.findall(r'