
- Removed a few unused imports + Reworked the way paths are formed so they shouldn't be a problem on other operating systems NOTE: the new dependencies in requirements.txt are NOT required at this time
Udemy Downloader with DRM support
NOTE
This program is WIP, the code is provided as-is and I am not held resposible for any legal issues resulting from the use of this program.
Support
if you want help using the program, join my discord server or use github issues
License
All code is licensed under the MIT license
Description
Simple program to download a Udemy course, has support for DRM videos but requires the user to aquire the decryption key (for legal reasons).
Current only Windows is supported but with some small modifications it should work on linux also (and maybe mac)
Requirements
- You would need to download
ffmpeg
andmp4decrypter
from Bento4 SDK and ensure they are in path (typing their name in cmd invokes them).
Usage
quick and dirty how-to
You will need to get a few things before you can use this program:
- Decryption Key ID
- Decryption Key
- Udemy Course URL
- Udemy Bearer Token
Setting up
- rename
.env.sample
to.env
(you only need to do this if you plan to use the .env file to store your bearer token) - rename
keyfile.example.json
tokeyfile.json
Aquire bearer token
- open dev tools
- go to network tab
- in the search field, enter
api-2.0/courses
- click a random request
- locate the
Request Headers
section - copy the the text after
Authorization
, it should look likeBearer xxxxxxxxxxx
- enter this in the
.env
file afterUDEMY_BEARER=
(you can also pass this as an argument, see advanced usage for more information)
Key ID and Key
It is up to you to aquire the key and key id. Please don't ask me for help acquiring these, decrypting DRM protected content can be considered piracy.
Start Downloading
You can now run python main.py
to start downloading. The course will download to out_dir
, chapters are seperated into folders.
Advanced Usage
usage: main.py [-h] -c COURSE_URL [-b BEARER_TOKEN] [-d] [-q QUALITY] [-l LANG] [--skip-lectures] [--download-assets]
[--download-captions]
Udemy Downloader
optional arguments:
-h, --help show this help message and exit
-c COURSE_URL, --course-url COURSE_URL
The URL of the course to download
-b BEARER_TOKEN, --bearer BEARER_TOKEN
The Bearer token to use
-d, --debug Use test_data.json rather than fetch from the udemy api.
-q QUALITY, --quality QUALITY
Download specific video quality. (144, 360, 480, 720, 1080)
-l LANG, --lang LANG The language to download for captions (Default is en)
--skip-lectures If specified, lectures won't be downloaded.
--download-assets If specified, lecture assets will be downloaded.
--download-captions If specified, captions will be downloaded.
- Passing a Bearer Token and Course ID as an argument
python main.py -c <Course URL> -b <Bearer Token>
python main.py -c https://www.udemy.com/courses/myawesomecourse -b <Bearer Token>
- Download a specific quality
python main.py -c <Course URL> -q 720
- Download assets along with lectures
python main.py -c <Course URL> --download-assets
- Download assets and specify a quality
python main.py -c <Course URL> -q 360 --download-assets
- Download captions (Defaults to English)
python main.py -c <Course URL> --download-captions
- Download captions with specific language
python main.py -c <Course URL> --download-captions -l en
- English subtitlespython main.py -c <Course URL> --download-captions -l es
- Spanish subtitlespython main.py -c <Course URL> --download-captions -l it
- Italian subtitlespython main.py -c <Course URL> --download-captions -l pl
- Polish Subtitlespython main.py -c <Course URL> --download-captions -l all
- Downloads all subtitles- etc
- Skip downloading lecture videos
python main.py --skip-lectures --download-captions
- Downloads only captionspython main.py --skip-lectures --download-assets
- Downloads only assets
Credits
- https://github.com/Jayapraveen/Drm-Dash-stream-downloader - For the original code which this is based on
- https://github.com/alastairmccormack/pywvpssh - For code related to PSSH extraction
- https://github.com/alastairmccormack/pymp4parse - For code related to mp4 box parsing (used by pywvpssh)
- https://github.com/lbrayner/vtt-to-srt - For code related to converting subtitles from vtt to srt format
- https://github.com/r0oth3x49/udemy-dl - For some of the informaton related to using the udemy api