{ "info": { "author": "fengleizZZ", "author_email": "fenglei4518@hotmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Topic :: Education" ], "description": "![](https://travis-ci.org/feng-lei/dl_coursera.svg?branch=master)![](https://img.shields.io/pypi/v/dl_coursera)![](https://img.shields.io/github/license/feng-lei/dl_coursera)\n\n## Todo\n\n- [x] Lectures (videos, subtitles, slides)\n- [x] Readings\n- [ ] Quizs\n- [ ] Jupyter notebooks\n\n## Install\n\n> Python 3.x is required. It is recommended to install this tool in a virtual environment.\n\n```\n$ pip install -U dl_coursera\n$ dl_coursera --version\n```\n\n## How-to\n\n1. Get the **cookies.txt** file\n\n Sign in to [Coursera](https://www.coursera.org/), then use a browser extension to export cookies as **cookies.txt**. The **cookies.txt** will expire in about two weeks, so you don't need to do this so frequently.\n\n For **Chrome**, you can use the [cookies.txt](https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg) extension.\n\n ![](https://raw.githubusercontent.com/feng-lei/dl_coursera/master/doc/1.png)\n\n For **Firefox**, you can use the [Export Cookies](https://addons.mozilla.org/en-US/firefox/addon/export-cookies-txt/?src=search) extension.\n\n ![](https://raw.githubusercontent.com/feng-lei/dl_coursera/master/doc/2.png)\n\n2. Enroll\n\n Navigate to homepage of the **course**/**specialization** you'd like to download, you can see its **slug** at the address bar. **Enroll** it.\n\n ![](https://raw.githubusercontent.com/feng-lei/dl_coursera/master/doc/0.png)\n\n3. Download\n\n ```\n $ dl_coursera --help\n usage: dl_coursera_run.py [-h] [--version] [--cookies COOKIES] --slug SLUG\n [--isSpec] [--n-worker {1,2,3,4,5}]\n [--outdir OUTDIR] --how\n {builtin,curl,aria2,aria2-rpc,uget,dummy}\n [--generate-input-file]\n [--aria2-rpc-url ARIA2_RPC_URL]\n [--aria2-rpc-secret ARIA2_RPC_SECRET]\n\n A simple, fast, and reliable Coursera crawling & downloading tool\n\n optional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n --cookies COOKIES path of the `cookies.txt`\n --slug SLUG slug of a course or a specializtion (with @--isSpec)\n --isSpec indicate that @--slug is slug of a specialization\n --n-worker {1,2,3,4,5}\n the number of threads used to crawl webpages. Default:\n 3\n --outdir OUTDIR the directory to save files to. Default: `.'\n --how {builtin,curl,aria2,aria2-rpc,uget,dummy}\n how to download files. builtin (NOT recommonded): use\n the builtin downloader. curl: invoke `curl` or\n generate an \"input file\" for it (with @--generate-\n input-file). aria2: invoke `aria2c` or generate an\n \"input file\" for it (with @--generate-input-file).\n aria2-rpc (HIGHLY recommonded): add downloading tasks\n to aria2 through its XML-RPC interface. uget\n (recommonded): add downloading tasks to the uGet\n Download Manager\n --generate-input-file\n when @--how is curl/aria2, indicate that to generate\n an \"input file\" for that tool, rather than to invoke\n it\n --aria2-rpc-url ARIA2_RPC_URL\n url of the aria2 XML-RPC interface. Default:\n `http://localhost:6800/rpc'\n --aria2-rpc-secret ARIA2_RPC_SECRET\n authorization token of the aria2 XML-RPC interface\n\n If the command succeeds, you shall see `Done :-)`. If some UNEXPECTED errors\n occur, try decreasing the value of @--n-worker and/or removing the directory\n @--outdir. For more information, visit `https://github.com/feng-lei/dl_coursera`.\n ```\n\n ```\n # download the course, of which slug is \"mathematical-thinking\"\n # saving files to the directory \"mt\"\n # using the \"built-in\" downloader\n $ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how builtin\n ```\n\n ```\n # download the specialization, of which slug is \"algorithms\"\n # saving files to the directory \"alg\"\n # using the \"built-in\" downloader\n $ dl_coursera --cookies path/to/cookies.txt --slug algorithms --isSpec --outdir alg --how builtin\n ```\n\n## Examples\n\n### using the \"built-in\" downloader\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how builtin\n```\n\n### using the \"curl\" downloader\n\n```\n# make sure curl (https://curl.haxx.se/download.html) is installed and in PATH\n$ curl --version\n```\n\nThe \"curl\" downloader can be used in two different ways: invoking `curl`, or generating an input file for `curl`.\n\n#### invoke `curl`\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how curl\n```\n\n#### generate an input file for `curl`\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how curl --generate-input-file\n$ curl --config mt/mathematical-thinking.download.curl_input_file.txt\n```\n\n### using the \"aria2\" downloader\n\n```\n# make sure aria2 (https://aria2.github.io) is installed and in PATH\n$ aria2c --version\n```\n\nThe \"aria2\" downloader can be used in two different ways: invoking `aria2c`, or generating an input file for `aria2c`.\n\n#### invoke `aria2c`\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how aria2\n```\n\n#### generate an input file for `aria2c`\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how aria2 --generate-input-file\n$ aria2c --input-file mt/mathematical-thinking.download.aria2_input_file.txt\n```\n\n### Using the \"aria2-rpc\" downloader\n\n```\n# make sure aria2 (https://aria2.github.io) is installed and in PATH\n$ aria2c --version\n```\n\n```\n# start aria2 with its XML-RPC interface enabled\n$ aria2c --enable-rpc\n```\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how aria2-rpc\n```\n\nUsing an aria2 GUI like [webui-aria2](https://github.com/ziahamza/webui-aria2) is highly recommended.\n\n![](https://raw.githubusercontent.com/feng-lei/dl_coursera/master/doc/3.png)\n\n### Using the \"uget\" downloader\n\n```\n# make sure uGet (https://sourceforge.net/projects/urlget/files/) is installed and in PATH\n\n## on Windows\n$ uget --version | more\n\n## on Linux\n$ uget-gtk --version\n```\n\n```\n# start uGet\n\n## on Windows\n$ uget\n\n## on Linux\n$ uget-gtk &\n```\n\n```\n$ dl_coursera --cookies path/to/cookies.txt --slug mathematical-thinking --outdir mt --how uget\n```\n\n![](https://raw.githubusercontent.com/feng-lei/dl_coursera/master/doc/4.png)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/feng-lei/dl_coursera", "keywords": "dl_coursera,coursera,coursera-dl,download,education,MOOC", "license": "", "maintainer": "", "maintainer_email": "", "name": "dl-coursera", "package_url": "https://pypi.org/project/dl-coursera/", "platform": "any", "project_url": "https://pypi.org/project/dl-coursera/", "project_urls": { "Homepage": "https://github.com/feng-lei/dl_coursera" }, "release_url": "https://pypi.org/project/dl-coursera/0.1.2/", "requires_dist": [ "beautifulsoup4 (>=4.6.0)", "Jinja2 (>=2.10)", "lxml (>=4.1.1)", "requests (>=2.18.4)" ], "requires_python": ">=3.5", "summary": "A simple, fast, and reliable Coursera crawling & downloading tool", "version": "0.1.2" }, "last_serial": 5865648, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "3110460429d69c93863f86d8f78131a5", "sha256": "970fbfbe6b9f49a9c32dad52ea4b8d94a154fd31877db779bb8b07f8449ea2b6" }, "downloads": -1, "filename": "dl_coursera-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3110460429d69c93863f86d8f78131a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 1520396, "upload_time": "2018-12-22T17:55:43", "url": "https://files.pythonhosted.org/packages/ea/30/d3372b0ba30612dc2605745ea9a8be8e25c975a30486a3520b9787ef0f16/dl_coursera-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44e5e9050b20dd1acef3d8d66a92e4a5", "sha256": "9d12d60379f65a31c4a65ee48b339cdb9af4007bb3015c97e8ac4ff0fd21d29f" }, "downloads": -1, "filename": "dl_coursera-0.1.0.tar.gz", "has_sig": false, "md5_digest": "44e5e9050b20dd1acef3d8d66a92e4a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 14625, "upload_time": "2018-12-22T17:55:45", "url": "https://files.pythonhosted.org/packages/5b/fa/dc60d8431189b742c20668356ec759df099b0b5af6dcb42c35b14b66987b/dl_coursera-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "eb4af529fe13bcc964d4f32d27767477", "sha256": "f092233b404fd15cd1957b77b36dd31702a6903b80c1b613f6a1be814beaa8e2" }, "downloads": -1, "filename": "dl_coursera-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eb4af529fe13bcc964d4f32d27767477", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 1521147, "upload_time": "2019-08-30T15:09:09", "url": "https://files.pythonhosted.org/packages/f6/c0/68552201ba40914733ffb5cb9d9eb8d586e24815fbce6c7bc7e9154df112/dl_coursera-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ddf463de4f195eda9bec623266058b29", "sha256": "d799724031194bf2eda3ae10dbab0f4302ba38df18fd7c0034d38f5c660cc68f" }, "downloads": -1, "filename": "dl_coursera-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ddf463de4f195eda9bec623266058b29", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 15509, "upload_time": "2019-08-30T15:09:11", "url": "https://files.pythonhosted.org/packages/99/ea/53b11a4438c57374d31556c861b25ad425856038dfa913efba2aa191d0cc/dl_coursera-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "741d461392a0b379370a6a7f5462afe9", "sha256": "ba0456095f392fcf394bee26c74b745c8c7e6929be967cd8e081c0ac90bd2ebb" }, "downloads": -1, "filename": "dl_coursera-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "741d461392a0b379370a6a7f5462afe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 1526303, "upload_time": "2019-09-21T09:40:16", "url": "https://files.pythonhosted.org/packages/86/2c/cc5855766bb5359f182714f7f4c7bc9b9a35852f02136a4afdada6e93504/dl_coursera-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dd2717b07e913a6f7a954513cc31ab9", "sha256": "9920ede32b5d7d7923e46d0788626bc1ee38262c7a40118b6da6ec93e67dddd3" }, "downloads": -1, "filename": "dl_coursera-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6dd2717b07e913a6f7a954513cc31ab9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 20246, "upload_time": "2019-09-21T09:40:19", "url": "https://files.pythonhosted.org/packages/dd/57/8fe037f40ab462d238f3d2f711f4e9f00a70095a2ba008aa01236d9dca09/dl_coursera-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "741d461392a0b379370a6a7f5462afe9", "sha256": "ba0456095f392fcf394bee26c74b745c8c7e6929be967cd8e081c0ac90bd2ebb" }, "downloads": -1, "filename": "dl_coursera-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "741d461392a0b379370a6a7f5462afe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 1526303, "upload_time": "2019-09-21T09:40:16", "url": "https://files.pythonhosted.org/packages/86/2c/cc5855766bb5359f182714f7f4c7bc9b9a35852f02136a4afdada6e93504/dl_coursera-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dd2717b07e913a6f7a954513cc31ab9", "sha256": "9920ede32b5d7d7923e46d0788626bc1ee38262c7a40118b6da6ec93e67dddd3" }, "downloads": -1, "filename": "dl_coursera-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6dd2717b07e913a6f7a954513cc31ab9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 20246, "upload_time": "2019-09-21T09:40:19", "url": "https://files.pythonhosted.org/packages/dd/57/8fe037f40ab462d238f3d2f711f4e9f00a70095a2ba008aa01236d9dca09/dl_coursera-0.1.2.tar.gz" } ] }