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 thesalah1212@thesalah1212-pc:~/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"

    [xd003@xd003 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
this is udemy course downloader, before a start you know how to get access token.

udemy_downloader this is udemy course downloader, before a start you know how to get access token. To get the access_token on Google Chrome (once on U

OkUgur 18 Dec 4, 2022
Python/Selenium script to scrape data about university courses

university-courses Python/Selenium script to scrape data about university courses. Script first extracts URLs of each courses homepage, then trawls ea

Sam Brown 1 Feb 2, 2022
ImageScraper is a cross-platform tool for downloading a specified count from xkcd, Astronomy Picture of the Day and Existential Comics

ImageScraper The ImageScraper is a cross-platform tool for downloading a specified count from xkcd, Astronomy Picture of the Day and Existential Comic

1amnobody 1 Jan 25, 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

null 8.7k Dec 31, 2022
A tool to download program information from Bugcrowd, for use by researchers to compare programs they are eligible to participate in

Description bcstats is a tool which allows Bugcrowd researchers to download information about all accessible programs (public and private) into a sing

null 19 Oct 13, 2022
Ripurei is a free-to-use osu! replay downloader, that can be configured to download from any osu! server.

Ripurei Ripurei is a fully functional osu! replay downloader, fully capable of downloading from almost any osu! server. Functionality Timeline ✔️ Able

Thomas 0 Feb 11, 2022
This is a python based web scraping bot for windows to download all ACCEPTED submissions of any user on Codeforces

CODEFORCES DOWNLOADER This is a python based web scraping bot for windows to download all ACCEPTED submissions of any user on Codeforces Requirements

Mohak 6 Dec 29, 2022
Python based Telegram bot. Search and download YouTube video or audio.

Python-Telegram-Youtube-Media-Bot Python based Telegram bot. Search and download YouTube video or audio. Just change settings.py and start TelegramBot

Ahmet Bohur 2 Oct 2, 2022
📼Command line tool based on youtube-dl to easily download selected channels from your subscriptions.

youtube-cdl Command line tool based on youtube-dl to easily download selected channels from your subscriptions. This tool is very handy if you want to

Anatoly 64 Dec 25, 2022
Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio.

YouTube-Downloader Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio. G

Manav Grover 2 Dec 27, 2021
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.

A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.

pytube 7.9k Jan 2, 2023
Utility for downloading works from AO3 (Archive Of Our Own)

ao3d video preview A small graphical utility for batch downloading works from AO3 (Archive Of Our Own) Features Batch downloading works to supported f

flux 24 Dec 9, 2022
Utility for downloading works from AO3 (Archive Of Our Own)

froyo A small graphical application for batch downloading works from Archive Of Our Own (AO3). Curate a fic repo of your own today :) Features Batch d

flux 24 Dec 9, 2022
A tool written in Python to download all Snapmaps content from a specific location.

snapmap-archiver A tool written in Python to download all Snapmaps content from a specific location.

null 46 Dec 9, 2022
The free and open-source Download Manager written in pure Python

The free and open-source Download Manager written in pure Python

pyLoad 2.7k Dec 31, 2022
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

null 1.6k Apr 12, 2022
Python library to download bulk of images from Bing.com

Python library to download bulk of images form Bing.com. This package uses async url, which makes it very fast while downloading.

Guru Prasad Singh 105 Dec 14, 2022
Python script designed to search and fetch direct download links from nxbrew.com

SwitchGamesDownloader Only for windows nxbrew.com is a website, accessible only using a proxy, where the majority of games for the Nintendo Switch are

Backend 91 Dec 28, 2022