Aggiunti file javascript
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
// ==UserScript==
|
||||
// @name Estrattore Manuale Tabella Portale Trasporto
|
||||
// @namespace http://tampermonkey.net/
|
||||
// @version 2.0
|
||||
// @description Aggiornamento dati tramite tasto Cerca senza ricaricare la pagina
|
||||
// @author Gemini
|
||||
// @match https://www.ilportaledeltrasporto.it/nove/gestioneistanzanove/spa/le-mie-istanze*
|
||||
// @grant GM_xmlhttpRequest
|
||||
// @connect 192.168.1.33
|
||||
// ==/UserScript==
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
const CONFIG = {
|
||||
endpoint: 'http://192.168.1.33/hook/ans2.php',
|
||||
interval: 6000 // 6 secondi tra un invio e l'altro
|
||||
};
|
||||
|
||||
console.log("%c Script in modalità Manuale Attivo. Imposta i filtri e lo script farà il resto.", "color: #00DBFF; font-weight: bold;");
|
||||
|
||||
function eseguiCiclo() {
|
||||
// 1. Cerca il pulsante "Cerca"
|
||||
const buttons = Array.from(document.querySelectorAll('button'));
|
||||
const searchButton = buttons.find(btn =>
|
||||
btn.innerText.trim().toUpperCase() === "CERCA"
|
||||
);
|
||||
|
||||
if (searchButton) {
|
||||
console.log("Aggiornamento dati (clic su Cerca)...");
|
||||
searchButton.click();
|
||||
|
||||
// 2. Aspetta che la tabella si aggiorni (4 secondi)
|
||||
setTimeout(() => {
|
||||
estraiEInvia();
|
||||
}, 4000);
|
||||
} else {
|
||||
console.warn("Pulsante 'Cerca' non trovato. Riprovo tra 20 secondi.");
|
||||
setTimeout(eseguiCiclo, CONFIG.interval);
|
||||
}
|
||||
}
|
||||
|
||||
function estraiEInvia() {
|
||||
const rows = document.querySelectorAll('[role="row"]');
|
||||
const results = [];
|
||||
|
||||
rows.forEach(row => {
|
||||
const cells = row.querySelectorAll('[role="cell"]');
|
||||
if (cells.length >= 5) {
|
||||
const idIstanza = cells[0].innerText.trim();
|
||||
if (idIstanza !== "" && idIstanza.toLowerCase() !== "identificativo istanza") {
|
||||
results.push({
|
||||
identificativo: idIstanza,
|
||||
data_inserimento: cells[1]?.innerText.trim(),
|
||||
stato: cells[2]?.innerText.trim(),
|
||||
tipologia: cells[3]?.innerText.trim(),
|
||||
targa_telaio: cells[4]?.innerText.trim()
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (results.length > 0) {
|
||||
console.log(`Invio di ${results.length} record in corso...`);
|
||||
|
||||
GM_xmlhttpRequest({
|
||||
method: "POST",
|
||||
url: CONFIG.endpoint,
|
||||
headers: { "Content-Type": "application/json" },
|
||||
data: JSON.stringify(results),
|
||||
onload: function(response) {
|
||||
console.log("%c OK: Dati inviati con successo.", "color: #00FF00;");
|
||||
// 3. Programma il prossimo ciclo senza ricaricare la pagina
|
||||
setTimeout(eseguiCiclo, CONFIG.interval);
|
||||
},
|
||||
onerror: function(err) {
|
||||
console.error("Errore invio server locale. Riprovo tra 20 secondi.");
|
||||
setTimeout(eseguiCiclo, CONFIG.interval);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.warn("Nessun dato trovato in tabella. Riprovo nel prossimo ciclo.");
|
||||
setTimeout(eseguiCiclo, CONFIG.interval);
|
||||
}
|
||||
}
|
||||
|
||||
// Avvio del primo ciclo dopo 5 secondi dal caricamento della pagina
|
||||
// per darti il tempo di impostare i filtri se vuoi,
|
||||
// altrimenti lo script girerà con i filtri che trova.
|
||||
setTimeout(eseguiCiclo, 5000);
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user