Inspiration

I am going to graduate soon and am afraid of losing access to Panopto!

What it does

UW Panopto Downloader lets you download, convert, and transcribe UW Panopto lectures. It features:

  • Batch downloading of videos from course pages
  • Audio conversion for efficient storage and mobile listening
  • Timestamped transcription using Google Cloud Speech-to-Text for arbitrarily large files, with no intermediate cloud storage
  • Searchable database of lecture content with timestamp retrieval and link generation to stream from panopto starting from said timestamp
  • Metadata management with tagging and notes for organization in a local SQLite DB

How we built it

We developed the tool using:

  • Python
  • Selenium and Beautiful Soup for browser automation to navigate authenticated Panopto pages and scrape links
  • FFmpeg for conversion from mp4 to mp3
  • Your choice of local transcription using OpenAI Whisper, or remote using Google Cloud Speech-to-Text API
  • PyDub to split on silence for chunked inference
  • Local SQLite DB for all metadata and search functionality
  • A clean CLI interface using Typer and Rich

Challenges we ran into

  • No public API for Panopto, needed to scrape!
  • Chunking audio for Google Cloud Speech-to-Text to stay within API limits without needing intermediate GCP storage upload
  • GC STT only supports mono audio, needed to convert on the fly during transcription so we could preserve stereo version for playback

Accomplishments that we're proud of

It all works! You can now search all your lectures and get links to stream directly from the results of your query

What we learned

How easy it is to use GCP

What's next for UW Panopto Downloader

  • Scatter Gather transcriptions from GCP API to speed up transcriptions for large files
  • Improve search retrieval by using vector embeddings for text and query
  • Improve search retrieval by using recursive summarization and a language model for ranking/retrieval
  • Perhaps use entirely cloud storage so users don't need to use local disk for large video/audio files

Built With

Share this project:

Updates