Skip to content

fshrr/thinkific-dl

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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages