diff --git a/scraper/index.ts b/scraper/index.ts index cac9b4723..7bfe11afd 100644 --- a/scraper/index.ts +++ b/scraper/index.ts @@ -61,6 +61,7 @@ const main = async () => { const sports: any = []; const events: any[] = []; + let nocs: any[] = []; for (const lang of languages) { const scheduleOverview = await getScheduleOverview(lang.code); @@ -80,13 +81,13 @@ const main = async () => { sport.order = discipline.order; const scheduleSport = await getScheduleSport(lang.code, sport.key); - const scheduleList = scheduleSport.props.pageProps.page.items.find((item: any) => item.type === "module" && item.name === "scheduleList").data.schedules.map((schedule: any) => schedule.units).flat() for (const scheduleListElement of scheduleList) { if (events.find(e => e.key === scheduleListElement.unitCode) == null) { events.push({ key: scheduleListElement.unitCode, + sport: sport.key, start: scheduleListElement.startDateTimeUtc, end: scheduleListElement.endDateTimeUtc, isTraining: scheduleListElement.isTraining, @@ -106,13 +107,25 @@ const main = async () => { } event.match.team1.name[lang.code] = (scheduleListElement.match.team1.description || '').replace(/\,/gi, ''); event.match.team2.name[lang.code] = (scheduleListElement.match.team2.description || '').replace(/\,/gi, ''); + + + for (const team of [scheduleListElement.match.team1, scheduleListElement.match.team2]) { + const nocKey = team.teamCode.replace(/[^A-Z]/gi, ''); + if (nocs.find(n => n.key === nocKey) == null) { + nocs.push({ key: nocKey, name: {} }); + } + const noc = nocs.find(n => n.key === nocKey); + noc.name[lang.code] = (team.description || '').replace(/\,/gi, ''); + } } } } } } - cache.set('calendar.json', JSON.stringify({ languages, sports, events })); + nocs = nocs.filter((noc) => noc.key !== noc.name.en); + + cache.set('calendar.json', JSON.stringify({ languages, sports, nocs, events })); }; main(); diff --git a/scraper/package-lock.json b/scraper/package-lock.json index 193945dd4..ad1bfec6c 100644 --- a/scraper/package-lock.json +++ b/scraper/package-lock.json @@ -14,6 +14,9 @@ "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" + }, + "devDependencies": { + "@types/debug": "^4.1.12" } }, "node_modules/@cspotcode/source-map-support": { @@ -259,6 +262,16 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "license": "MIT" }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -271,6 +284,13 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "24.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", diff --git a/scraper/package.json b/scraper/package.json index ae72d9948..1b714d65d 100644 --- a/scraper/package.json +++ b/scraper/package.json @@ -15,5 +15,8 @@ "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" + }, + "devDependencies": { + "@types/debug": "^4.1.12" } }