A cross-platform python based utility to download courses from udemy for personal offline use.

Overview

GitHub release GitHub stars GitHub forks GitHub issues GitHub license

udemy-dl

A cross-platform python based utility to download courses from udemy for personal offline use.

udemy-dl-v1-1.png

Warning

Udemy has started to encrypt many of the course videos, so downloading them may be impossible/illegal because it involves decrypting DRM'd videos which opens up the author to DMCA takedowns/lawsuits. If you use udemy-dl and some/all videos are skipped, please don't open a new issue or comment that the issue still exists. All requests to bypass DRM/encryption will be ignored.

If you'd like to see the full context, then read issue 627.

Important Note:

  • Don't share your credentials until the issue is properly tagged/labeled with account-needed.
  • Owner of this repository is not responsible for any misuse if you share your credentials with strangers.

Requirements

  • Python 3 only (Now udemy-dl doesn't support python 2)
  • Python pip
  • Python module requests
  • Python module colorama
  • Python module unidecode
  • Python module six
  • Python module cloudscraper
  • Python module requests[security] or pyOpenSSL
  • FFmpeg (to download hls based streams properly)

Module Installation

pip install -r requirements.txt

HLS streams download requirements

  • You would need FFmpeg to be installed and added to environment variable so that udemy-dl can access.
  • Download FFmpeg from here
  • On ubuntu you can install it via apt install ffmpeg.
  • Add to environment variables then udemy-dl will be able to use it when downloading HLS streams.

Tested on

  • Windows 7/8/8.1/10
  • Ubuntu-LTS (tested with super user)

Features

  • Added proper session management.
  • Resume capability for a course video.
  • Added proper logging errors and warnings.
  • Support multiple courses download from file.
  • Supports organization and individual udemy users both.
  • Added support to download hls based streams if available.
  • Added functionality to reset lecture number to start from 1.
  • Added switch for session caching on demand. (option: --cache)
  • Convert WebVTT to SRT but donot delete WebVTT. (option: --keep-vtt)
  • Skip fetching HLS streams, This will make the fetching fast. (option: --skip-hls)
  • List down course contents and video resolution, suggest the best resolution (option: --info).
  • Download/skip all available subtitles for a video (options: --sub-only, --skip-sub).
  • Download/skip all available assets for a video (options: --assets-only, --skip-assets).
  • Download specific chapter in a course (option: -c / --chapter).
  • Download specific lecture in a chapter (option: -l / --lecture).
  • Download specific subtitle for a lecture (option: -s / --sub-lang).
  • Download chapter(s) by providing range in a course (option: --chapter-start, --chapter-end).
  • Download lecture(s) by providing range in a chapter (option: --lecture-start, --lecture-end).
  • Download lecture(s) in requested resolution (option: -q / --quality).
  • Download course to user requested path (option: -o / --output).
  • Authentication using cookies (option: -k / --cookies).

Before creating an issue, please do the following:

  1. Use the GitHub issue search — check if the issue is already reported.
  2. Check if the issue is already fixed — try to reproduce it using the latest master in the repository.
  3. Make sure, that information you are about to report is related to this repository and not the one available on Python's repository, PyPi, Because this repository cannot be downloaded/installed via pip command.
  4. Follow issue reporting template properly otherwise the issue will be closed.

How to login with cookie

The cookies.txt file should have the following simple format, eg:

access_token=JKU9QNs2IQDBKoYKvOBclSPXN97baf32o1Jo2L9vX

Finding your access token value

Download udemy-dl

You can download the latest version of udemy-dl by cloning the GitHub repository.

git clone https://github.com/r0oth3x49/udemy-dl.git

Usage

Download a course

python udemy-dl.py COURSE_URL

Download a courses from file

python udemy-dl.py FILE-CONTAINING-COURSE-URLs

Download course with specific resolution

python udemy-dl.py COURSE_URL -q 720

Download course to a specific location

python udemy-dl.py COURSE_URL -o "/path/to/directory/"

Download course with specific resolution to a specific location

python udemy-dl.py COURSE_URL -q 720 -o "/path/to/directory/"

Download specific chapter from a course

python udemy-dl.py COURSE_URL -c NUMBER

Download specific lecture from a chapter

python udemy-dl.py COURSE_URL -c NUMBER -l NUMBER

Download lecture(s) range from a specific chapter

python udemy-dl.py COURSE_URL -c NUMBER --lecture-start NUMBER --lecture-end NUMBER

Download chapter(s) range from a course

python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER

Download specific lecture from chapter(s) range

python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER --lecture NUMBER

Download lecture(s) range from chapter(s) range

python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER --lecture-start NUMBER --lecture-end NUMBER

List down specific chapter from a course

python udemy-dl.py COURSE_URL -c NUMBER --info

List down specific lecture from a chapter

python udemy-dl.py COURSE_URL -c NUMBER -l NUMBER --info

Download specific subtite by using language code such as (en, es) if lang switch is not specified then default will be all subtitles

python udemy-dl.py COURSE_URL --sub-lang en

Advanced Usage


Author: Nasir khan (r0ot h3x49)

usage: udemy-dl.py [-h] [-v] [-u] [-p] [-k] [-o] [-q] [-c] [-l] [-s] [--chapter-start] [--chapter-end] [--lecture-start] [--lecture-end] [--info] [--cache]
                   [--keep-vtt] [--sub-only] [--skip-sub] [--skip-hls] [--assets-only] [--skip-assets]
                   course

A cross-platform python based utility to download courses from udemy for personal offline use.

positional arguments:
  course            Udemy course.

General:
  -h, --help        Shows the help.
  -v, --version     Shows the version.

Authentication:
  -u , --username   Username in udemy.
  -p , --password   Password of your account.
  -k , --cookies    Cookies to authenticate with.

Advance:
  -o , --output     Download to specific directory.
  -q , --quality    Download specific video quality.
  -c , --chapter    Download specific chapter from course.
  -l , --lecture    Download specific lecture from chapter(s).
  -s , --sub-lang   Download specific subtitle/caption (e.g:- en).
  --chapter-start   Download from specific position within course.
  --chapter-end     Download till specific position within course.
  --lecture-start   Download from specific position within chapter(s).
  --lecture-end     Download till specific position within chapter(s).

Others:
  --info            List all lectures with available resolution.
  --cache           Cache your session to avoid providing again.
  --keep-vtt        Keep WebVTT caption(s).
  --sub-only        Download captions/subtitle only.
  --skip-sub        Download course but skip captions/subtitle.
  --skip-hls        Download course but skip hls streams. (fast fetching).
  --assets-only     Download asset(s) only.
  --skip-assets     Download course but skip asset(s).

Example:
  python udemy-dl.py  COURSE_URL
  python udemy-dl.py  COURSE_URL -k cookies.txt
  python udemy-dl.py -u [email protected] -p p4ssw0rd COURSE_URL

TODO

  • Add support to download course on a flaky connection.
Comments
  • README.md - Extracting Cookies / Request Headers is unclear

    README.md - Extracting Cookies / Request Headers is unclear

    Now click on My Courses in the Udemy navbar and refresh the page you will see some requests under Network Tab. Right click on request links to udemy.com/api-2.0/. Simply copy Request Headers and save to text file.

    These instructions really are not clear. I would suggest to improve "Right click on request links to udemy.com/api-2.0/" to specify which request link to udemy.com/api-2.0/ - if any one is OK, then specify that. "Simply copy Request Headers and save to text file.": there are Request Headers displayed lower down in Dev Tools. To specify that you can save the headers via the right click context menu: "Right click on... and select 'Copy Request Headers' from the context menu". "and save to text file." -> "The headers are now in the clipboard. Paste them into a text file and save it to the udemy-dl directory"

    So far so good?

    Now the next point I cannot suggest a phrasing for as I could not work out what the instruction is trying to do. "Done run the udemy-dl against that text file it will start downloading the course."

    What does it mean to run udemy-dl "against" a text file? I cannot see any option to use a text file as parameters to udemy-dl .

    opened by morkeltry 40
  • Exception: 504 Gateway Time-out

    Exception: 504 Gateway Time-out

    Describe the bug Cannot download course, get the following error:

    python ./udemy-dl.py https://www.udemy.com/course/nodejs-the-complete-guide/ -k cookies3.txt 
                  __                               ____  
       __  ______/ /__  ____ ___  __  __      ____/ / /  
      / / / / __  / _ \/ __ `__ \/ / / /_____/ __  / /   
     / /_/ / /_/ /  __/ / / / / / /_/ /_____/ /_/ / /    
     \__,_/\__,_/\___/_/ /_/ /_/\__, /      \__,_/_/     
                               /____/
                                     Version : 1.0
                                     Author  : Nasir Khan (r0ot h3x49)
                                     Github  : https://github.com/r0oth3x49
    
    [i] : Trying to login using session cookie
    [i] : Logged in successfully.
    Traceback (most recent call last):on ..
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/extract.py", line 339, in _extract_course_json
        resp = self._extract_large_course_content(url=url)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/extract.py", line 311, in _extract_large_course_content
        data = self._session._get(url).json()
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/session.py", line 47, in _get
        raise Exception(f"{session.status_code} {session.reason}")
    Exception: 504 Gateway Time-out
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "./udemy-dl.py", line 611, in <module>
        main()
      File "./udemy-dl.py", line 581, in main
        udemy_obj.course_download(
      File "./udemy-dl.py", line 283, in course_download
        course = udemy.course(
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/udemy.py", line 40, in course
        return Udemy(url, username, password, cookies, basic, skip_hls_stream, callback)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/internal.py", line 65, in __init__
        super(InternUdemyCourse, self).__init__(*args, **kwargs)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/shared.py", line 300, in __init__
        self._fetch_course()
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/internal.py", line 78, in _fetch_course
        self._info = self._real_extract(self._url, skip_hls_stream=self._skip_hls_stream)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/extract.py", line 608, in _real_extract
        course_json = self._extract_course_json(url, course_id, portal_name)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/extract.py", line 347, in _extract_course_json
        resp = self._extract_large_course_content(url=url)
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/extract.py", line 320, in _extract_large_course_content
        resp = self._session._get(_next).json()
      File "/home/roman/Cloud/DriveTrust Drive/Udemy/udemy-dl/udemy/session.py", line 47, in _get
        raise Exception(f"{session.status_code} {session.reason}")
    Exception: 504 Gateway Time-out
    
    

    To Reproduce

    Steps to reproduce the behavior:

    1. udemy course url: [e.g https://www.udemy.com/course/nodejs-the-complete-guide/] '...'
    2. Run the following command to reproduce the error: python ./udemy-dl.py https://www.udemy.com/course/nodejs-the-complete-guide/ -k cookies3.txt
    3. See error

    Expected behavior Course should download

    Python Environment (please complete the following information):

    • Python 3.8.3
    • Ubuntu 18.04
    resolved 
    opened by romrayster 28
  • Udemy Says : 403 Forbidden retry after few minutes

    Udemy Says : 403 Forbidden retry after few minutes

    Hi!

    just as the title mention, i have an error when i try to download course. "Udemy Says : 403 Forbidden retry after few minutes" Does anyone has the same error ?

    resolved 
    opened by AnthonyIp 24
  • Sometimes file types are not downloading all the time

    Sometimes file types are not downloading all the time

    Describe the bug Sometimes files with py, json, and text extension are skipped from being downloaded

    To Reproduce Steps to reproduce the behavior:

    1. udemy course url: https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch
    2. Run the following command to reproduce the error... python udemy-dl.py https://www.udemy.com/course/python-for-beginners-learn-python-from-scratch/ -k cookie.txt -u my_emails_address -p my_password -q 1080 -o "../Udemy_-_Python_3_from_Beginner_to_Expert_-_Learn_Python_from_Scratch" --skip-sub
    3. See error... Asset : '006 arhitmetic-operators.py' (download skipped). [-] : Reason : int() argument must be a string or a number, not 'NoneType' or Asset : '075 namesurnames.txt' (download skipped). [-] : Reason : int() argument must be a string or a number, not 'NoneType' or Asset : '078 sample.json' (download skipped). [-] : Reason : int() argument must be a string or a number, not 'NoneType'

    Expected behavior I expected the files to download like all other files (mp4, pdf, doc, txt, html, zip, py, json)

    Screenshots If applicable, add screenshots to help explain your problem.

    Python Environment (please complete the following information):

    • OS Platform: [Ubuntu 18.04]
    • Python Version [2.7.17]

    Additional context First time seeing this occur and only with this course. Some of the py and txt files did download, but most were skipped. All naming conventions were the same for files successfully downloaded and for those that were skipped. I manually downloaded a few of the files being skipped and opened them in vs codium. I didn't see any issues with contents of files i.e. not corrupt or empty files. Any suggestions? Update: It's happening on https://www.udemy.com/course/docker-tutorial/ as well.

    cant-reproduce account-needed 
    opened by johndoe1969 21
  • bug when trying to download

    bug when trying to download

    Traceback (most recent call last): File "udemy-dl.py", line 924, in main() File "udemy-dl.py", line 879, in main udemy.ExtractAndDownload(quality=res) File "udemy-dl.py", line 291, in ExtractAndDownload self.login() File "udemy-dl.py", line 40, in login extract_info.login(self.username, self.password) File "/home/thesalah1212/udemy-dl-master/udemy/_extractor.py", line 147, in login login_form = self._fill_login_form(login_popup, username, password) File "/home/thesalah1212/udemy-dl-master/udemy/_extractor.py", line 98, in _fill_login_form login_form = self._form_hidden_inputs('login-form', webpage) File "/home/thesalah1212/udemy-dl-master/udemy/_extractor.py", line 88, in _form_hidden_inputs return _hidden_inputs(form) File "/home/thesalah1212/udemy-dl-master/udemy/_utils.py", line 80, in _hidden_inputs html = re.sub(r'<!--(?:(?!', '', html) File "/usr/lib/python3.5/re.py", line 182, in sub return _compile(pattern, flags).sub(repl, string, count) TypeError: expected string or bytes-like object [email protected]:~/udemy-dl-master$

    opened by thesalah1212 20
  • AttributeError: 'NoneType' object has no attribute 'group'

    AttributeError: 'NoneType' object has no attribute 'group'

    After fetching the newest tarball i run into this error on MacOS with Homebrew. Version before was good, but got in Courses with empty material files (e.g. Empty PowerPoint files) always:

    Traceback (most recent call last): File "udemy-dl.py", line 858, in main() File "udemy-dl.py", line 774, in main udemy.ExtractAndDownload(path=outto) File "udemy-dl.py", line 387, in ExtractAndDownload out = self.Downloader(_url, lecture_name, chapter_path) File "udemy-dl.py", line 88, in Downloader out = course_dl.download(url, title, filepath=path, quiet=True, callback=self.Download) File "/Users/shade/Downloads/udemy-dl-master/udemy/_downloader.py", line 120, in download progress_stats = (bytesdone, bytesdone * 1.0 / total, rate, eta) ZeroDivisionError: float division by zero

    Now, with the newest revision i get:

    [*] : Downloading webpage.. [*] : Extracting course information.. [*] : Downloading '....'. Traceback (most recent call last): File "udemy-dl.py", line 858, in main() File "udemy-dl.py", line 774, in main udemy.ExtractAndDownload(path=outto) File "udemy-dl.py", line 280, in ExtractAndDownload self.login() File "udemy-dl.py", line 39, in login extract_info.login(self.username, self.password) File "/Users/shade/.Trash/udemy-dl-master/udemy/_extractor.py", line 99, in login csrf_token = self._get_csrf_token() File "/Users/shade/.Trash/udemy-dl-master/udemy/_extractor.py", line 70, in _get_csrf_token return match.group(1) AttributeError: 'NoneType' object has no attribute 'group'

    invalid Irrelevant 
    opened by Shadesh 20
  • 403 Unauthorized

    403 Unauthorized

    hello, im already download new udemy-dl but still error with me, i use windows 10 google crome with my browser

    capture

    and

    im using --upgrade to but not work

    resolved 
    opened by Keweb 19
  • Unable to download course

    Unable to download course

    When I try to download a course, I get following error. I've tried with diffrent links but result has not changed.

       __  ______/ /__  ____ ___  __  __      ____/ / /  
      / / / / __  / _ \/ __ `__ \/ / / /_____/ __  / /   
     / /_/ / /_/ /  __/ / / / / / /_/ /_____/ /_/ / /    
     \__,_/\__,_/\___/_/ /_/ /_/\__, /      \__,_/_/     
                               /____/
                                     Version : 0.5
                                     Author  : Nasir Khan (r0ot h3x49)
                                     Github  : https://github.com/r0oth3x49
    
    [*] : Trying to login as ([email protected])...
    [+] : Logged in successfully.
    [-] : Downloading course information, course id not found .. (failed)
    [i] : It seems either you are not enrolled or you have to visit the course atleast once while you are logged in.
    [*] : Trying to logout now...
    [+] : Logged out successfully.
    
    under-observation 
    opened by serhattsnmz 17
  • json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    Describe the bug I tried to get info of all lectures and also tried downloading the lectures but getting the same error always. The login through cookies is successful but its unable to fetch any info from udemy

    To Reproduce Steps to reproduce the behavior:

    1. udemy course url: https://www.udemy.com/course/the-web-developer-bootcamp

    2. Comand Used: ( Getting these errors on every command for this course )

    python3 udemy-dl.py https://www.udemy.com/course/the-web-developer-bootcamp -k cookie.txt --info python3 udemy-dl.py https://www.udemy.com/course/the-web-developer-bootcamp/ -k cookie.txt -q 720 -o "/home/xd003/udemy"

    [[email protected] udemy-dl]$ python3 udemy-dl.py https://www.udemy.com/course/the-web-developer-bootcamp -k cookie.txt --info
    
                  __                               ____  
       __  ______/ /__  ____ ___  __  __      ____/ / /  
      / / / / __  / _ \/ __ `__ \/ / / /_____/ __  / /   
     / /_/ / /_/ /  __/ / / / / / /_/ /_____/ /_/ / /    
     \__,_/\__,_/\___/_/ /_/ /_/\__, /      \__,_/_/     
                               /____/
                                     Version : 0.5
                                     Author  : Nasir Khan (r0ot h3x49)
                                     Github  : https://github.com/r0oth3x49
    
    [*] : Trying to login using cookies ...
    [+] : Logged in successfully.
    Traceback (most recent call last):on .. 
      File "udemy-dl.py", line 1453, in <module>
        main()
      File "udemy-dl.py", line 968, in main
        udemy.course_list_down(chapter_number=options.chapter, lecture_number=options.lecture, unsafe=options.unsafe)
      File "udemy-dl.py", line 143, in course_list_down
        course = udemy.course(url=self.url, username=self.username, password=self.password, cookies=self.cookies)
      File "/home/xd003/udemy-dl/udemy/_udemy.py", line 38, in course
        return Udemy(url, username, password, cookies, basic, callback)
      File "/home/xd003/udemy-dl/udemy/_internal.py", line 44, in __init__
        super(InternUdemyCourse, self).__init__(*args, **kwargs)
      File "/home/xd003/udemy-dl/udemy/_shared.py", line 258, in __init__
        self._fetch_course()
      File "/home/xd003/udemy-dl/udemy/_internal.py", line 56, in _fetch_course
        self._info              =       self._real_extract(self._url)
      File "/home/xd003/udemy-dl/udemy/_extract.py", line 469, in _real_extract
        course_json = self._extract_course_json(url, course_id, portal_name)
      File "/home/xd003/udemy-dl/udemy/_extract.py", line 270, in _extract_course_json
        resp = self._extract_large_course_content(url=url)
      File "/home/xd003/udemy-dl/udemy/_extract.py", line 234, in _extract_large_course_content
        data = self._session._get(url).json()
      File "/usr/lib/python3.8/site-packages/requests/models.py", line 898, in json
        return complexjson.loads(self.text, **kwargs)
      File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
        return _default_decoder.decode(s)
      File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    

    Screenshots If applicable, add screenshots to help explain your problem. g

    Python Environment (please complete the following information):

    • OS Platform: Manjaro Linux x86_64
    • Python Version: 3.8.3

    Update - i tried this same command on another course i have in my account and didnt got error on it . I dont know if that matters but this course on which i have got this error is kinda big in size - it has 41 chapters/sections and 405 lectures

    opened by xd003 16
  • Udemy Says : 403 Forbidden You should use cookie base method to authenticate or try again in few minutes

    Udemy Says : 403 Forbidden You should use cookie base method to authenticate or try again in few minutes

    Describe the bug Hello udemy-dl team. I downloaded the update that was released 10 days ago because when I download it, it sends me the message: Udemy Says: 403 Forbidden You should use cookie base method to authenticate or try again in a few minutes.

    To Reproduce I have followed the guide written by the admin in the league for Google Chrome https://github.com/r0oth3x49/udemy-dl/issues/389 and I have created a file named cookies.txt

    I have followed the 2 options available:

    $ python udemy-dl.py https://www.udemy.com/course/universidad-python-desde-cero-hasta-experto-django-flask-rest-web/ --info -k cookies.txt

    $ python udemy-dl.py -u [email protected] -p password https://www.udemy.com/course/universidad-python-desde-cero-hasta-experto-django-flask-rest-web/ - k cookies.txt

    I don't get a successful result :(

    Screenshots

    pythonuser

    pythoncookies

    Python Environment (please complete the following information):

    • OS Platform: [e.g. Windows 10, Ubuntu 16.04, macOS Sierra]
    • Python Version [e.g. 3.x.x]
    help-wanted cant-reproduce 
    opened by almsx 16
  • Download of videos fails with URLError

    Download of videos fails with URLError

    Download a course fails with the current Git master (f5623f1195bfabf29467367ed47923afe03c944a). Login works fine, the overview pages are also fetched and with --sub-only I get the subtitle. But every video download is skipped with URLError : either your internet connection is not working or server aborted the request.

    The course doesn't matter, but I just reconfirmed the problem with this free course: https://www.udemy.com/become-an-options-trading-expert/

    Is there any way to make udemy-dl more verbose? Let me know if there are any other means for me to help in debuging.

    cant-reproduce 
    opened by Janed89 16
  • DRM protected video streams are being skipped (udemy-dl not downloading videos)

    DRM protected video streams are being skipped (udemy-dl not downloading videos)

    When i'm trying to download any course any videos that have their URLs starting in blob:https://URL_UDEMY are being skipped.

    the lectures are recognized but only assets in that chapter are downloaded. I have all requirements including ffmpeg installed & working in command line.

    [i] : Downloading chapter : (2) [i] : Chapter (02 JavaScript Refresher) [i] : Found (13) lecture(s).

    [i] : Downloading asset(s) [i] : Downloading (022 next-gen-js-summary.pdf) [+] : Asset : '022 next-gen-js-summary.pdf' (already downloaded)

    Lectures were found but not downloaded

    • OS Platform: macOS Big Sur & Windows 10
    • Python Version - Python 3
    won't fix 
    opened by nChauhan91 145
Releases(v1.1)
  • v1.1(Feb 21, 2021)

  • v1.0(Sep 12, 2020)

    Features:

    • Added proper session management.
    • Restructure code to make it bit nicer.
    • Added proper logging for errors and warning which fixes (#477).
    • Added support to download multiple courses from file.
    • Added support to download by default just EN subtitle. (could use --sub-lang to download others)
    • Added switch to keep WebVTT subtitles (option: --keep-vtt).
    • Added support to fetch/skip HLS streams such as 1080p etc. (option to skip --skip-hls).
    • Removed --names, --save switches.
    • Removed --cache switch as proper session management is added.
    • Removed --unsafe switch now unicode characters are handled properly in code.
    • Added support to download/skip all available assets for a video (options: --assets-only, --skip-assets).
    • Removed support for python 2 now only works with python 3
    Source code(tar.gz)
    Source code(zip)
  • v0.5(May 21, 2018)

    udemy-dl v0.5, Added feature to authenticate using cookies, Added feature to save lecture titles to text file, Added feature to download courses containing unicode characters in title, added file to listdown contributors

    Features

    • Download/save lecture names (option: --names).
    • Authentication using cookies (option: -k / --cookies) thanks to @jhonyyy90.
    • Download lectures containing unsafe unicode characters in title/name (option: --unsafe).
    Source code(tar.gz)
    Source code(zip)
  • v0.4(Feb 26, 2018)

    udemy-dl v0.4, added feature to download specific chapter, chapter(s) range, lecture or lecture(s) from chapter or chapter(s) range. replaced some old option with new one.

    Features

    • Download spacific chapter in a course (option: -c / --chapter) thanks to @alfari16.
    • Download chapter(s) by providing range in a course (option: --chapter-start, --chapter-end).
    • Download specific lecture in a chapter (option: -l / --lecture).
    • Download lecture(s) by providing range in a chapter (option: --lecture-start, --lecture-end).
    • Changed (option: -l / --list-infos) by (option: --info).
    • Changed (option: -c / --configs) by (option: --cache).
    • Changed (option: -s / --save-links) by (option: --save).
    • Changed (option: -r / --resolution) by (option: -q / --quality).
    • Removed (option: -d / --get-default).
    Source code(tar.gz)
    Source code(zip)
  • v0.3(Dec 30, 2017)

    udemy-dl is a python based command line utility that lets you download the courses from udemy.com in which you are already enrolled. by using udemy-dl you can download courses from your udemy account to your personal computer or laptop which you can use later for learning purposes & you can share with friends. currently not following Semantic versioning but may be in future i will add the proper way of Semantic versioning.

    Source code(tar.gz)
    Source code(zip)
Owner
Nasir Khan
Anything the mind can conceive, It can achieve
Nasir Khan
A modern CLI to download animes automatically from Twist

Kurby Kurby is a nice and simple CLI that use Twist website, and their huge collection to download animes for free and automatically Animes from Twist

Alain BERRIER 48 Dec 22, 2022
VD Song Bot - A telegram bot that can download songs

VD Song Bot A telegram bot that can download songs Reach me on Telegram @MusicVNDbot Deploy to Heroku The easiest way to deploy this Song Bot Mandator

Venuja Thilakarathna 2 Feb 19, 2022
Quickly, simply, and asynchronously download NFT's from an Opensea collection

iRightClick Quickly, simply, and asynchronously download NFT's from an Opensea collection. NOTICE This tool is not developed to encourage or facilitat

Setro 34 Dec 30, 2022
This is Yt Downloader. Coded with Python (my first repository)

Get Started Download & install Python first before using this software. Download Python Installing Python and Pytube Library (IMPORTANT) Installing Py

Qi 2 Oct 25, 2021
Code for "Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions"

Adversarial Motion Priors Make Good Substitutes for Complex Reward Functions Codebase for the "Adversarial Motion Priors Make Good Substitutes for Com

Alejandro Escontrela 54 Dec 13, 2022
Download all your URI Online Judge source codes and upload to GitHub with simple steps.

URI-Code-Downloader Download all your URI Online Judge source codes and upload to GitHub with simple steps. Prerequisites Python 3.x Installing Downlo

Luan Simões 9 Mar 23, 2022
Download a large file from Google Drive (curl/wget fails because of the security notice).

gdown Download a large file from Google Drive. Description Download a large file from Google Drive. If you use curl/wget, it fails with a large file b

Kentaro Wada 2.7k Jan 09, 2023
Script that allows to download portable installers of different versions Adobe software for macOS

What is this and for what This is a script that allows you to download portable installers of programs from Adobe for macOS with different versions. T

715 Jan 06, 2023
A toolkit to automatically crawl the paper list and download paper pdfs of ACL Ahthology.

ACL-Anthology-Crawler A toolkit to automatically crawl the paper list and download paper pdfs of ACL Anthology

Ray GG 9 Oct 09, 2022
YTPY Youtube Downloader Made by: Ferreira, Amarau and Rodric

YTPY Youtube Downloader Made by: Ferreira, Amarau and Rodric How to Install on Linux: sudo apt install python3 python3-pip git pip install pytube git

7 Nov 24, 2022
YouTube to MP3 or 4, you get to choose...

UTubeToMP YouTube to MP3 or 4, you get to choose... If you don't wanna git clone andor dont wanna install python. Here: Repl.it Instructions: Pretty s

1 Jan 29, 2022
Automatically download multiple papers by keywords in CVPR

Automatically download multiple papers by keywords in CVPR

46 Jun 08, 2022
Application Updater using an download link

Application-Updater This tool will update your app using an storage link

ExtremeDev 1 Dec 20, 2021
Smule Video Downloader

Smule Video Downloader Using Requests,Re & Urllib Installation - apt install git (for vps) or pkg install git (for termux)

Hansen Gianto 4 Aug 31, 2022
Youtube videos and channels scraper python wrapper!

YouTubeCrawle Wrapper for python Why This wrapper? This is wrapper is not limited to videos only it can scrape both channel and videos seperately ;D

Kei 16 Aug 08, 2022
A simple kemono.party downloader using python.

kemono-dl This is a simple kemono.party downloader. How to use Install python Download source code from releases and extract it Then install requireme

318 Dec 27, 2022
A bot to download songs from YouTube to telegram.

Song-Downloader-Bot A BOT TO DOWNLOAD SONGS FROM YOUTUBE. Mandatory variables API_ID - Get It From my.telegram.org API_HASH - Get It From my.telegram.

Ashik Muhammed 38 Dec 11, 2022
Music, Album and Playlist downloader for JioSaavn

jiosaavn-dl Music, Album and Playlist downloader for JioSaavn Features Downloads tracks, albums and playlists in maximum available quality (320kbps AA

bunny 19 Dec 12, 2022
Youtube playlist downloader with full metadata support

ytrake GUI tool to embed metadata for albums on Youtube with youtube-dl. Requires youtube-dl v2021.06.06. Post-processing Album metadata: Usage ytrake

28 Jul 12, 2022
Python script for downloading audio from YouTube songs/videos.

Python script for downloading audio from YouTube songs/videos. All you have to do is specify the path to your folder and then type song's/video's name and the sound will be downloaded into your folde

Mateusz Polis 0 Oct 05, 2022