1
1
Fork 0

main.user.js aktualisiert

This commit is contained in:
Dominik Säume 2024-05-23 14:28:41 +00:00
parent b0b22d8486
commit 7231c34220

View file

@ -27,7 +27,7 @@ window.addEventListener("keydown", event => {
const oldAwnsersURL = GM_getValue(URL_STORAGE_KEY);
let newAwnsersURL = prompt("Please input the answer url (itexamanswers.net)", oldAwnsersURL);
GM_setValue(URL_STORAGE_KEY, newAwnsersURL);
fetchData(newAwnsersURL);
awnserData = await window.fetchAwnsers(newAwnsersURL);
break;
case "n":
@ -100,78 +100,4 @@ function matchAwnser(textA, textB) {
textA = textA.replace(replaceRegex, "");
textB = textB.replace(replaceRegex, "");
return (textA === textB);
}
function fetchData(awnserURL = ""){
GM_xmlhttpRequest({
method: "GET",
url: awnserURL,
headers: {
"Content-Type": "text/html"
},
onload: function(response) {
awnserImgs = new Map();
const results = [];
const parser = new DOMParser();
const virtDom = parser.parseFromString(response.responseText, "text/html");
let answersDom = virtDom.querySelector(".pf-content");
if (!answersDom) {
answersDom = virtDom.querySelector(".thecontent");
}
let index = -1;
for (let childDom of answersDom.children) {
index++;
if (childDom.tagName === "P" || childDom.tagName === "STRONG" ) {
// maybe a question question
let innerDom = childDom.querySelector("strong");
if (innerDom === null) {
if(!childDom.textContent){
continue;
}
innerDom = childDom;
};
const textContent = innerDom.textContent.trim();
const matches = textContent.match(/^[0-9]+\. (.*)$/);
if (matches !== null) {
const questionText = matches[1];
// most likely a question
let nextChild = answersDom.children[index + 1];
if (nextChild.tagName === "P"){
nextChild = answersDom.children[index + 2];
};
if (nextChild === null) continue;
if (nextChild.tagName === "UL") {
// most likely the awnser
const answers = [];
for (let answerDom of nextChild.querySelectorAll("strong")) {
let answerText = answerDom.textContent.trim();
if (answerText.endsWith("*")) {
answerText = answerText.substring(0, answerText.length - 1);
}
answers.push(answerText);
}
results.push({
question: questionText,
answers: answers
});
}
}
}
}
awnserData = results;
GM_log(results);
GM_log(awnserImgs);
}
});
}