saud-learning-services / panopto-video-analytics

Interface for getting viewing data from Panopto sessions
Apache License 2.0
3 stars 1 forks source link
panopto

Panopto Video Analytics

WIP Questions? Reach out to marko.prodanovic@sauder.ubc.ca or alison.myers@sauder.ubc.ca

An interface for getting viewing data from Panopto sessions.

Specify Panopto folders (by folder id) in courses.csv to add them to the database. Note that data will be collected for all videos in the specified folder and all subfolders.

There are two independent parts to this project:

project-architecture-diagram

Updating the Database

⚠️ To delete a folder from the /database folder, remove the folder itself and also its corresponding entry in ./raw_data_handler/state.csv

Outputting Chunked Data

Getting Started

create a .env in the project root folder

After cloning the repo create a .env that looks like the following (with your credentials instead of the placeholders)

See here for info about generating a client id and client secret

SERVER = ubc.ca.panopto.com

USERNAME = <panopto-admin-username>
PASSWORD = <panopto-admin-password>

CLIENT_ID = <panopto-api-client-id>
CLIENT_SECRET = <panopto-api-client-secret>

The username and password are used to authenticate with the SOAP API. The client id and secret are used for REST

Install dependencies using Anaconda

Ensure you have anaconda properly installed using the conda command

Install the environment using the environment.yml file (may take a few minutes)

Activate the environment

Fill in courses.csv and run the scripts

Output structure of /database

For each (course) panopto folder specified in courses.csv, database will have after running update_database.py:

.
├── <Folder Name>[<Folder ID>]
│   ├── sessions_overview.csv
│   └── viewing_activity.csv

Output structure of output[CHUNKED]

For each course in the database, output[CHUNKED] will contain the following after running output_chunked_data.py:

.
├── <Folder Name>[<Folder ID>]
│   ├── chunked_data.csv
│   └── sessions_overview.csv

What is "Chunked" Data

For each unique viewer, we calculate their total "coverage" of a video representing which parts of the video they're watched. We then divide the timeline up into 20 5% intervals we call "chunks" The chunked output describes viewership in terms of these chunks.

project-architecture-diagram

Tableau

Perform the following join with the data output by output_chunked_data.py:

join

Contributions

REST interface modified version of modules in: upload-python-sample Contributors (GitHub): Hiroshi Ohno, Zac Rumford Apache-2.0 License

SOAP interface modified version of: python-soap Contributors (GitHub): Typer Libey, Gregory Scott Bell, Mark Brewster Apache-2.0 License