## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5 ) ## ----setup-------------------------------------------------------------------- library(engager) library(dplyr) library(ggplot2) ## ----eval = FALSE------------------------------------------------------------- # devtools::install_github("revgizmo/engager") ## ----quick-start-------------------------------------------------------------- transcript_file <- system.file( "extdata/test_transcripts/intro_statistics_week1.vtt", package = "engager" ) results <- basic_transcript_analysis( transcript_file, output_dir = tempfile("engager-getting-started-") ) head(results$analysis) print(results$plots) ## ----composable-workflow------------------------------------------------------ transcript <- load_zoom_transcript(transcript_file) processed <- process_zoom_transcript( transcript_df = transcript, consolidate_comments = TRUE, add_dead_air = TRUE ) summary_metrics <- summarize_transcript_metrics( transcript_df = processed, names_exclude = c("dead_air") ) # View the results (recognized structured identifiers are masked by default) head(summary_metrics) # Run a technical privacy review privacy_result <- privacy_audit(summary_metrics) cat( "Privacy review:", ifelse(nrow(privacy_result) == 0, "No recognized issues flagged", "Review flags returned"), "\n" ) ## ----name-matching-example---------------------------------------------------- roster <- tibble::tibble( preferred_name = c("Alice Smith", "Bob Jones"), student_id = c("S1", "S2"), aliases = c("A Smith; Alice S", NA_character_) ) transcripts <- tibble::tibble( speaker = c("alice smith", "carol"), timestamp = as.POSIXct( c("2025-01-01 10:00:00", "2025-01-01 10:01:00"), tz = "UTC" ) ) matching <- match_names_workflow( transcripts, roster, options = list(match_strategy = "exact") ) matching matching$unresolved