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 python scripts that downloads doujin from nhentai without having an account

nhentai-downloader a python scripts that downloads doujin from https://nhentai.net without having an account. Usage Needs Python 3^ Linux pip3 install

Earl Sabalo 4 Jun 13, 2022
A cross platform front-end GUI of the popular youtube-dl written in wxPython.

youtube-dlG A cross platform front-end GUI of the popular youtube-dl media downloader written in wxPython. Supported sites Screenshots Requirements Py

8.7k Dec 31, 2022
命令行版本的HLS/DASH流下载器,支持标准AES-128-CBC解密

XstreamDL-CLI 基于python 3.7.4+的,命令行版本的,HLS/DASH流下载器,支持标准AES-128-CBC解密 使用 首先安装必要的库

xhlove 239 Dec 31, 2022
Jocomol 16 Dec 12, 2022
YoutubeDownloader - Download any public Playlist from Youtube

YoutubeDownloader Download any public Youtube Channel / Playlist Features Bulk d

17 Nov 12, 2022
Tool to get Canvas cover videos from Spotify tracks.

Spotify Canvas Downloader Tool to get Canvas cover videos from Spotify tracks. ✨ Try it out Building Clone the repository git clone https://github.com

Gabriel 35 Dec 28, 2022
Will load an SRC page, logged in with Firefox's cookies imported, and delete all comments from every run

SRCCommentsAutoDeleter Will load an SRC page, logged in with a support browser's cookies, and delete all comments from every run Config is all done in

3 Oct 29, 2021
FireDM is a python open source (Internet Download Manager) with multi-connections, high speed engine, it downloads general files and videos from youtube and tons of other streaming websites .

python open source (Internet Download Manager) with multi-connections, high speed engine, based on python, LibCurl, and youtube_dl https://github.com/firedm/FireDM

1.6k Apr 12, 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
Noto fonts go universal! Download Noto fonts combined to suit your region

noto-cjk Noto CJK fonts Noto Serif CJK update was released on 25 October 2021. We moved the release history and other notes into both Sans and Serif s

Google Fonts 2k Jan 02, 2023
code for paper"3D reconstruction method based on a generative model in continuous latent space"

PyTorch implementation of 3D-VGT(3D-VAE-GAN-Transformer) This repository contains the source code for the paper "3D reconstruction method based on a g

Tong 5 Apr 25, 2022
Download all posts and comments in a subreddit

subreddit downloader This subreddit downloader downloads all posts and comments in a subreddit For a tutorial to use this program please follow this m

Guneet 6 Dec 16, 2022
Arxiv2Kindle is a simple script written in python that converts LaTeX source downloaded from Arxiv and recompiles it to better fit a Kindle or other similar reading devices.

Arxiv2Kindle is a simple script written in python that converts LaTeX source downloaded from Arxiv and recompiles it to better fit a read

Soumik Rakshit 8 Jul 09, 2022
Automatically download and crop key information from the arxiv daily paper. (cpu version)

Automatically download and crop key information from the arxiv daily paper. (cpu version)

HeoLis 4 Jul 30, 2022
Download all games from a public Itch.io Game Jam

Itch Jam Downloader Downloads all games from a public Itch.io Game Jam. What you'll need: Python 3.8+ pip install -r requirements.txt For site mirrori

Dragoon Aethis 19 Dec 07, 2022
Terminal based YouTube player and downloader

termitube NOTE: THIS REPOSITORY IS A FORK OF mps-youtube as mps-youtube has been unmaintained for almost a year now. Features Search and play audio/vi

Otis/Jacob Root 27 Dec 23, 2022
Youtube Downloader GUI

Python Youtube Downloader GUI This is a GUI application that allows you to download videos from Youtube. Features Download videos from Youtube in MP3

Daniel Carrillo 2 Dec 14, 2021
Make YouTube videos tasks in Todoist faster and time efficient!

Youtubist Basically fork of yt-dlp python module to my needs. You can paste playlist or channel link on the YouTube. It will automatically format to s

Konrad Konieczny 1 Dec 04, 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
Python software to download videos from Tiktok without rights

download-video-tiktok Python software to download videos from Tiktok without rights to install pip install requests Follow us telegram : https://t.me

muntazir halim 1 Oct 28, 2021