47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const axios = require('axios');
|
|
const cheerio = require('cheerio');
|
|
const cors = require('cors');
|
|
const path = require('path');
|
|
|
|
const app = express();
|
|
const port = 3003;
|
|
|
|
// Permette richieste da qualsiasi origine
|
|
app.use(cors());
|
|
|
|
// Route API che estrae i dati da monitor
|
|
app.get('/', async (req, res) => {
|
|
try {
|
|
const { Bacino, Data, exclude } = req.query;
|
|
|
|
const response = await axios.get(`https://servizi.startromagna.it/corsesoppresse/corsesopp?param1=${Bacino}¶m2=${Data}`);
|
|
const $ = cheerio.load(response.data);
|
|
|
|
// Parse excluded column indexes from query
|
|
const excludeIndexes = exclude
|
|
? exclude.split(',').map(i => parseInt(i)).filter(i => !isNaN(i))
|
|
: [];
|
|
|
|
const rows = [];
|
|
|
|
$('#GridView1 tbody tr').each((i, row) => {
|
|
const allColumns = $(row).find('td').map((j, col) => $(col).text().trim()).get();
|
|
if (allColumns.length > 0) {
|
|
// Filter out excluded columns
|
|
const filteredColumns = allColumns.filter((_, idx) => !excludeIndexes.includes(idx));
|
|
rows.push(filteredColumns);
|
|
}
|
|
});
|
|
|
|
res.json(rows);
|
|
} catch (error) {
|
|
console.error(error);
|
|
res.status(500).send('Errore nel recupero dei dati');
|
|
}
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Server avviato su http://localhost:${port}`);
|
|
});
|