54 lines
1.5 KiB
JavaScript
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();
|