Skip to main content

Personal downloader for Circle course lesson videos accessible from your own account.

Project description

Circle Course Downloader

Download videos from Circle courses you can access with your own account. Authentication happens only in the browser: the tool opens a dedicated Chromium profile, you log in manually, and that browser profile is reused for future downloads.

This tool doesn't bypass DRM, paywalls, captchas, 2FA, or access controls. Use it only for content you are authorized to download for personal offline viewing.

Install from PyPI

python -m pip install circle-course-downloader
python -m playwright install chromium

Install from source

Use this path when you cloned the repository locally.

python -m venv .venv
.\.venv\Scripts\python -m pip install .
.\.venv\Scripts\python -m playwright install chromium

For development and publishing tools, install requirements.txt after the package:

.\.venv\Scripts\python -m pip install -r requirements.txt

Download a course

circle-course-downloader download "https://your-circle-site.com/c/course-slug"

If you installed from source in a virtual environment, run:

.\.venv\Scripts\circle-course-downloader download "https://your-circle-site.com/c/course-slug"

What happens next

On the first run, a Chromium window opens. Log in to Circle in that browser, then return to the terminal and press Enter.

The tool stores the dedicated browser profile and an exported session file under:

.auth/session-browser-profile/
.auth/session.json

Then it opens the course in the same authenticated browser profile, discovers the lessons, extracts the video URLs, and downloads the videos into downloads/.

The downloader also writes a local manifest beside the downloaded videos:

downloads/manifest.json
downloads/manifest.csv

Generated manifests can contain signed media URLs, so don't commit them.

Download another course

Use the same command with another course URL. The saved session is reused automatically.

circle-course-downloader download "https://your-circle-site.com/c/another-course"

Reset login

Use --force-login to open the browser and create a fresh session.

circle-course-downloader download "https://your-circle-site.com/c/course-slug" --force-login

Optional flags

circle-course-downloader download "https://your-circle-site.com/c/course-slug" --output-dir ".\my-videos"
circle-course-downloader download "https://your-circle-site.com/c/course-slug" --session ".auth/my-site.json"
circle-course-downloader download "https://your-circle-site.com/c/course-slug" --dry-run
circle-course-downloader download "https://your-circle-site.com/c/course-slug" --headless

--headless only hides Chromium after a saved browser profile already exists. First login always opens a visible browser window, and the downloader keeps using that same browser profile after you press Enter.

Build and publish

Install the package and publishing tools:

python -m venv .venv
.\.venv\Scripts\python -m pip install .
.\.venv\Scripts\python -m pip install -r requirements.txt

Run checks:

.\.venv\Scripts\python -m pytest
.\.venv\Scripts\python -m build
.\.venv\Scripts\python -m twine check dist/*

Publish to TestPyPI first:

.\.venv\Scripts\python -m twine upload --repository testpypi dist/*

After validating the TestPyPI package, publish to PyPI:

.\.venv\Scripts\python -m twine upload dist/*

Security notes

Never commit .auth/, downloaded videos, or generated manifests.

The tool doesn't read tokens or cookies from your default browser. It uses its own dedicated Chromium profile under .auth/.

Circle HLS URLs are usually signed and expire. Download soon after the tool discovers them.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

circle_course_downloader-0.1.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

circle_course_downloader-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file circle_course_downloader-0.1.0.tar.gz.

File metadata

  • Download URL: circle_course_downloader-0.1.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for circle_course_downloader-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d6dba60fb28a81e59bf0cc5262c370f81cc2f703070e09860150b349161a21da
MD5 e8527a28021dde5c2471b22b83fc52b5
BLAKE2b-256 77dca6cf2f06332068b449f0b69251c9a20eec0e2168a3af2787d775aa83d5be

See more details on using hashes here.

File details

Details for the file circle_course_downloader-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for circle_course_downloader-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d68df712d3d00eca2fea66423ef42e93161595a5f0d79cf52585ec52eee6e9ac
MD5 95256c79a595f25a88677524826b5c0b
BLAKE2b-256 0d110023733e1ce8fe85f4d5e0ab274e0aaf27a64b99313f1b76c6849f72878f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page