This script is a simple way to download a full course from Domestika with advanced features including parallel downloads, optional H.265 transcoding, and robust error handling.
Warning You need to own the course you want to download. So you either have to have bought it or got it for "free" with your premium account.
Once you downloaded the Project, open the "index.js" file.
You will find the following configuration variables:
const course_urls = ['YOUR_COURSE_URLs_HERE', 'YOUR_COURSE_URLs_HERE'];
const subtitle_lang = 'en';
const transcode_to_hevc = false;
const use_nvenc = false;
const max_concurrent_processes = 3;
const machine_os = '';
const cookies = [/* ... */];
const _credentials_ = 'YOUR_CREDENTIALS_HERE';-
course_urls: Array of course URLs to download. Each URL should point to the course content page (ending with "/course"). Example:https://www.domestika.org/en/courses/3086-creating-animated-stories-with-after-effects/courseIMPORTANT: You must be on the "content" page. You know you are on the right site when the URL ends with "/course".
-
subtitle_lang: Language code for subtitles (e.g., "en", "es"). Ensure the language is available for the course before setting. -
transcode_to_hevc: Set totrueto enable automatic transcoding to H.265/HEVC after download if needed. This reduces file size while maintaining quality. Set tofalseto keep original format. -
use_nvenc: Only relevant iftranscode_to_hevcistrue.true: Use NVIDIA GPU hardware acceleration (requires NVIDIA GPU with NVENC support)false: Use CPU-based encoding (libx265)
-
max_concurrent_processes: Number of downloads/transcodes to run in parallel (recommended: 2-4). Higher values speed up the process but consume more resources. -
machine_os: Operating system identifier:const machine_os = "win"; // For Windows const machine_os = "mac"; // For MacOS/Linux
To get the _domestika_session cookie and _credentials_:
- Install the Cookie-Editor Chrome extension
- Log into Domestika
- Open the Cookie-Editor extension
- Find "_domestika_session", click to open it, and copy the Value field into the
valuefield undercookiesin the script - Find "_credentials_", copy its value into the
_credentials_variable
This script requires the following tools to be installed:
-
N_m3u8DL-RE: Download from GitHub releases
- Get the latest version binary
- Scroll to the 'Assets' section
- Download the appropriate binary for your machine:
- Windows:
N_m3u8DL-RE.exe(arm64 or x64) - MacOS:
N_m3u8DL-RE(arm64 or x64) - Linux:
N_m3u8DL-RE(arm64 or x64)
- Windows:
- Extract and place the binary in the project root directory
- DO NOT rename the binary
-
ffmpeg: Required for video processing (codec detection and optional transcoding)
- Windows: Download from ffmpeg.org or use package managers like Winget/Chocolatey
- MacOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Debian/Ubuntu) or equivalent for your distribution - Ensure
ffmpegandffprobeare in your system PATH
-
Install Node.js dependencies:
npm i
-
Start the download:
npm run start
MacOS/Linux: You may encounter a permission error:
N_m3u8DL-RE: Permission deniedGrant execute permissions:
chmod +x N_m3u8DL-REAll courses will be downloaded to:
domestika_courses/{coursename}/{section}/{unit}/{video_files}
- Parallel Processing: Downloads and transcodes multiple videos simultaneously for faster completion
- Intelligent Transcoding: Automatically detects video codec and only transcodes when necessary
- H.265 Support: Optional transcoding to H.265/HEVC with GPU or CPU encoding
- Robust Error Handling: Continues processing remaining videos even if individual downloads fail
- Final Project Support: Automatically downloads the course's final project if available
- Subtitle Download: Automatically downloads subtitles in your preferred language
- Adjust
max_concurrent_processesbased on your system:- 2-4: Balanced for most systems
- Higher values: Faster on powerful machines with good internet
- Lower values: More stable on limited resources
- Enable
use_nvencif you have an NVIDIA GPU for significantly faster transcoding
Special thanks to @Cybasaint for helping with the project and giving me access to his domestika account for testing.