77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
|
// ==UserScript==
|
||
|
// @name GX.HNPW.Extractor
|
||
|
// @match https://vosocc.unocha.org/Report.aspx?*
|
||
|
// @version 1.0
|
||
|
// ==/UserScript==
|
||
|
|
||
|
// ex: https://vosocc.unocha.org/Report.aspx?page=o0t9pExuBwMwml9Wkc49cgxxxequalxxxequal
|
||
|
(() => {
|
||
|
const CONSOLE_PREFIX = "GX.HNPW.Extractor: ";
|
||
|
const ID_PREFIX = "gxHnpwExtractor-";
|
||
|
|
||
|
//
|
||
|
let bodyElem = document.querySelector("body");
|
||
|
|
||
|
function download(text){
|
||
|
let link = document.createElement("a");
|
||
|
let file = new Blob([text], { type: 'text/plain' });
|
||
|
link.href = URL.createObjectURL(file);
|
||
|
link.download = "hnpw-titles.txt";
|
||
|
link.click();
|
||
|
URL.revokeObjectURL(link.href);
|
||
|
}
|
||
|
|
||
|
function runExtract(){
|
||
|
console.log(CONSOLE_PREFIX + "Begin extract()");
|
||
|
let tableElem = document.querySelector("#divPublishedSessions");
|
||
|
let trElemArray = tableElem.querySelectorAll("tr");
|
||
|
let result = "";
|
||
|
for (let trElem of trElemArray) {
|
||
|
console.log(trElem);
|
||
|
let tdElemArray = trElem.querySelectorAll("td");
|
||
|
if (!tdElemArray) { continue; }
|
||
|
if (tdElemArray.length < 4) { continue; }
|
||
|
result += "* " + tdElemArray[1].textContent + "\n";
|
||
|
}
|
||
|
|
||
|
download(result);
|
||
|
console.log(result);
|
||
|
console.log(CONSOLE_PREFIX + "End extract()");
|
||
|
}
|
||
|
|
||
|
function setupTools() {
|
||
|
let padElem = document.createElement('div');
|
||
|
padElem.id = ID_PREFIX + "pad";
|
||
|
padElem.style.position = 'fixed';
|
||
|
padElem.style.zIndex = "9999";
|
||
|
padElem.style.top = '0';
|
||
|
padElem.style.right = '0';
|
||
|
padElem.style.width = '100px';
|
||
|
padElem.style.height = '50px';
|
||
|
padElem.style.border = '1px solid black';
|
||
|
padElem.style.backgroundColor = 'rgba(0,0,0,0.5)';
|
||
|
padElem.style.display = "flex";
|
||
|
padElem.style.justifyContent = "center";
|
||
|
padElem.style.alignItems = "center";
|
||
|
|
||
|
let buttonElem = document.createElement("input");
|
||
|
buttonElem.value = "Extract";
|
||
|
buttonElem.type = "button";
|
||
|
buttonElem.addEventListener("click", runExtract)
|
||
|
|
||
|
// Insertion des éléments dans le body
|
||
|
padElem.appendChild(buttonElem);
|
||
|
bodyElem.appendChild(padElem);
|
||
|
}
|
||
|
|
||
|
function initialize() {
|
||
|
console.log(CONSOLE_PREFIX + "Begin setup()");
|
||
|
let padElem = document.querySelector('#' + ID_PREFIX + "pad");
|
||
|
if (!padElem) {
|
||
|
setupTools();
|
||
|
}
|
||
|
console.log(CONSOLE_PREFIX + "End setup()");
|
||
|
}
|
||
|
|
||
|
initialize();
|
||
|
})();
|