User:Habst/getProgression.js

// double check for HJ e.h. men/148793 ? window.authorization??=new DOMParser.parseFromString(await (await fetch('/beta')).text, 'text/html').querySelector('script:not([src])').innerText.split("'")[1] pret=window.location.href.split('/').slice(0, 3).join('/'); id = window.location.href.split('/').slice(-2).join('/'); evt = '1500m'; out = `{| class="wikitable sortable" ! # !! Mark !!class=unsortable| Pl. !! Competition !! Venue !! Date !!class=unsortable| Ref. `; num=1; function nth(n){return n ? ["st","nd","rd"][((n+90)%100-10)%10-1]||"th" : ''} window.seasons ??= (await (await fetch(pret+`/api/athletes/${id}/seasons`, { headers: { authorization } })).json).data.map(s => +s.value).sort((a, b) => a - b); window.results ??= {}; for (const season of seasons) { const data = window.results[season] ??= await (await fetch(pret+`/api/athletes/${id}/season/${season}`, { headers: { authorization } })).json; const results = data.templates?.[0].divs[0].tables.flatMap(table => table.body.map(res => ({...res, title: table.title}))).sort((a, b) => new Date(a.date) - new Date(b.date)) ?? []; for (const res of results) { if (res.personalBest !== 'PB') continue; if (res.title !== evt) continue; const dt = new Date(res.date); const mon = dt.toLocaleString('en-US', { month: 'short' }); let dts = `${dt.getDate} ${mon} ${dt.getFullYear}`; const roundChar = ['h', 's', 'r', 'q'].find(c => res.pos?.includes(c)); const roundNum = res.pos?.split(roundChar).at(-1); if (res.competition === 'NC' && !res.pos.includes('-')) { res.competitionLong = `${res.venueCountry} Athletics Championships`; }   if (/1.th|(^|[^1])(1st|2nd|3rd|[^1-3]th)/.test(res.competitionLong?.split(' ')[0])) { res.competitionLong = res.competitionLong.split(' ').slice(1).join(' '); dts = `${dts}`; res.competitionLong = `${res.competitionLong}`; }   if (res.venueCountry === 'USA') { res.venueCountryFull = res.venue?.split(' ').at(-1); res.venue = res.venue?.split(' ').slice(0, -1).join(' '); }   res.venue = res.venue.split('/')[0]; out += `|-\n|align=center| ${num++} ||align=right| ${res.result}${res.wind ? ` ` : ''} || ${{1:'{{Gold1}}',2:'{{Silver2}}',3:'{{Bronze3}}'}[res.pos1] ?? (res.pos1 + nth(+res.pos1))}${roundChar ? ` ` : ''} || ${res.competitionLong ?? res.competition ?? ''} || ${res.venue}, ${res.venueCountryFull} ||align=right| ${dts} || \n` } } out += '|}'; console.log(out);
 * + ${evt} progression