# khan-dl
A python script to download courses from [Khan Academy](https://www.khanacademy.org) using [yt-dlp](https://github.com/yt-dlp/yt-dlp) and [beautifulsoup4](https://pypi.org/project/beautifulsoup4/).


## Installation
```
pip install khan-dl -U
```
## Usage
```
$ khan-dl -h
usage: khan-dl [-h] [-i] [-c COURSE_URL]
optional arguments:
-h, --help show this help message and exit
-i, --interactive Enter Interactive Course Selection Mode
-c COURSE_URL, --course_url COURSE_URL
Enter Course URL
-a, --all Download all Courses from all Domains
```
- You can download courses interactively on a prompt, which will list all course
domains and their respective courses available with tab completion.
```
$ khan-dl -i
_ __ _ _ _ _ _ ____ _
| |/ /| | | | / \ | \ | | | _ \ | |
| ' / | |_| | / _ \ | \| | _____ | | | || |
| . \ | _ | / ___ \ | |\ ||_____|| |_| || |___
|_|\_\|_| |_|/_/ \_\|_| \_| |____/ |_____|
Domain: Math
Selected Domain: math
Downloading Courses...
Course: Early math
Selected Course: Early math
Course URL: https://www.khanacademy.org/math/early-math
Generating Path Slugs.....
Collecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]
Downloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]
```
- Download a specific course.
```
$ khan-dl -c "https://www.khanacademy.org/math/early-math"
_ __ _ _ _ _ _ ____ _
| |/ /| | | | / \ | \ | | | _ \ | |
| ' / | |_| | / _ \ | \| | _____ | | | || |
| . \ | _ | / ___ \ | |\ ||_____|| |_| || |___
|_|\_\|_| |_|/_/ \_\|_| \_| |____/ |_____|
Looking up https://www.khanacademy.org/math/early-math...
Course URL: https://www.khanacademy.org/math/early-math
Generating Path Slugs...
Collecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]
Downloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]
```
- Download all courses on traditional subjects like Math, Science, Computing, Humanities, Economics-Finance-Domain.
```
$ khan-dl -a
_ __ _ _ _ _ _ ____ _
| |/ /| | | | / \ | \ | | | _ \ | |
| ' / | |_| | / _ \ | \| | _____ | | | || |
| . \ | _ | / ___ \ | |\ ||_____|| |_| || |___
|_|\_\|_| |_|/_/ \_\|_| \_| |____/ |_____|
Downloading all Courses from all Domains...
Selected Domain: math
Downloading Courses...
Selected Domain: science
Downloading Courses...
Selected Domain: computing
Downloading Courses...
Selected Domain: humanities
Downloading Courses...
Selected Domain: economics-finance-domain
Downloading Courses...
Selected Domain: ela
Downloading Courses...
Course URL: https://www.khanacademy.org/math/early-math
Generating Path Slugs...
Collecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]
Downloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]
```
## Other solutions
Khan Academy is also available for offline usage through these Open Source projects:
- [Kolibri](https://learningequality.org/kolibri/)
- [Kiwix](https://www.kiwix.org/)
Raw data
{
"_id": null,
"home_page": "https://github.com/rand-net/khan-dl",
"name": "khan-dl",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "khan academy, khan academy downloader, video downloader",
"author": "rand-net",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/4c/4e/2de017e369bbd0e0d9c0610b3e38b339a8cf1c0bbf867df4bd991dea7d81/khan_dl-1.2.9.tar.gz",
"platform": null,
"description": "# khan-dl\n\nA python script to download courses from [Khan Academy](https://www.khanacademy.org) using [yt-dlp](https://github.com/yt-dlp/yt-dlp) and [beautifulsoup4](https://pypi.org/project/beautifulsoup4/).\n\n\n\n\n## Installation\n\n```\npip install khan-dl -U\n```\n\n## Usage\n\n```\n$ khan-dl -h\n\nusage: khan-dl [-h] [-i] [-c COURSE_URL]\n\noptional arguments:\n -h, --help show this help message and exit\n -i, --interactive Enter Interactive Course Selection Mode\n -c COURSE_URL, --course_url COURSE_URL\n Enter Course URL\n -a, --all Download all Courses from all Domains\n```\n\n- You can download courses interactively on a prompt, which will list all course\n domains and their respective courses available with tab completion.\n\n```\n$ khan-dl -i\n _ __ _ _ _ _ _ ____ _\n| |/ /| | | | / \\ | \\ | | | _ \\ | |\n| ' / | |_| | / _ \\ | \\| | _____ | | | || |\n| . \\ | _ | / ___ \\ | |\\ ||_____|| |_| || |___\n|_|\\_\\|_| |_|/_/ \\_\\|_| \\_| |____/ |_____|\n\n\n\nDomain: Math\nSelected Domain: math\n\nDownloading Courses...\n\nCourse: Early math\nSelected Course: Early math\nCourse URL: https://www.khanacademy.org/math/early-math\n\nGenerating Path Slugs.....\n\n\nCollecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]\nDownloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]\n```\n\n- Download a specific course.\n\n```\n$ khan-dl -c \"https://www.khanacademy.org/math/early-math\"\n _ __ _ _ _ _ _ ____ _\n| |/ /| | | | / \\ | \\ | | | _ \\ | |\n| ' / | |_| | / _ \\ | \\| | _____ | | | || |\n| . \\ | _ | / ___ \\ | |\\ ||_____|| |_| || |___\n|_|\\_\\|_| |_|/_/ \\_\\|_| \\_| |____/ |_____|\n\n\nLooking up https://www.khanacademy.org/math/early-math...\nCourse URL: https://www.khanacademy.org/math/early-math\n\nGenerating Path Slugs...\n\nCollecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]\nDownloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]\n```\n\n- Download all courses on traditional subjects like Math, Science, Computing, Humanities, Economics-Finance-Domain.\n\n```\n$ khan-dl -a\n\n _ __ _ _ _ _ _ ____ _\n| |/ /| | | | / \\ | \\ | | | _ \\ | |\n| ' / | |_| | / _ \\ | \\| | _____ | | | || |\n| . \\ | _ | / ___ \\ | |\\ ||_____|| |_| || |___\n|_|\\_\\|_| |_|/_/ \\_\\|_| \\_| |____/ |_____|\n\n\nDownloading all Courses from all Domains...\nSelected Domain: math\n\nDownloading Courses...\n\nSelected Domain: science\n\nDownloading Courses...\n\nSelected Domain: computing\n\nDownloading Courses...\n\nSelected Domain: humanities\n\nDownloading Courses...\n\nSelected Domain: economics-finance-domain\n\nDownloading Courses...\n\nSelected Domain: ela\n\nDownloading Courses...\n\n\nCourse URL: https://www.khanacademy.org/math/early-math\n\nGenerating Path Slugs...\n\n\nCollecting Youtube IDs: 100.0% [========================================================================================================================================>] 4/ 4 eta [00:00]\nDownloading Videos: 0.0% [> ] 0/ 75 eta [?:??:??]\n```\n\n## Other solutions\n\nKhan Academy is also available for offline usage through these Open Source projects:\n\n- [Kolibri](https://learningequality.org/kolibri/)\n- [Kiwix](https://www.kiwix.org/)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Download courses from khanacademy.org",
"version": "1.2.9",
"project_urls": {
"Homepage": "https://github.com/rand-net/khan-dl",
"Repository": "https://github.com/rand-net/khan-dl"
},
"split_keywords": [
"khan academy",
" khan academy downloader",
" video downloader"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a8db6be33d805d231b106c365cbd395c7d9747a3ab928b19e139b420326108c0",
"md5": "0d5849145a4bdf1de3f4882dca6f8c3a",
"sha256": "20f664ecd4c06b0f4c68694ea10f6935550d1dba03078bbf810ee18135e4f3dd"
},
"downloads": -1,
"filename": "khan_dl-1.2.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0d5849145a4bdf1de3f4882dca6f8c3a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 7840,
"upload_time": "2024-07-05T09:12:33",
"upload_time_iso_8601": "2024-07-05T09:12:33.310352Z",
"url": "https://files.pythonhosted.org/packages/a8/db/6be33d805d231b106c365cbd395c7d9747a3ab928b19e139b420326108c0/khan_dl-1.2.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4c4e2de017e369bbd0e0d9c0610b3e38b339a8cf1c0bbf867df4bd991dea7d81",
"md5": "50e94650586f04f5e99b16ab1b5f965a",
"sha256": "99f9292f76320c18f8ca7c5988bb91f8b0aad6d6876071564f77b4536b2c750e"
},
"downloads": -1,
"filename": "khan_dl-1.2.9.tar.gz",
"has_sig": false,
"md5_digest": "50e94650586f04f5e99b16ab1b5f965a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 7442,
"upload_time": "2024-07-05T09:12:37",
"upload_time_iso_8601": "2024-07-05T09:12:37.364174Z",
"url": "https://files.pythonhosted.org/packages/4c/4e/2de017e369bbd0e0d9c0610b3e38b339a8cf1c0bbf867df4bd991dea7d81/khan_dl-1.2.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-05 09:12:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rand-net",
"github_project": "khan-dl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "khan-dl"
}