forked from vullnetyy/stream-transcript-extractor-extension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent.js
77 lines (59 loc) · 2.24 KB
/
content.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var fetchOverride = document.createElement("script");
fetchOverride.src = chrome.runtime.getURL("fetchOverride.js");
fetchOverride.onload = function () {
this.remove();
};
(document.head || document.documentElement).appendChild(fetchOverride);
let wrapper = document.createElement('div');
let copyTranscriptButton = document.createElement('button');
let downloadTranscriptButton = document.createElement('button');
let closeButton = document.createElement('button');
wrapper.appendChild(copyTranscriptButton);
wrapper.appendChild(downloadTranscriptButton);
wrapper.appendChild(closeButton);
closeButton.innerHTML = "X";
copyTranscriptButton.innerHTML = "Copy Transcript";
downloadTranscriptButton.innerHTML = "Download Transcript";
closeButton.className = "transcript-extractor-button";
copyTranscriptButton.className = "transcript-extractor-button";
downloadTranscriptButton.className = "transcript-extractor-button transcript-extractor-close-button";
wrapper.className = "transcript-extractor-wrapper";
document.querySelector("body").appendChild(wrapper);
copyTranscriptButton.addEventListener('click', async () => {
const textToCopy = getTranscript();
try {
await navigator.clipboard.writeText(
textToCopy
);
} catch (err) {
console.error("Failed to copy: ", err);
}
});
downloadTranscriptButton.addEventListener('click', async () => {
const textToDownload = getTranscript();
download(textToDownload);
});
closeButton.addEventListener('click', () => {
wrapper.remove();
});
function getTranscript() {
return document.getElementById('transcript-extractor-for-microsoft-stream-hidden-div-with-transcript')
.innerText;
}
function download(text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', getTranscriptFileName());
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function getTranscriptFileName() {
const videoTitle = document.querySelector('h1[class*="videoTitleViewModeHeading"] label')
.innerText
if (videoTitle === null || videoTitle === '' || videoTitle === undefined) {
return 'transcript.txt';
}
return `transcript-${videoTitle}.txt`;
}