{"id":13472578,"url":"https://github.com/r0oth3x49/udemy-dl","last_synced_at":"2025-09-27T07:31:37.996Z","repository":{"id":37925481,"uuid":"89959156","full_name":"r0oth3x49/udemy-dl","owner":"r0oth3x49","description":"A cross-platform python based utility to download courses from udemy for personal offline use.","archived":true,"fork":false,"pushed_at":"2021-06-06T10:16:29.000Z","size":324,"stargazers_count":4846,"open_issues_count":1,"forks_count":1193,"subscribers_count":167,"default_branch":"master","last_synced_at":"2024-09-26T22:04:22.640Z","etag":null,"topics":["cross-platform","download-subtitles","downloader","linux","macos","python","skip-captions","udemy","udemy-dl","vtt-to-srt","windows"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r0oth3x49.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"r0oth3x49","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-05-01T20:14:27.000Z","updated_at":"2024-09-24T14:42:23.000Z","dependencies_parsed_at":"2022-07-16T23:46:05.748Z","dependency_job_id":null,"html_url":"https://github.com/r0oth3x49/udemy-dl","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0oth3x49%2Fudemy-dl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0oth3x49%2Fudemy-dl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0oth3x49%2Fudemy-dl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r0oth3x49%2Fudemy-dl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r0oth3x49","download_url":"https://codeload.github.com/r0oth3x49/udemy-dl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234410191,"owners_count":18828154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","download-subtitles","downloader","linux","macos","python","skip-captions","udemy","udemy-dl","vtt-to-srt","windows"],"created_at":"2024-07-31T16:00:55.880Z","updated_at":"2025-09-27T07:31:37.555Z","avatar_url":"https://github.com/r0oth3x49.png","language":"Python","funding_links":["https://github.com/sponsors/r0oth3x49"],"categories":["Python","HarmonyOS","Uncategorized","Autres Ressources"],"sub_categories":["Windows Manager","Uncategorized","Liste de ressources developpement web"],"readme":"[![GitHub release](https://img.shields.io/badge/release-v1.1-brightgreen?style=flat-square)](https://github.com/r0oth3x49/udemy-dl/releases/tag/v1.0)\n[![GitHub stars](https://img.shields.io/github/stars/r0oth3x49/udemy-dl.svg?style=flat-square)](https://github.com/r0oth3x49/udemy-dl/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/r0oth3x49/udemy-dl.svg?style=flat-square)](https://github.com/r0oth3x49/udemy-dl/network)\n[![GitHub issues](https://img.shields.io/github/issues/r0oth3x49/udemy-dl.svg?style=flat-square)](https://github.com/r0oth3x49/udemy-dl/issues)\n[![GitHub license](https://img.shields.io/github/license/r0oth3x49/udemy-dl.svg?style=flat-square)](https://github.com/r0oth3x49/udemy-dl/blob/master/LICENSE)\n\n# udemy-dl\n**A cross-platform python based utility to download courses from udemy for personal offline use.**\n\n[![udemy-dl-v1-1.png](https://i.postimg.cc/X7QpzY8q/udemy-dl-v1-1.png)](https://postimg.cc/zVHzL54Y)\n\n### Warning\n\n**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.**\n\nIf you'd like to see the full context, then read [issue 627](https://github.com/r0oth3x49/udemy-dl/issues/627).\n\n\n### ***Important Note***:\n - Don't share your credentials until the issue is properly tagged/labeled with **account-needed**.\n - Owner of this repository is not responsible for any misuse if you share your credentials with strangers.\n\n## ***Requirements***\n\n- Python 3 only (`Now udemy-dl doesn't support python 2`)\n- Python `pip`\n- Python module `requests`\n- Python module `colorama`\n- Python module `unidecode`\n- Python module `six`\n- Python module `cloudscraper`\n- Python module `requests[security]` or `pyOpenSSL`\n- FFmpeg (to download hls based streams properly)\n\n## ***Module Installation***\n\n    pip install -r requirements.txt\n\n## ***HLS streams download requirements***\n- You would need FFmpeg to be installed and added to environment variable so that udemy-dl can access.\n- Download [FFmpeg from here](https://ffmpeg.org/download.html)\n- On ubuntu you can install it via `apt install ffmpeg`.\n- Add to environment variables then udemy-dl will be able to use it when downloading HLS streams.\n  \n## ***Tested on***\n\n- Windows 7/8/8.1/10\n- Ubuntu-LTS (tested with super user)\n\n## ***Features***\n- Added proper session management.\n- Resume capability for a course video.\n- Added proper logging errors and warnings.\n- Support multiple courses download from file.\n- Supports organization and individual udemy users both.\n- Added support to download hls based streams if available.\n- Added functionality to reset lecture number to start from 1.\n- Added switch for session caching on demand. (option: `--cache`)\n- Convert WebVTT to SRT but donot delete WebVTT. (option: `--keep-vtt`)\n- Skip fetching HLS streams, This will make the fetching fast. (option: `--skip-hls`)\n- List down course contents and video resolution, suggest the best resolution (option: `--info`).\n- Download/skip all available subtitles for a video (options: `--sub-only, --skip-sub`).\n- Download/skip all available assets for a video (options: `--assets-only, --skip-assets`).\n- Download specific chapter in a course (option: `-c / --chapter`).\n- Download specific lecture in a chapter (option: `-l / --lecture`).\n- Download specific subtitle for a lecture (option: `-s / --sub-lang`).\n- Download chapter(s) by providing range in a course (option: `--chapter-start, --chapter-end`).\n- Download lecture(s) by providing range in a chapter (option: `--lecture-start, --lecture-end`).\n- Download lecture(s) in requested resolution (option: `-q / --quality`).\n- Download course to user requested path (option: `-o / --output`).\n- Authentication using cookies (option: `-k / --cookies`).\n\n### Before creating an issue, please do the following:\n\n 1. **Use the GitHub issue search** \u0026mdash; check if the issue is already reported.\n 2. **Check if the issue is already fixed** \u0026mdash; try to reproduce it using the latest `master` in the repository.\n 3. Make sure, that information you are about to report is related to this repository \n   and not the one available on ***Python's repository, PyPi***, Because this repository cannot be downloaded/installed via pip command.\n 4. Follow issue reporting template properly otherwise the issue will be closed.\n\n\n## ***How to login with cookie***\n\nThe `cookies.txt` file should have the following simple format, eg:\n\n```ini\naccess_token=JKU9QNs2IQDBKoYKvOBclSPXN97baf32o1Jo2L9vX\n```\n\n### Finding your access token value\n\n - ***Firefox*** users : [guide by @01ttouch](https://github.com/r0oth3x49/udemy-dl/issues/389#issuecomment-491903900)\n - ***Chrome*** users : [guide by @01ttouch](https://github.com/r0oth3x49/udemy-dl/issues/389#issuecomment-492569372)\n\n \n## ***Download udemy-dl***\n\nYou can download the latest version of udemy-dl by cloning the GitHub repository.\n\n    git clone https://github.com/r0oth3x49/udemy-dl.git\n\n## ***Usage***\n\n***Download a course***\n\n    python udemy-dl.py COURSE_URL\n\n***Download a courses from file***\n\n    python udemy-dl.py FILE-CONTAINING-COURSE-URLs\n  \n***Download course with specific resolution***\n\n    python udemy-dl.py COURSE_URL -q 720\n  \n***Download course to a specific location***\n\n    python udemy-dl.py COURSE_URL -o \"/path/to/directory/\"\n  \n***Download course with specific resolution to a specific location***\n\n    python udemy-dl.py COURSE_URL -q 720 -o \"/path/to/directory/\"\n\n***Download specific chapter from a course***\n\n    python udemy-dl.py COURSE_URL -c NUMBER\n\n***Download specific lecture from a chapter***\n\n    python udemy-dl.py COURSE_URL -c NUMBER -l NUMBER\n\n***Download lecture(s) range from a specific chapter***\n\n    python udemy-dl.py COURSE_URL -c NUMBER --lecture-start NUMBER --lecture-end NUMBER\n\n***Download chapter(s) range from a course***\n\n    python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER\n\n***Download specific lecture from chapter(s) range***\n\n    python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER --lecture NUMBER\n\n***Download lecture(s) range from chapter(s) range***\n\n    python udemy-dl.py COURSE_URL --chapter-start NUMBER --chapter-end NUMBER --lecture-start NUMBER --lecture-end NUMBER\n\n***List down specific chapter from a course***\n\n    python udemy-dl.py COURSE_URL -c NUMBER --info\n\n***List down specific lecture from a chapter***\n\n    python udemy-dl.py COURSE_URL -c NUMBER -l NUMBER --info\n\n***Download specific subtite by using language code such as (en, es) if lang switch is not specified then default will be all subtitles***\n\n    python udemy-dl.py COURSE_URL --sub-lang en\n\n\n## **Advanced Usage**\n\n\u003cpre\u003e\u003ccode\u003e\nAuthor: Nasir khan (\u003ca href=\"http://r0oth3x49.herokuapp.com/\"\u003er0ot h3x49\u003c/a\u003e)\n\nusage: udemy-dl.py [-h] [-v] [-u] [-p] [-k] [-o] [-q] [-c] [-l] [-s] [--chapter-start] [--chapter-end] [--lecture-start] [--lecture-end] [--info] [--cache]\n                   [--keep-vtt] [--sub-only] [--skip-sub] [--skip-hls] [--assets-only] [--skip-assets]\n                   course\n\nA cross-platform python based utility to download courses from udemy for personal offline use.\n\npositional arguments:\n  course            Udemy course.\n\nGeneral:\n  -h, --help        Shows the help.\n  -v, --version     Shows the version.\n\nAuthentication:\n  -u , --username   Username in udemy.\n  -p , --password   Password of your account.\n  -k , --cookies    Cookies to authenticate with.\n\nAdvance:\n  -o , --output     Download to specific directory.\n  -q , --quality    Download specific video quality.\n  -c , --chapter    Download specific chapter from course.\n  -l , --lecture    Download specific lecture from chapter(s).\n  -s , --sub-lang   Download specific subtitle/caption (e.g:- en).\n  --chapter-start   Download from specific position within course.\n  --chapter-end     Download till specific position within course.\n  --lecture-start   Download from specific position within chapter(s).\n  --lecture-end     Download till specific position within chapter(s).\n\nOthers:\n  --info            List all lectures with available resolution.\n  --cache           Cache your session to avoid providing again.\n  --keep-vtt        Keep WebVTT caption(s).\n  --sub-only        Download captions/subtitle only.\n  --skip-sub        Download course but skip captions/subtitle.\n  --skip-hls        Download course but skip hls streams. (fast fetching).\n  --assets-only     Download asset(s) only.\n  --skip-assets     Download course but skip asset(s).\n\nExample:\n  python udemy-dl.py  COURSE_URL\n  python udemy-dl.py  COURSE_URL -k cookies.txt\n  python udemy-dl.py -u user@domain.com -p p4ssw0rd COURSE_URL\n\u003c/code\u003e\u003c/pre\u003e\n\n\n\n## ***TODO***\n - Add support to download course on a flaky connection.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr0oth3x49%2Fudemy-dl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr0oth3x49%2Fudemy-dl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr0oth3x49%2Fudemy-dl/lists"}