feat: add scripts
This commit is contained in:
52
web/olm.vn/screenshot-answers.js
Normal file
52
web/olm.vn/screenshot-answers.js
Normal file
@ -0,0 +1,52 @@
|
||||
// Dependencies
|
||||
eval(
|
||||
await (
|
||||
await fetch("https://html2canvas.hertzen.com/dist/html2canvas.min.js")
|
||||
).text(),
|
||||
);
|
||||
eval(
|
||||
await (
|
||||
await fetch("https://cdn.jsdelivr.net/npm/jszip@3.10.1/dist/jszip.min.js")
|
||||
).text(),
|
||||
);
|
||||
eval(
|
||||
await (
|
||||
await fetch(
|
||||
"https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js",
|
||||
)
|
||||
).text(),
|
||||
);
|
||||
|
||||
const zipFile = new JSZip();
|
||||
|
||||
async function screenshotAnswer(answerElement) {
|
||||
console.log(answerElement);
|
||||
const canvas = await html2canvas(answerElement);
|
||||
return await new Promise((resolve) => canvas.toBlob(resolve));
|
||||
}
|
||||
|
||||
async function saveImage(image, imageName) {
|
||||
zipFile.file(imageName, image);
|
||||
}
|
||||
|
||||
async function saveZip() {
|
||||
const generatedFile = await zipFile.generateAsync({ type: "blob" });
|
||||
console.log(`URL: ${URL.createObjectURL(generatedFile)}`);
|
||||
saveAs(generatedFile, "olm-answers.zip");
|
||||
}
|
||||
|
||||
const questionBtns = document.querySelector("#question-static").children;
|
||||
const wrongQuestionCount =
|
||||
document.querySelectorAll(".q-static.q-wrong").length;
|
||||
for (const [index, questionBtn] of Array.from(questionBtns).entries()) {
|
||||
if (index > questionBtns.length - 1 - wrongQuestionCount) {
|
||||
break;
|
||||
}
|
||||
// Click the button
|
||||
questionBtn.click();
|
||||
const answerElement =
|
||||
document.querySelector("#qholder").parentElement.parentElement;
|
||||
const answerImage = await screenshotAnswer(answerElement);
|
||||
saveImage(answerImage, `question-${index + 1}.png`);
|
||||
}
|
||||
await saveZip();
|
||||
Reference in New Issue
Block a user