volleyball-dev-backend/scraper/updateLiveData.js
2025-06-05 14:02:24 +00:00

54 lines
1.5 KiB
JavaScript

// /scraper/updateLiveData.js
require("dotenv").config({ path: "../.env" });
const { Pool } = require("pg");
const scrapeScoreboard = require("./scrapeScoreboard");
const scrapeSpiele = require("./scrapeSpiele");
const pool = new Pool({
user: process.env.DB_USER,
host: "127.0.0.1",
database: process.env.DB_NAME,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
});
console.log("🔌 Verbinde mit DB:", {
host: "127.0.0.1",
port: process.env.DB_PORT,
user: process.env.DB_USER,
db: process.env.DB_NAME
});
async function updateAllTeams() {
const { rows: teams } = await pool.query(`
SELECT id, name, scraper_identifier, tabellenlink, spielelink
FROM teams
WHERE tabellenlink IS NOT NULL AND spielelink IS NOT NULL AND scraper_identifier IS NOT NULL
`);
for (const team of teams) {
try {
console.log(`🔄 ${team.name} (ID ${team.id})`);
const scoreboard = await scrapeScoreboard(team.tabellenlink);
const spiele = await scrapeSpiele(team.spielelink);
await pool.query(`
INSERT INTO team_live_data (team_id, scoreboard, spiele)
VALUES ($1, $2, $3)
ON CONFLICT (team_id)
DO UPDATE SET scoreboard = EXCLUDED.scoreboard, spiele = EXCLUDED.spiele, last_updated = now()
`, [team.id, JSON.stringify(scoreboard), JSON.stringify(spiele)]);
console.log(`✅ Gespeichert: ${team.name}`);
} catch (err) {
console.error(`❌ Fehler bei ${team.name}:`, err.message);
}
}
await pool.end();
}
updateAllTeams();