{"id":13398137,"url":"https://github.com/coursera-dl/coursera-dl","last_synced_at":"2025-12-16T22:02:59.468Z","repository":{"id":2791339,"uuid":"3791384","full_name":"coursera-dl/coursera-dl","owner":"coursera-dl","description":"Script for downloading Coursera.org videos and naming them.","archived":false,"fork":false,"pushed_at":"2024-05-11T21:24:57.000Z","size":1808,"stargazers_count":9584,"open_issues_count":216,"forks_count":2251,"subscribers_count":319,"default_branch":"master","last_synced_at":"2025-12-14T04:18:33.614Z","etag":null,"topics":["archival","coursera","coursera-dl","downloader","lectures","python","storage","video","video-downloader"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coursera-dl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-03-21T21:07:15.000Z","updated_at":"2025-12-13T02:25:21.000Z","dependencies_parsed_at":"2024-06-18T18:13:51.813Z","dependency_job_id":"e5e2d908-9812-4b87-b20b-825c814a892e","html_url":"https://github.com/coursera-dl/coursera-dl","commit_stats":{"total_commits":982,"total_committers":85,"mean_commits":"11.552941176470588","dds":0.5417515274949083,"last_synced_commit":"10ba6b8d8c30798a45d45db2dc147edf3b455350"},"previous_names":["coursera-dl/coursera"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/coursera-dl/coursera-dl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coursera-dl%2Fcoursera-dl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coursera-dl%2Fcoursera-dl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coursera-dl%2Fcoursera-dl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coursera-dl%2Fcoursera-dl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coursera-dl","download_url":"https://codeload.github.com/coursera-dl/coursera-dl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coursera-dl%2Fcoursera-dl/sbom","scorecard":{"id":306072,"data":{"date":"2025-08-11","repo":{"name":"github.com/coursera-dl/coursera-dl","commit":"10ba6b8d8c30798a45d45db2dc147edf3b455350"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/21 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.6-slim to python:3.6-slim@sha256:2cfebc27956e6a55f78606864d91fe527696f9e32a724e6f9702b5f9602d0474","Warn: pipCommand not pinned by hash: Dockerfile:11","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Lesser General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"13 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: PYSEC-2023-207 / GHSA-gwvm-45gx-3cf8","Warn: Project is vulnerable to: PYSEC-2019-133 / GHSA-mh33-7rrq-662w","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2019-132 / GHSA-r64q-w8jr-g9qp","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2020-148 / GHSA-wqvq-5m8c-6g24","Warn: Project is vulnerable to: PYSEC-2021-108"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T22:05:12.721Z","repository_id":2791339,"created_at":"2025-08-17T22:05:12.721Z","updated_at":"2025-08-17T22:05:12.721Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27772334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-16T02:00:10.477Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archival","coursera","coursera-dl","downloader","lectures","python","storage","video","video-downloader"],"created_at":"2024-07-30T19:00:18.012Z","updated_at":"2025-12-16T22:02:59.441Z","avatar_url":"https://github.com/coursera-dl.png","language":"Python","funding_links":[],"categories":["Python","Python (1887)","Курсы","HTML"],"sub_categories":[],"readme":"# Coursera Downloader\n\n[![Build Status](https://travis-ci.org/coursera-dl/coursera-dl.svg?branch=master)](https://travis-ci.org/coursera-dl/coursera-dl)\n[![Build status](https://ci.appveyor.com/api/projects/status/3hru0ycv5fbny5k8/branch/master?svg=true)](https://ci.appveyor.com/project/balta2ar/coursera-dl/branch/master)\n[![Coverage Status](https://coveralls.io/repos/coursera-dl/coursera-dl/badge.svg)](https://coveralls.io/r/coursera-dl/coursera-dl)\n[![Latest version on PyPI](https://img.shields.io/pypi/v/coursera-dl.svg)](https://pypi.python.org/pypi/coursera-dl)\n[![Code Climate](https://codeclimate.com/github/coursera-dl/coursera-dl/badges/gpa.svg)](https://codeclimate.com/github/coursera-dl/coursera-dl)\n\n\u003c!-- TOC --\u003e\n\n- [Coursera Downloader](#coursera-downloader)\n- [Introduction](#introduction)\n- [Features](#features)\n- [Disclaimer](#disclaimer)\n- [Installation instructions](#installation-instructions)\n    - [Recommended installation method for all Operating Systems](#recommended-installation-method-for-all-operating-systems)\n    - [Alternative ways of installing missing dependencies](#alternative-ways-of-installing-missing-dependencies)\n        - [Alternative installation method for Unix systems](#alternative-installation-method-for-unix-systems)\n        - [ArchLinux](#archlinux)\n        - [Installing dependencies on your own](#installing-dependencies-on-your-own)\n    - [Docker](#docker)\n    - [Windows](#windows)\n    - [Create an account with Coursera](#create-an-account-with-coursera)\n- [Running the script](#running-the-script)\n    - [Resuming downloads](#resuming-downloads)\n- [Troubleshooting](#troubleshooting)\n    - [China issues](#china-issues)\n    - [Found 0 sections and 0 lectures on this page](#found-0-sections-and-0-lectures-on-this-page)\n    - [Download timeouts](#download-timeouts)\n    - [Windows: proxy support](#windows-proxy-support)\n    - [Windows: Failed to create process](#windows-failed-to-create-process)\n    - [SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure](#sslerror-errno-1-_sslc504-error14094410ssl-routinesssl3_read_bytessslv3-alert-handshake-failure)\n    - [Alternative CDN for `MathJax.js`](#alternative-cdn-for-mathjaxjs)\n- [Reporting issues](#reporting-issues)\n- [Filing an issue/Reporting a bug](#filing-an-issuereporting-a-bug)\n- [Feedback](#feedback)\n- [Contact](#contact)\n\n\u003c!-- /TOC --\u003e\n\n# Introduction\n\n[Coursera][1] is arguably the leader in *massive open online courses* (MOOC)\nwith a selection of more than 300 classes from 62 different institutions [as of\nFebruary 2013][13]. Generous contributions by educators and institutions are\nmaking excellent education available to many who could not afford it otherwise.\nThere are even non-profits with \"feet on the ground\" in remote areas of the\nworld who are helping spread the wealth (see the feedback below from [Tunapanda][14]).\n\nThis script makes it easier to batch download lecture resources (e.g., videos, ppt,\netc) for Coursera classes.  Given one or more class names and account credentials,\nit obtains week and class names from the *lectures* page, and then downloads\nthe related materials into appropriately named files and directories.\n\nWhy is this helpful?  A utility like [wget][2] can work, but has the\nfollowing limitations:\n\n1. Video names have numbers in them, but this does not correspond to\n    the actual order.  Manually renaming them is a pain that is best left\n    for computers.\n2. Using names from the syllabus page provides more informative names.\n3. Using `wget` in a for loop picks up extra videos which are not\n    posted/linked, and these are sometimes duplicates.\n\nBrowser extensions like *DownloadThemAll* is another possibility, but\n`coursera-dl` provides more features such as appropriately named files.\n\nThis work was originally inspired in part by [youtube-dl][3] by which\nI've downloaded many other good videos such as those from Khan Academy.\n\n\n# Features\n\n  * Support for all kinds of courses (i.e., \"Old Platform\"/time-based as\n    well as \"New Platform\"/on-demand courses).\n  * Intentionally detailed names, so that it will display and sort properly\n    on most interfaces (e.g., [VLC][4] or MX Video on Android devices).\n  * Regex-based section (week) and lecture name filters to download only\n    certain resources.\n  * File format extension filter to grab resource types you want.\n  * Login credentials accepted on command-line or from `.netrc` file.\n  * Default arguments loaded from `coursera-dl.conf` file.\n  * Core functionality tested on Linux, Mac and Windows.\n\n# Disclaimer\n\n`coursera-dl` is meant to be used only for your material that Coursera gives\nyou access to download.\n\nWe do not encourage any use that violates their [Terms Of Use][20]. A\nrelevant excerpt:\n\n\u003e \"[...] Coursera grants you a personal, non-exclusive, non-transferable\n\u003e license to access and use the Sites. You may download material from the\n\u003e Sites only for your own personal, non-commercial use. You may not\n\u003e otherwise copy, reproduce, retransmit, distribute, publish, commercially\n\u003e exploit or otherwise transfer any material, nor may you modify or create\n\u003e derivatives works of the material.\"\n\n\n# Installation instructions\n\n`coursera-dl` requires Python 2 or Python 3 and a free Coursera account\nenrolled in the class of interest. (As of February of 2020, we test\nautomatically the execution of the program with Python versions 2.7, Pypy,\n3.6, 3.7, 3.8, and 3.9).\n\n**Note:** We *strongly* recommend that you use a Python 3 interpreter (3.9\nor later).\n\nOn any operating system, ensure that the Python executable location is added\nto your `PATH` environment variable and, once you have the dependencies\ninstalled (see next section), for a *basic* usage, you will need to invoke\nthe script from the main directory of the project and prepend it with the\nword `python`.  You can also use more advanced features of the program by\nlooking at the \"Running the script\" section of this document.\n\n*Note:* You must already have (manually) agreed to the Honor of Code of the\nparticular courses that you want to use with `coursera-dl`.\n\n## Recommended installation method for all Operating Systems\n\nFrom a command line (preferably, from a virtual environment), simply issue\nthe command:\n\n    pip install coursera-dl\n\n\nThis will download [the latest released version][23] of the program from the\n[Python Package Index (PyPI)][22] along with *all* the necessary\ndependencies. At this point, you should be ready to start using it.\n\nIf this does not work, because your Python 2 version is too old (e.g. 2.7.5\non Ubuntu 14.4), try:\n\n    apt-get install python3 python3-pip\n    pip3 install coursera-dl\n\ninstead.\n\n**Note 1:** We strongly recommend that you *don't* install the package\nglobally on your machine (i.e., with root/administrator privileges), as the\ninstalled modules may conflict with other Python applications that you have\ninstalled in your system (or they can interfere with `coursera-dl`).  Prefer\nto use the option `--user` to `pip install`, if you need can.\n\n**Note 2:** As already mentioned, we *strongly* recommend that you use a new\nPython 3 interpreter (e.g., 3.9 or later), since Python 3 has better support\nfor SSL/TLS (for secure connections) than earlier versions.\u003cbr/\u003e\nIf you must use Python 2, be sure that you have at least Python 2.7.9 (later\nversions are OK).\u003cbr/\u003e\nOtherwise, you can still use `coursera-dl`, but you will have to install the\nextra package `ndg-httpsclient`, which may involve compilation (at least on\nLinux systems).\n\n## Alternative ways of installing missing dependencies\n\nWe strongly recommend that you consider installing Python packages with\n[pip][17], as in it is the current [preferred method][18], unless directed\notherwise by one of the project members (for instance, when testing or\ndebugging a new feature or using the source code directly from our git\nrepository).  If you are using `pip`, you can directly install all the\ndependencies from the requirements file using `pip install -r\nrequirements.txt`.\n\n### Alternative installation method for Unix systems\n\nWe strongly recommend that you install `coursera-dl` and all its\ndependencies in a way that does *not* interfere with the rest of your Python\ninstallation. This is accomplished by the creation of a *virtual\nenvironment*, or \"virtualenv\".\n\nFor the initial setup, in a Unix-like operating system, please use the\nfollowing steps (create/adapt first the directory\n`/directory/where/I/want/my/courses`):\n\n    cd /directory/where/I/want/my/courses\n    virtualenv my-coursera\n    cd my-coursera\n    source bin/activate\n    git clone https://github.com/coursera-dl/coursera-dl\n    cd coursera-dl\n    pip install -r requirements.txt\n    ./coursera-dl ...\n\nTo further download new videos from your classes, simply perform:\n\n    cd /directory/where/I/want/my/courses/my-coursera\n    source bin/activate\n    cd coursera-dl\n    ./coursera-dl ...\n\nWe are working on streamlining this whole process so that it is as simple as\npossible, but to support older versions of Python and to cope with Coursera\ndisabling SSLv3, we have to take a few extra steps.  In any case, it is\n*highly* recommended that you always install the latest version of the\nPython interpreter that you can.\n\n### ArchLinux\n\nAUR package: [coursera-dl](https://aur.archlinux.org/packages/coursera-dl/)\n\n### Installing dependencies on your own\n\n**Warning:** This method is not recommended unless you have experience\nworking with multiple Python environments.\n\nYou can use the `pip` program to install the dependencies on your own.  They\nare all listed in the `requirements.txt` file (and the extra dependencies\nneeded for development are listed in the `requirements-dev.txt` file).\n\nTo use this method, you would proceed as:\n\n    pip install -r requirements.txt\n    pip install -r requirements-dev.txt\n\nThe second line above should only be needed if you intend to help with\ndevelopment (and help is *always* welcome) or if a maintainer of the project\nasks you to install extra packages for debugging purposes.\n\nOnce again, before filing bug reports, if you installed the dependencies on\nyour own, please check that the versions of your modules are at least those\nlisted in the `requirements.txt` file (and, `requirements-dev.txt` file, if\napplicable).\n\n## Docker\n\nIf you prefer you can run this software inside Docker:\n\n```\ndocker run --rm -it -v \\\n    \"$(pwd):/courses\" \\\n    courseradl/courseradl -u \u003cUSER\u003e -p \u003cPASSWORD\u003e\n```\n\nOr using netrc file:\n\n```\ndocker run --rm -it \\\n    -v \"$(pwd):/courses\" -v \"$HOME/.netrc:/netrc\" \\\n    courseradl/courseradl -n /netrc\n```\n\nThe actual working dir for coursera-dl is /courses, all courses will be\ndownloaded there if you don't specify otherwise.\n\n## Windows\n\n`python -m pip install coursera-dl`\n\nBe sure that the Python install path is added to the PATH system environment\nvariables. This can be found in Control Panel \u003e System \u003e Advanced System\nSettings \u003e Environment Variables.\n\n```\nExample:\nC:\\Python39\\Scripts\\;C:\\Python39\\;\n```\n\nOr if you have restricted installation permissions and you've installed Python\nunder AppData, add this to your PATH.\n\n```\nExample:\nC:\\Users\\\u003cuser\u003e\\AppData\\Local\\Programs\\Python\\Python39-32\\Scripts;C:\\Users\\\u003cuser\u003e\\AppData\\Local\\Programs\\Python\\Python39-32;\n```\n\nCoursera-dl can now be run from commandline or powershell.\n\n## Create an account with Coursera\n\nIf you don't already have one, create a [Coursera][1] account and enroll in\na class. See https://www.coursera.org/courses for the list of classes.\n\n# Running the script\n\nRefer to `coursera-dl --help` for a complete, up-to-date reference on the runtime options\nsupported by this utility.\n\nRun the script to download the materials by providing your Coursera account\ncredentials (e.g. email address and password or a `~/.netrc` file), the\nclass names, as well as any additional parameters:\n```\n    General:                     coursera-dl -u \u003cuser\u003e -p \u003cpass\u003e modelthinking-004\n\n    With CAUTH parameter:\t coursera-dl -ca 'some-ca-value-from-browser' modelthinking-004\n```\nIf you don't want to type your password in command line as plain text, you can use the\nscript without `-p` option. In this case you will be prompted for password  once the\nscript is run.\n\nHere are some examples of how to invoke `coursera-dl` from the command line:\n```\n    Without -p field:            coursera-dl -u \u003cuser\u003e modelthinking-004\n    Multiple classes:            coursera-dl -u \u003cuser\u003e -p \u003cpass\u003e saas historyofrock1-001 algo-2012-002\n    Filter by section name:      coursera-dl -u \u003cuser\u003e -p \u003cpass\u003e -sf \"Chapter_Four\" crypto-004\n    Filter by lecture name:      coursera-dl -u \u003cuser\u003e -p \u003cpass\u003e -lf \"3.1_\" ml-2012-002\n    Download only ppt files:     coursera-dl -u \u003cuser\u003e -p \u003cpass\u003e -f \"ppt\" qcomp-2012-001\n    Use a ~/.netrc file:         coursera-dl -n -- matrix-001\n    Get the preview classes:     coursera-dl -n -b ni-001\n\tDownload videos at 720p:     coursera-dl -n --video-resolution 720p ni-001\n    Specify download path:       coursera-dl -n --path=C:\\Coursera\\Classes\\ comnetworks-002\n    Display help:                coursera-dl --help\n\n    Maintain a list of classes in a dir:\n      Initialize:              mkdir -p CURRENT/{class1,class2,..classN}\n      Update:                  coursera-dl -n --path CURRENT `\\ls CURRENT`\n```\n**Note:** If your `ls` command is aliased to display a colorized output, you\nmay experience problems.  Be sure to escape the `ls` command (use `\\ls`) to\nassure that no special characters get sent to the script.\n\nNote that we *do* support the New Platform (\"on-demand\") courses.\n\nBy default, videos are downloaded at 540p resolution. For on-demand courses, the\n`--video-resolution` flag accepts 360p, 540p, and 720p values.\n\nTo download just the `.txt` and/or `.srt` subtitle files instead of the videos,\nuse `-ignore-formats mp4 --subtitle-language en` or whatever format the videos\nare encoded in and desired languages for subtitles.\n\nOn \\*nix platforms, the use of a `~/.netrc` file is a good alternative to\nspecifying both your username (i.e., your email address) and password every\ntime on the command line. To use it, simply add a line like the one below to\na file named `.netrc` in your home directory (or the [equivalent][8], if you\nare using Windows) with contents like:\n```\n    machine coursera-dl login \u003cuser\u003e password \u003cpass\u003e\n```\nCreate the file if it doesn't exist yet.  From then on, you can switch from\nusing `-u` and `-p` to simply call `coursera-dl` with the option `-n`\ninstead.  This is especially convenient, as typing usernames (email\naddresses) and passwords directly on the command line can get tiresome (even\nmore if you happened to choose a \"strong\" password).\n\nAlternatively, if you want to store your preferred parameters (which might\nalso include your username and password), create a file named `coursera-dl.conf`\nwhere the script is supposed to be executed, with the following format:\n```\n    --username \u003cuser\u003e\n    --password \u003cpass\u003e\n    --subtitle-language en,zh-CN|zh-TW\n    --download-quizzes\n    #--mathjax-cdn https://cdn.bootcss.com/mathjax/2.7.1/MathJax.js\n    # more other parameters\n```\nParameters which are specified in the file will be overriden if they are \nprovided again on the commandline.\n\n**Note:** In `coursera-dl.conf`, all the parameters should not be wrapped\nwith quotes.\n\n## Resuming downloads\n\nIn default mode when you interrupt the download process by pressing\n\u003ckbd\u003eCTRL\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e, partially downloaded files will be deleted from your disk and\nyou have to start the download process from the beginning. If your\ndownload was interrupted by something other than KeyboardInterrupt\n(\u003ckbd\u003eCTRL\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e) like sudden system crash, partially downloaded files will\nremain on your disk and the next time you start the process again,\nthese files will be discarded from download list!, therefore it's your\njob to delete them manually before next start. For this reason we\nadded an option called `--resume` which continues your downloads from\nwhere they stopped:\n\n\tcoursera-dl -u \u003cuser\u003e -p \u003cpass\u003e --resume sdn1-001\n\nThis option can also be used with external downloaders:\n\n\tcoursera-dl --wget -u \u003cuser\u003e -p \u003cpass\u003e --resume sdn1-001\n\n*Note 1*: Some external downloaders use their own built-in resume feature\nwhich may not be compatible with others, so use them at your own risk.\n\n*Note 2*: Remember that in resume mode, interrupted files **WON'T** be deleted from\nyour disk.\n\n**NOTE**: If your password contains punctuation, quotes or other \"funny\ncharacters\" (e.g., `\u003c`, `\u003e`, `#`, `\u0026`, `|` and so on), then you may have to\nescape them from your shell. With bash or other Bourne-shell clones (and\nprobably with many other shells) one of the better ways to do so is to\nenclose your password in single quotes, so that you don't run into\nproblems.  See [issue #213][issue213] for more information.\n\n# Troubleshooting\n\nIf you have problems when downloading class materials, please try to see if\none of the following actions solve your problem:\n\n* Make sure the class name you are using corresponds to the resource name\n  used in the URL for that class:\n    `https://www.coursera.org/learn/\u003cCLASS_NAME\u003e/home/welcome`\n\n* Have you tried to clean the cached cookies/credentials with the\n  `--clear-cache` option?\n\n* Note that many courses (most, perhaps?) may remove the materials after a\n  little while after the course is completed, while other courses may retain\n  the materials up to a next session/offering of the same course (to avoid\n  problems with academic dishonesty, apparently).\n  \u003cbr\u003e\u003cbr\u003e\n  In short, it is not guaranteed that you will be able to download after the\n  course is finished and this is, unfortunately, nothing that we can help\n  you with.\n\n* Make sure you have installed and/or updated all of your dependencies\n  according to the `requirements.txt` file as described above.\n\n* One can export a Netscape-style cookies file with a browser extension ([1][9], [2][10])\n  and use it with the `-c` option. This comes in handy\n  when the authentication via password is not working (the authentication\n  process changes now and then).\n\n* If results show 0 sections, you most likely have provided invalid\n  credentials (username and/or password in the command line or in your\n  `.netrc` file or in your `coursera-dl.conf` file).\n\n* For courses that have not started yet, but have had a previous iteration\n  sometimes a preview is available, containing all the classes from the last\n  course. These files can be downloaded by passing the `--preview`\n  parameter.\n\n* If you get an error like `Could not find class: \u003cCLASS_NAME\u003e`, then:\n    * Verify that the name of the course is correct. Current class\n    names in coursera are composed by a short course name e.g. `class` and\n    the current version of the course (a number). For example, for a\n    class named `class`, you would have to use `class-001`, `class-002`\n    etc.\n    * Second, verify that you are enrolled in the course. You won't be\n    able to access the course materials if you are not officially\n    enrolled and agreed to the honor course *via the website*.\n\n* If:\n    * You get an error when using `-n` to specify that you want to use a\n      `.netrc` file and,\n    * You want the script to use your default netrc file and,\n    * You get a message saying `coursera-dl: error: too few arguments`\n\n      Then you should specify `--` as an argument after `-n`, that is, `-n --`\n      or change the order in which you pass the arguments to the script, so that\n      the argument after `-n` begins with an hyphen (`-`).  Otherwise, Python's\n      `argparse` module will think that what you are passing is the name of the\n      netrc file that you want to use. See issue #162.\n\n* If your password has spaces, don't forget to write it using quotes.\n\n* Have you installed the right project ?\n  \u003cbr\u003e\u003cbr\u003e\n  **Warning**: If you installed the script using PyPi (pip) please verify that\n  you installed the correct project. We had to use a different name in pip\n  because our original name was already taken. Remember to install it using:\n  ```\n      pip install coursera-dl\n  ```\n\n## China issues\n\nIf you are from China and you're having problems downloading videos,\nadding \"52.84.167.78 d3c33hcgiwev3.cloudfront.net\" in the hosts file\n(/etc/hosts) and freshing DNS with \"ipconfig/flushdns\" may work\n(see https://github.com/googlehosts/hosts for more info).\n\n## Found 0 sections and 0 lectures on this page\n\nFirst of all, make sure you are enrolled to the course you want to download.\n\nMany old courses have already closed enrollment so often it's not an\noption. In this case, try downloading with `--preview` option. Some\ncourses allow to download lecture materials without enrolling, but\nit's not common and is not guaranteed to work for every course.\n\nFinally, you can download the videos if you have, at least, the index\nfile that lists all the course materials. Maybe your friend who is enrolled\ncould save that course page for you. In that case use the `--process_local_page`\noption.\n\nAlternatively you may want to try this various browser extensions designed for\nthis problem.\n\nIf none of the above works for you, there is nothing we can do.\n\n## Download timeouts\n\nCoursera-dl supports external downloaders but note that they are only used to\ndownload materials after the syllabus has been parsed, e.g. videos, PDFs, some\nhandouts and additional files (syllabus is always downloaded using the internal\ndownloader). If you experience problems with downloading such materials, you may\nwant to start using external downloader and configure its timeout values. For\nexample, you can use aria2c downloader by passing `--aria` option:\n\n```\ncoursera-dl -n --path . --aria2  \u003ccourse-name\u003e\n```\n\nAnd put this into aria2c's configuration file `~/.aria2/aria2.conf` to reduce\ntimeouts:\n\n```\nconnect-timeout=2\ntimeout=2\nbt-stop-timeout=1\n```\n\nTimeout configuration for internal downloader is not supported.\n\n## Windows: proxy support\n\nIf you're on Windows behind a proxy, set up the environment variables\nbefore running the script as follows:\n\n```\nset HTTP_PROXY=http://host:port\nset HTTPS_PROXY=http://host:port\n```\n\nRelated discussion: [#205](https://github.com/coursera-dl/coursera-dl/issues/205)\n\n## Windows: Failed to create process\n\nIn `C:\\Users\\\u003cuser\u003e\\AppData\\Local\\Programs\\Python\\Python39-32\\Scripts`\nor wherever Python installed (above is default for Windows)\nedit below file in idle: (right click on script name and select 'edit with idle in menu)\n\n```\ncoursera-dl-script\n```\n\nfrom\n\n```\n#!c:\\users\\\u003cuser\u003e\\appdata\\local\\programs\\python\\python39-32\\python.exe\n```\n\nto\n\n```\n#\"!c:\\users\\\u003cuser\u003e\\appdata\\local\\programs\\python\\python39-32\\python.exe\"\n```\n\n(add quotes). This is a known pip bug.\n\nSource: [issue #500][issue500] [StackOverflow][pipinstallerbug]\n\n## SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure\n\nThis is a known error, please do not report about this error message! The problem is in **YOUR** environment. To fix it, do the following:\n\n``` bash\nsudo apt-get install build-essential python-dev libssl-dev libffi-dev\npip install --user urllib3 pyasn1 ndg-httpsclient pyOpenSSL\n```\nIf the error remains, try installing coursera-dl from github following this instruction:\nhttps://github.com/coursera-dl/coursera-dl#alternative-installation-method-for-unix-systems\n\nIf you still have the problem, please read the following issues for more ideas on how to fix it:\n[#330](https://github.com/coursera-dl/coursera-dl/issues/330)\n[#377](https://github.com/coursera-dl/coursera-dl/issues/377)\n[#329](https://github.com/coursera-dl/coursera-dl/issues/329)\n\nThis is also worth reading:\nhttps://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning\n\n## Alternative CDN for `MathJax.js`\n\nWhen saving a course page, we enabled `MathJax` rendering for math equations, by\ninjecting `MathJax.js` in the header. The script is using a cdn service provided\nby [mathjax.org](https://cdn.mathjax.org/mathjax/latest/MathJax.js). However, that\nurl is not accessible in some countries/regions, you can provide a\n`--mathjax-cdn \u003cMATHJAX_CDN\u003e` parameter to specify the `MathJax.js` file that is\naccessible in your region.\n\n# Reporting issues\n\nBefore reporting any issue please follow the steps below:\n\n1. Verify that you are running the latest version of the script, and the\nrecommended versions of its dependencies, see them in the file\n`requirements.txt`.  Use the following command if in doubt:\n\n        pip install --upgrade coursera-dl\n\n2. If the problem persists, feel free to [open an issue][issue] in our\nbugtracker, please fill the issue template with *as much information as\npossible*.\n\n[issue]: https://github.com/coursera-dl/coursera-dl/issues\n\n# Filing an issue/Reporting a bug\n\nWhen reporting bugs against `coursera-dl`, please don't forget to include\nenough information so that you can help us help you:\n\n* Is the problem happening with the latest version of the script?\n* What operating system are you using?\n* Do you have all the recommended versions of the modules? See them in the\n  file `requirements.txt`.\n* What is the course that you are trying to access?\n* What is the precise command line that you are using (feel free to hide\n  your username and password with asterisks, but leave all other\n  information untouched).\n* What are the precise messages that you get? Please, use the `--debug`\n  option before posting the messages as a bug report. Please, copy and paste\n  them.  Don't reword/paraphrase the messages.\n\n# Feedback\n\nI enjoy getting feedback. Here are a few of the comments I've received:\n\n* \"Thanks for the good job! Knowledge will flood the World a little more thanks\n  to your script!\"\n  \u003cbr\u003eGuillaume V. 11/8/2012\n\n* \"Just wanted to send you props for your Python script to download Coursera\n  courses. I've been using it in Kenya for my non-profit to get online courses\n  to places where internet is really expensive and unreliable. Mostly kids here\n  can't afford high school, and downloading one of these classes by the usual\n  means would cost more than the average family earns in one week. Thanks!\"\n  \u003cbr\u003eJay L., [Tunapanda][14] 3/20/2013\n\n* \"I am a big fan of Coursera and attend lots of different courses. Time\n  constraints don't allow me to attend all the courses I want at the same time.\n  I came across your script, and I am very happily using it!  Great stuff and\n  thanks for making this available on Github - well done!\"\n  \u003cbr\u003eWilliam G.  2/18/2013\n\n* \"This script is awesome! I was painstakingly downloading each and every video\n  and ppt by hand -- looked into wget but ran into wildcard issues with HTML,\n  and then.. I came across your script.  Can't tell you how many hours you've\n  just saved me :) If you're ever in Paris / Stockholm, it is absolutely\n  mandatory that I buy you a beer :)\"\n  \u003cbr\u003eRazvan T. 11/26/2012\n\n* \"Thanks a lot! :)\"\n  \u003cbr\u003eViktor V. 24/04/2013\n\n# Contact\n\nPlease, post bugs and issues on [github][11]. Please, **DON'T** send support\nrequests privately to the maintainers! We are quite swamped with day-to-day\nactivities. If you have problems, **PLEASE**, file them on the issue tracker.\n\n[1]: https://www.coursera.org\n[2]: https://sourceforge.net/projects/gnuwin32/files/wget/1.11.4-1/wget-1.11.4-1-setup.exe\n[3]: http://rg3.github.io/youtube-dl\n[4]: https://f-droid.org/repository/browse/?fdid=org.videolan.vlc\n[5]: https://www.crummy.com/software/BeautifulSoup\n[6]: https://pypi.python.org/pypi/argparse\n[7]: https://pypi.python.org/pypi/setuptools\n[8]: http://stackoverflow.com/a/6031266/962311\n[9]: https://chrome.google.com/webstore/detail/cookietxt-export/lopabhfecdfhgogdbojmaicoicjekelh\n[10]: https://addons.mozilla.org/en-US/firefox/addon/export-cookies/\n[11]: https://github.com/coursera-dl/coursera-dl/issues\n[13]: http://techcrunch.com/2013/02/20/coursera-adds-29-schools-90-courses-and-4-new-languages-to-its-online-learning-platform/\n[14]: http://www.tunapanda.org\n[15]: https://github.com/html5lib/html5lib-python\n[16]: http://docs.python-requests.org/en/latest/\n[17]: https://pip.pypa.io/en/latest/\n[18]: http://ww45.python-distribute.org/pip_distribute.png\n[19]: https://pypi.python.org/pypi/six/\n[20]: https://www.coursera.org/about/terms\n[22]: https://pypi.python.org/\n[23]: https://pypi.python.org/pypi/coursera-dl\n[issue213]: https://github.com/coursera-dl/coursera-dl/issues/213\n[issue500]: https://github.com/coursera-dl/coursera-dl/issues/500\n[pipinstallerbug]: http://stackoverflow.com/questions/31808180/installing-pyinstaller-via-pip-leads-to-failed-to-create-process\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoursera-dl%2Fcoursera-dl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoursera-dl%2Fcoursera-dl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoursera-dl%2Fcoursera-dl/lists"}