Skip to content

Instantly share code, notes, and snippets.

@johankj
Last active March 26, 2025 09:39
Show Gist options
  • Save johankj/a05e2e18aee7a4a0e6c8b3789daaed96 to your computer and use it in GitHub Desktop.
Save johankj/a05e2e18aee7a4a0e6c8b3789daaed96 to your computer and use it in GitHub Desktop.
Zoom Easy Downloader snippet to download presentation view and main camera video
// Copy and paste this code into your Developer Tool Console on a webpage for viewing recorded Zoom sessions (zoom.us/rec/play).
// It will show two links: One for the presenter view and one for the slides.
// Alt-click on the link or right-click and "Save link as..." to download the video.
function bringBackDefault(event) {
event.returnValue = true;
(typeof event.stopPropagation === 'function') && event.stopPropagation();
(typeof event.cancelBubble === 'function') && event.cancelBubble();
}
function enableContextMenu() {
document.addEventListener("contextmenu", bringBackDefault, true);
}
enableContextMenu();
function create_banner() {
let text = `<div id="zoom-downloader-container" style="position:fixed;z-index:99999999999999999999;right:0px;bottom:0px;width:100%;padding:5px 20px 5px 20px;border:1px solid #2D8CFF;font-size:20px;background-color:#2D8CFF;font-weight:bold;text-align:center;"><a style="color:white !important" id="zoom-downloader-1" download="proposed_file_name"></a> | <a style="color:white !important" id="zoom-downloader-2" download="proposed_file_name"></a></div>`;
let div = document.getElementById("zoom-downloader-container")
if (div) {
div.innerHTML = text;
return
}
div = document.createElement("div");
div.innerHTML = text;
document.body.appendChild(div)
}
function find_video() {
let videosElements = document.getElementsByTagName("video");
let speakerView = "";
let presentationView = "";
for (let i = 0; i < videosElements.length; i++) {
if (videosElements[i].src.includes("_Recording_avo_")) {
speakerView = videosElements[i].src;
}
if (videosElements[i].src.includes("_Recording_as_")) {
presentationView = videosElements[i].src;
}
}
return [speakerView, presentationView]
}
function create_links() {
create_banner();
let videos = find_video();
let speakerView = videos[0];
let presentationView = videos[1];
let speakerViewLink = document.getElementById("zoom-downloader-1");
let presentationViewLink = document.getElementById("zoom-downloader-2");
speakerViewLink.href = speakerView;
speakerViewLink.innerText = speakerView ? "Download Speaker View" : "";
presentationViewLink.href = presentationView;
presentationViewLink.innerText = presentationView ? "Download Presentation View" : "";
}
create_links()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment