Skip to main content

A Python library for downloading videos from UW Panopto

Project description

UW Panopto Downloader

A Python library and CLI tool for downloading and processing videos from University of Washington's Panopto. Use at your own risk!

License: MIT Python Version

Overview

Tired of taking classes and forgetting everything the next quarter? Tired of having to rewatch the same lecture over and over again only for a few key points? Scared of graduating and losing access to all this institutional knowledge? UW Panopto Downloader might be just what you're looking for!

Key Features

  • Video Downloads: Log in to Panopto and batch download videos from course pages
  • Audio Conversion: Convert videos to audio format for efficient storage and mobile listening
  • Transcription: Generate accurate transcripts with timestamps either locally using OpenAI's Whisper or Google Cloud Speech-to-Text
  • Metadata Management: Organize videos with tags, notes, and searchable transcripts
  • Store Locally: Keep all your videos, audio, and transcripts in a structured format on your local machine with a SQLite database for metadata indexing

Installation

pip install uw-panopto-downloader

Requirements

  • Python 3.12 (exactly 3.12 if you want any hope of using the Whisper model)
  • FFmpeg installed on your system
  • Google Cloud credentials (for transcription features)

Quick Start

Downloading Videos

uwpd download --url "https://uw.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=..."

Converting Videos to Audio

uwpd convert path/to/videos

Transcribing Audio with Google Cloud

uwpd cloud-transcribe path/to/audio.mp3 --language en-US

Transcribing Audio with Local Whisper Model

uwpd transcribe path/to/audio.mp3

Searching Transcripts

uwpd db search "neural networks" --transcript

Command Reference

The CLI is organized into the following main commands:

Core Commands

Command Description
download Download videos from UW Panopto
convert Convert video files to audio format
cloud-transcribe Transcribe audio files using Google Cloud Speech-to-Text
transcribe Transcribe audio files using local Whisper model
config View or update configuration
version Show the current version

Database Commands

Command Description
db list List videos in the database
db search Search videos in the database
db info Display detailed information about a video
db tag Add or remove a tag for a video
db tags List all available tags with usage count
db delete Delete a video from the database
db note Add or update a note for a video
db stats Show database statistics
db migrate Migrate existing files to the database

Detailed Usage

Downloading Videos

uwpd download --url "https://uw.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=..." \
              --output ~/Videos/CSE142 \
              --workers 3 \
              --headless

This command will:

  1. Open a browser window for you to log in
  2. After login, automatically extract available videos
  3. Prompt confirmation before downloading
  4. Use 3 concurrent downloads for speed
  5. Store metadata in the local database

Google Cloud Speech-to-Text Transcription

uwpd cloud-transcribe ~/Videos/lecture.mp3 \
                     --output ~/Transcripts/lecture.txt \
                     --language en-US \
                     --credentials path/to/google-credentials.json

Features:

  • Automatically splits long audio into chunks separated by silence for better accuracy
  • Produces timestamped transcripts for easy reference
  • Stores transcripts in searchable database

Configuration

Configuration is stored in ~/.uw-panopto-downloader/config.json. You can update it using:

uwpd config --download-dir ~/Videos \
            --max-workers 4 \
            --headless True \
            --audio-bitrate 192k

Storage Management

The tool uses a structured storage approach:

  • Content is stored in ~/.uw-panopto-downloader/content/
  • Subdirectories for videos, audio, and transcripts
  • Symlinks created to original locations when desired
  • SQLite database tracks metadata at ~/.uw-panopto-downloader/metadata.db

Google Cloud Integration

This project leverages Google Cloud Speech-to-Text for high-quality transcription.

For optimal transcription quality, the tool:

  1. Automatically converts audio to mono
  2. Splits audio at natural silence points
  3. Uses word-level time offsets for timestamps
  4. Assembles chunks into a cohesive transcript

Development

To contribute to this project:

git clone https://github.com/elimelt/uw-panopto-downloader.git
cd uw-panopto-downloader
pip install -e ".[dev]"

Bumping Version

Use the provided script to bump the version before pushing changes/merging PRs (only for maintainers):

./bump-version.sh patch  # or minor or major

License

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

Acknowledgments

  • Created by Elijah Melton (elimelt@uw.edu)
  • Submitted for SWECCathon 2025!

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

uw_panopto_downloader-1.1.7.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

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

uw_panopto_downloader-1.1.7-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

File details

Details for the file uw_panopto_downloader-1.1.7.tar.gz.

File metadata

  • Download URL: uw_panopto_downloader-1.1.7.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for uw_panopto_downloader-1.1.7.tar.gz
Algorithm Hash digest
SHA256 b764051086db8f10c6957bc1b5cf755c0413a7612a0cf413035e85c4d660cf5e
MD5 bc9bb93b404171565b974efe78a1faff
BLAKE2b-256 c7a15aee4b8fa8866cd33c286a73bcd3de1a3244bbbd79d66317c267a56328b2

See more details on using hashes here.

File details

Details for the file uw_panopto_downloader-1.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for uw_panopto_downloader-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ee6781e6e13ed205b9827d62e641fd781f93823adb71dfd27fe006f1552efc82
MD5 b16851f5bd2d6b9b195dbab7385ad389
BLAKE2b-256 b11532ffb99b21f38a4a9b5d3e4070d7c5a1265a77cb13f54988e3f9815b429b

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