Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📺 Panda Video Downloader

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.

Platform Shell License


📋 Table of Contents


✨ Features

  • 🎬 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

🔧 Prerequisites

Before using this toolkit, ensure you have the following installed:

Required Tools

Tool Purpose Installation
yt-dlp Video downloader See below
FFmpeg Video processing See below

Installation Commands

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 ffmpeg

Linux (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-dlp

Linux (Arch):

sudo pacman -S yt-dlp ffmpeg

Windows (using Chocolatey):

choco install yt-dlp ffmpeg

Verify Installation

# Check yt-dlp
yt-dlp --version

# Check FFmpeg
ffmpeg -version

📥 Installation

  1. Clone the repository:
git clone https://github.com/YOUR_USERNAME/panda-video-downloader.git
cd panda-video-downloader
  1. Make scripts executable:
chmod +x download_video.sh batch_download.sh
  1. Configure your platform (edit the REFERER variable in scripts):
# Open the script and change the REFERER to match your course platform
nano download_video.sh

🚀 Quick Start

Download a Single Video

./download_video.sh "VIDEO_URL" "My Video Name"

Download Multiple Videos

  1. 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
  1. Run the batch downloader:
./batch_download.sh

🎬 Usage

Single Video Download

Use download_video.sh for downloading individual videos:

./download_video.sh "VIDEO_URL" "Video Name"

Supported URL Formats:

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"

Options:

Parameter Description Required
VIDEO_URL The video URL (any supported format) Yes
Video Name Name for the output file No (auto-generated if omitted)

Batch Download

Download multiple videos from a list file:

  1. 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
  1. Run the batch script:
./batch_download.sh
  1. 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
========================================

🔍 Finding Video URLs

Step-by-Step Guide

  1. Open your browser and navigate to the course video page
  2. Open Developer Tools:
    • Windows/Linux: F12 or Ctrl+Shift+I
    • macOS: Cmd+Option+I
  3. Go to the Network tab
  4. Apply filters to find video-related requests
  5. Play the video (important - the requests appear during playback)
  6. Find and copy the URL

Filter Methods

Method 1: Filter by Keyword

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

Method 2: Filter by Type

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)

Method 3: Search in Page Source

  1. Right-click on the page → View Page Source
  2. Press Ctrl+F / Cmd+F
  3. Search for:
    • player-vz
    • embed/?v=
    • pandavideo
    • m3u8

Visual Guide

┌─────────────────────────────────────────────────────────────┐
│ 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
└─────────────────────────────────────────────────────────────┘

🔗 URL Patterns

Panda Video URL Formats

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

URL Conversion Examples

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

⚙️ Configuration

Setting Your Platform Referer

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/

Customizing Output Directory

By default, videos are saved to the videos/ folder in the script directory. To change:

OUTPUT_DIR="$SCRIPT_DIR/videos"  # Change this path

❗ Troubleshooting

Common Issues and Solutions

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

Checking Downloaded Videos

Verify your video has both audio and video streams:

ffprobe -hide_banner "videos/My Video.mp4" 2>&1 | grep Stream

Expected output:

Stream #0:0: Video: h264 (Main), yuv420p, 1920x1080, 30 fps
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo

DRM-Protected Content

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.

Update yt-dlp

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  # pip

❓ FAQ

Q: 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 -f flag.

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.


⚠️ Legal Disclaimer

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.


🤝 Contributing

Contributions are welcome! Here's how you can help:

  1. Report bugs - Open an issue with details
  2. Suggest features - Open an issue with your idea
  3. Submit PRs - Fork, improve, and submit a pull request

Development

# Clone the repo
git clone https://github.com/YOUR_USERNAME/panda-video-downloader.git

# Make your changes
# Test thoroughly
# Submit a PR

📁 Project Structure

panda-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)

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • 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!

About

A complete toolkit for downloading videos from Panda Video platforms (MemberKit, Hotmart, etc.) for offline viewing

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages