1
1
Fork 0
This commit is contained in:
Dominik Säume 2024-05-23 16:32:22 +02:00
parent 9545544472
commit b10972bd0d
Signed by: SZUT-Dominik
GPG key ID: 67D15BB250B41E7C
2 changed files with 80 additions and 6 deletions

View file

@ -1,5 +1,79 @@
function hello(){
console.log("hello");
}
function fetchAwnsers(awnserURL = "") {
return new Promise((resolve, reject) => {
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"
);
window.hello = hello;
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,
});
}
}
}
}
resolve(results);
},
onerror: function(error) {
reject(error)
}
});
});
}
window.fetchAwnsers = fetchAwnsers;

View file

@ -10,7 +10,7 @@
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @grant GM_log
// @version 0.0.9
// @version 0.0.10
// @author Dominik Säume
// ==/UserScript==