Skip to content

Repository files navigation

Thinkific Course Downloader

A Python CLI tool for downloading courses from Thinkific-powered websites. It includes a scraper to discover enrolled courses and a downloader to save videos and supplementary materials into organized folder structures.

Features

  • Course Scraping: Extract course names and URLs from your enrollment pages
  • Video Downloading: Download HLS streams and MP4 videos using yt-dlp
  • Supplementary Materials: Download PDFs, EPUBs, PowerPoint slides, and other files
  • Organized Structure: Content is saved in chapter-based folder hierarchies
  • Progress Tracking: Track download status (Not downloaded, Incomplete, Complete) via CSV
  • Interactive CLI: Polished terminal interface with Rich UI and interactive prompts
  • Resume Support: Skip already downloaded files and resume incomplete downloads

Installation

Install dependencies:

uv sync

Configuration

Authentication Cookies

Create a cookies.json file with your authentication cookies from the Thinkific site. You can extract these from your browser's developer tools after logging in.

cookies.json format:

[
    {
        "name": "visitor_id",
        "value": "YOUR_VISITOR_ID",
        "path": "/"
    },
    {
        "name": "__cf_bm",
        "value": "YOUR_CF_BM_VALUE",
        "path": "/"
    },
    {
        "name": "cf_clearance",
        "value": "YOUR_CF_CLEARANCE_VALUE",
        "path": "/"
    },
    {
        "name": "remember_user_token",
        "value": "YOUR_REMEMBER_TOKEN",
        "path": "/"
    },
    {
        "name": "_thinkific_session",
        "value": "YOUR_SESSION_VALUE",
        "path": "/"
    }
]

See cookies.json.example for a template.

Course List (CSV)

For batch downloads, create a courses.csv file:

name,url,progress
My First Course,https://www.example.com/courses/take/my-first-course,Not downloaded
Another Course,https://www.example.com/courses/take/another-course,Complete
Third Course,https://www.example.com/courses/take/third-course,Incomplete

The progress column accepts: Not downloaded, Incomplete, or Complete.

See courses.csv.example for a template.

Usage

Scraper

Discover and extract course URLs from your enrollment pages:

# Interactive mode
uv run scraper.py

# With options
uv run scraper.py --url https://www.example.com --pages 5 --cookies cookies.json --output courses.csv

Options:

Option Short Description Default
--url -u Base URL of the Thinkific site (prompted)
--pages -p Number of enrollment pages to scrape 10
--cookies -c Path to cookies.json cookies.json
--output -o Output CSV path courses.csv

Downloader

Interactive Menu

Run without arguments to use the interactive menu:

uv run downloader.py

Single Course Mode

Download a single course by URL:

# Interactive mode
uv run downloader.py single

# With options
uv run downloader.py single --url "https://www.example.com/courses/take/course-name" --name "Course Name" --cookies cookies.json --output courses/

Options:

Option Short Description Default
--url -u Course URL (prompted)
--name -n Course name (for folder) (prompted)
--cookies -c Path to cookies.json cookies.json
--output -o Output directory courses

Multi Course Mode

Download multiple courses from a CSV file:

# Interactive mode
uv run downloader.py multi

# With options
uv run downloader.py multi --csv courses.csv --cookies cookies.json --output courses/

Options:

Option Short Description Default
--csv -f Path to courses CSV courses.csv
--cookies -c Path to cookies.json cookies.json
--output -o Output directory courses

Output Structure

Downloaded content is organized as follows:

courses/
├── Course Name/
│   ├── 1. Chapter Title/
│   │   ├── Chapter Title_Lesson 1.mp4
│   │   ├── Chapter Title_Lesson 2.mp4
│   │   └── supplementary_material.pdf
│   ├── 2. Another Chapter/
│   │   ├── Another Chapter_Video Lesson.mp4
│   │   └── slides.pptx
│   └── 3. Final Chapter/
│       └── ...
└── Another Course/
    └── ...

License

This project is for personal/educational use. Respect the terms of service of any website you use this tool with.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages