A complete toolkit for downloading videos from platforms that use Panda Video as their hosting service (commonly used by MemberKit, Hotmart, and other course platforms). Save your purchased course videos for offline viewing.
- Features
- Prerequisites
- Installation
- Quick Start
- Usage
- Finding Video URLs
- URL Patterns
- Configuration
- Troubleshooting
- FAQ
- Legal Disclaimer
- Contributing
- 🎬 Single Video Download - Download individual videos with a simple command
- 📦 Batch Download - Download multiple videos from a list file
- 🔄 Auto URL Conversion - Automatically converts various URL formats to downloadable links
- 🎯 Smart Detection - Detects embed URLs, segment URLs, and playlist URLs
- 📊 Progress Tracking - Shows download progress and final statistics
- ⚡ Concurrent Downloads - Downloads video fragments in parallel for faster speeds
- 🛡️ Error Handling - Clear error messages and troubleshooting suggestions
Before using this toolkit, ensure you have the following installed:
| Tool | Purpose | Installation |
|---|---|---|
| yt-dlp | Video downloader | See below |
| FFmpeg | Video processing | See below |
macOS (using Homebrew):
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install required tools
brew install yt-dlp ffmpegLinux (Debian/Ubuntu):
sudo apt update
sudo apt install ffmpeg
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlpLinux (Arch):
sudo pacman -S yt-dlp ffmpegWindows (using Chocolatey):
choco install yt-dlp ffmpeg# Check yt-dlp
yt-dlp --version
# Check FFmpeg
ffmpeg -version- Clone the repository:
git clone https://github.com/YOUR_USERNAME/panda-video-downloader.git
cd panda-video-downloader- Make scripts executable:
chmod +x download_video.sh batch_download.sh- Configure your platform (edit the
REFERERvariable in scripts):
# Open the script and change the REFERER to match your course platform
nano download_video.sh./download_video.sh "VIDEO_URL" "My Video Name"- Add your videos to
video_list.txt:
https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID|Lesson 01 - Introduction
https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID|Lesson 02 - Getting Started
- Run the batch downloader:
./batch_download.shUse download_video.sh for downloading individual videos:
./download_video.sh "VIDEO_URL" "Video Name"Embed URL (easiest to find):
./download_video.sh "https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID" "Lesson 01"CDN Playlist URL:
./download_video.sh "https://cdn.pandavideo.com/vz-XXXXX/VIDEO-ID/playlist.m3u8" "Lesson 01"Segment URL (.ts files - auto-converted):
./download_video.sh "https://cdn.pandavideo.com/vz-XXXXX/VIDEO-ID/1080p/video12.ts" "Lesson 01"| Parameter | Description | Required |
|---|---|---|
VIDEO_URL |
The video URL (any supported format) | Yes |
Video Name |
Name for the output file | No (auto-generated if omitted) |
Download multiple videos from a list file:
- Create/Edit
video_list.txt:
# Lines starting with # are comments
# Format: URL|Video Name
https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID-1|Module 1 - Introduction
https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID-2|Module 1 - Getting Started
https://player-vz-XXXXX.tv.pandavideo.com.br/embed/?v=VIDEO-ID-3|Module 2 - Advanced Topics
- Run the batch script:
./batch_download.sh- Output:
========================================
Video Downloader - Batch Mode
========================================
Total videos to download: 3
[1/3] Downloading: Module 1 - Introduction
✅ Completed
[2/3] Downloading: Module 1 - Getting Started
✅ Completed
[3/3] Downloading: Module 2 - Advanced Topics
✅ Completed
========================================
Successful downloads: 3
Failed downloads: 0
========================================
- Open your browser and navigate to the course video page
- Open Developer Tools:
- Windows/Linux:
F12orCtrl+Shift+I - macOS:
Cmd+Option+I
- Windows/Linux:
- Go to the Network tab
- Apply filters to find video-related requests
- Play the video (important - the requests appear during playback)
- Find and copy the URL
Type these in the filter box:
| Filter | What It Finds | Success Rate |
|---|---|---|
m3u8 |
HLS playlist files | ⭐⭐⭐ Best |
panda |
All Panda Video requests | ⭐⭐⭐ Best |
embed |
Embedded player URLs | ⭐⭐ Good |
ts |
Video segments | ⭐⭐ Good |
playlist |
Playlist files | ⭐⭐ Good |
Click on the filter buttons in the Network tab:
| Type | Description |
|---|---|
| Media | Video and audio streams |
| XHR | API requests (may contain video info) |
| All | Everything (use with keyword filter) |
- Right-click on the page → View Page Source
- Press
Ctrl+F/Cmd+F - Search for:
player-vzembed/?v=pandavideom3u8
┌─────────────────────────────────────────────────────────────┐
│ Developer Tools │
├─────────────────────────────────────────────────────────────┤
│ Elements │ Console │ Network │ Sources │ ... │
├─────────────────────────────────────────────────────────────┤
│ Filter: [panda____________] [All ▼] [✓] Preserve log │
├─────────────────────────────────────────────────────────────┤
│ Name │ Status │ Type │ Size │
│ ───────────────────────────────── │ ────── │ ──── │ ─────── │
│ embed/?v=abc123-def456... │ 200 │ doc │ 15.2 KB │ ← Copy this URL
│ playlist.m3u8 │ 200 │ xhr │ 1.2 KB │ ← Or this one
│ 1080p/video0.ts │ 200 │ media│ 2.1 MB │ ← Or this one
└─────────────────────────────────────────────────────────────┘
Understanding URL patterns helps you construct download links:
| URL Type | Format | Example |
|---|---|---|
| Embed | https://player-vz-{ACCOUNT}.tv.pandavideo.com.br/embed/?v={VIDEO-ID} |
Easiest to find |
| CDN Playlist | https://cdn.pandavideo.com/vz-{ACCOUNT}/{VIDEO-ID}/playlist.m3u8 |
Direct download |
| Segment | https://cdn.pandavideo.com/vz-{ACCOUNT}/{VIDEO-ID}/1080p/video{N}.ts |
Auto-converted |
| Alternative CDN | https://b-vz-{ACCOUNT}.tv.pandavideo.com.br/{VIDEO-ID}/playlist.m3u8 |
Some platforms |
The scripts automatically convert URLs, but here's how it works:
From Embed URL:
Input: https://player-vz-398c1637-31d.tv.pandavideo.com.br/embed/?v=abc123-def456
└── ACCOUNT: 398c1637-31d ──┘ └─ VIDEO-ID ─┘
Output: https://cdn.pandavideo.com/vz-398c1637-31d/abc123-def456/playlist.m3u8
From Segment URL:
Input: https://cdn.pandavideo.com/vz-398c1637-31d/abc123-def456/1080p/video12.ts
└── Removed ──┘
Output: https://cdn.pandavideo.com/vz-398c1637-31d/abc123-def456/playlist.m3u8
The REFERER header tells the server where the request is coming from. Update this to match your course platform:
In download_video.sh and batch_download.sh:
REFERER="https://your-course-platform.memberkit.com.br/"Common Platform Patterns:
| Platform | Referer Format |
|---|---|
| MemberKit | https://your-course.memberkit.com.br/ |
| Hotmart | https://your-course.hotmart.com/ |
| Custom | https://your-platform-domain.com/ |
By default, videos are saved to the videos/ folder in the script directory. To change:
OUTPUT_DIR="$SCRIPT_DIR/videos" # Change this path| Problem | Cause | Solution |
|---|---|---|
| 403 Forbidden | Wrong referer | Update REFERER variable to match your course domain |
| 404 Not Found | Invalid URL | Try a different URL format (embed vs CDN) |
| No video streams | Wrong URL | Make sure you copied the complete URL |
| No audio | Encoding issue | The file likely has audio - try VLC player |
| Black video | DRM protection | Cannot be downloaded (see DRM section) |
| Slow download | Throttling | Add --limit-rate 10M to avoid detection |
Verify your video has both audio and video streams:
ffprobe -hide_banner "videos/My Video.mp4" 2>&1 | grep StreamExpected output:
Stream #0:0: Video: h264 (Main), yuv420p, 1920x1080, 30 fps
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo
Some videos have DRM (Digital Rights Management) protection. Signs of DRM:
- Error: "Encrypted content" or "Unable to decrypt"
- Downloaded file plays as black/glitchy video
- No download progress despite successful request
Note: DRM-protected content cannot be downloaded with this tool or any similar tool.
If you're having issues, try updating yt-dlp:
# macOS/Linux
yt-dlp -U
# Or reinstall
brew upgrade yt-dlp # macOS
pip install -U yt-dlp # pipQ: Is this legal?
This tool is for downloading content you have legitimately purchased for personal offline viewing. Always respect copyright laws and platform terms of service.
Q: Why do I need the referer?
The referer header proves to the CDN that the request comes from an authorized page. Without it, you'll get 403 errors.
Q: Can I download videos from any platform?
This tool works specifically with Panda Video hosting. Other platforms may use different video hosting services.
Q: What video quality is downloaded?
By default, yt-dlp downloads the best available quality. You can specify quality with the
-fflag.
Q: How do I download in lower quality?
Modify the yt-dlp command in the script to add
-f "bestvideo[height<=720]+bestaudio"for 720p.
This tool is intended for downloading content that you have legitimately purchased access to for personal offline viewing only.
- ✅ Download courses you've paid for
- ✅ Personal backup of purchased content
- ✅ Offline viewing for travel/convenience
- ❌ Sharing downloaded content
- ❌ Downloading content you don't own
- ❌ Commercial use of downloaded content
Always respect:
- Copyright laws in your jurisdiction
- Platform terms of service
- Content creators' rights
The authors are not responsible for any misuse of this tool.
Contributions are welcome! Here's how you can help:
- Report bugs - Open an issue with details
- Suggest features - Open an issue with your idea
- Submit PRs - Fork, improve, and submit a pull request
# Clone the repo
git clone https://github.com/YOUR_USERNAME/panda-video-downloader.git
# Make your changes
# Test thoroughly
# Submit a PRpanda-video-downloader/
├── README.md # This documentation
├── LICENSE # MIT License
├── .gitignore # Git ignore rules
├── download_video.sh # Single video downloader
├── batch_download.sh # Batch downloader
├── video_list.txt # Template for batch downloads
└── videos/ # Downloaded videos (gitignored)
This project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp - The amazing video downloader this tool is built on
- FFmpeg - The multimedia framework that makes video processing possible
Happy Learning! 📚
If this tool helped you, consider giving it a ⭐ on GitHub!