User:Habst/getNCAAWinners.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Habst/getNCAAWinners. |
isFemale = new URLSearchParams(location.search).get('gender') === '2';
evt = document.querySelector(`option[value="${document.querySelector('select').value}"]`).innerText;
isRelay = evt.includes('Relay');
teams = {
Alabama: 'Alabama Crimson Tide',
LSU: isFemale ? 'LSU Lady Tigers' : 'LSU Tigers',
Texas: 'Texas Longhorns',
Houston: 'Houston Cougars',
'Indiana State': 'Indiana State Sycamores',
Georgia: 'Georgia Bulldogs',
'South Carolina': 'South Carolina Gamecocks',
Clemson: 'Clemson Tigers',
Arkansas: 'Arkansas Razorbacks',
'Texas Southern': 'Texas Southern Tigers',
Auburn: 'Auburn Tigers',
'Miami (Fla.)': 'Miami Hurricanes',
Kentucky: 'Kentucky Wildcats',
Florida: 'Florida Gators',
Tennessee: 'Tennessee Volunteers',
Oregon: 'Oregon Ducks',
Harvard: 'Harvard Crimson',
'North Carolina A&T': 'North Carolina A&T Aggies',
'Ohio State': 'Ohio State Buckeyes',
Arizona: 'Arizona Wildcats',
'George Mason': 'George Mason Patriots',
Missouri: 'Missouri Tigers',
Nebraska: 'Nebraska Cornhuskers',
'Seton Hall': 'Seton Hall Pirates',
'North Carolina': 'North Carolina Tar Heels',
Manhattan: 'Manhattan Jaspers',
Rice: 'Rice Owls',
Iowa: 'Iowa Hawkeyes',
Hampton: 'Hampton Pirates',
'Texas A&M': 'Texas A&M Aggies',
Kansas: 'Kansas Jayhawks',
'Southern California': 'USC Trojans',
'Arizona State': 'Arizona State Sun Devils',
Villanova: 'Villanova Wildcats',
Indiana: 'Indiana Hoosiers',
'Iowa State': 'Iowa State Cyclones',
'Eastern Michigan': 'Eastern Michigan Eagles',
Wisconsin: 'Wisconsin Badgers',
'Little Rock': 'Little Rock Trojans',
Pittsburgh: 'Pittsburgh Panthers',
UTEP: 'UTEP Miners',
UCLA: 'UCLA Bruins',
Minnesota: 'Minnesota Golden Gophers',
California: 'California Golden Bears',
BYU: 'BYU Cougars',
'Penn State': 'Penn State Nittany Lions',
Baylor: 'Baylor Bears',
'Virginia Tech': 'Virginia Tech Hokies',
Stanford: 'Stanford Cardinal',
'Grambling State': 'Grambling State Tigers',
UNLV: 'UNLV Rebels',
'Boston University': 'Boston University Terriers',
Providence: 'Providence Friars',
Georgetown: 'Georgetown Hoyas',
'West Virginia': 'West Virginia Mountaineers',
Liberty: isFemale ? 'Liberty Lady Flames': 'Liberty Flames',
'Northern Arizona': 'Northern Arizona Lumberjacks',
'Mississippi State': 'Mississippi State Bulldogs',
Duke: 'Duke Blue Devils',
'Florida State': 'Florida State Seminoles',
'Stony Brook': 'Stony Brook Seawolves',
Colorado: 'Colorado Buffaloes',
'Michigan State': 'Michigan State Spartans',
'Oklahoma State': isFemale ? 'Oklahoma State Cowgirls' : 'Oklahoma State Cowboys',
Samford: 'Samford Bulldogs',
'New Hampshire': 'New Hampshire Wildcats',
Illinois: 'Illinois Fighting Illini',
'Washington State': 'Washington State Cougars',
Oklahoma: 'Oklahoma Sooners',
Michigan: 'Michigan Wolverines',
'Boston College': 'Boston College Eagles',
'Texas Tech': 'Texas Tech Red Raiders',
Dartmouth: 'Dartmouth Big Green',
'Notre Dame': 'Notre Dame Fighting Irish',
'NC State': 'NC State Wolfpack',
'Bowling Green': 'Bowling Green Falcons',
'Western Kentucky': isFemale ? 'Western Kentucky Lady Toppers' : 'Western Kentucky Hilltoppers',
Brown: 'Brown Bears',
Montana: isFemale ? 'Montana Lady Griz' : 'Montana Grizzlies',
'South Alabama': 'South Alabama Jaguars',
'Fairleigh Dickinson': 'Fairleigh Dickinson Knights',
'Western Colorado': 'Western Colorado Mountaineers',
'Texas A&M-Corpus Christi': 'Texas A&M–Corpus Christi Islanders',
Iona: 'Iona Gaels',
Syracuse: 'Syracuse Orange',
'Georgia Tech': 'Georgia Tech Yellow Jackets',
'Arkansas State': 'Arkansas State Red Wolves',
'Ole Miss': 'Ole Miss Rebels',
'Bethune-Cookman': 'Bethune–Cookman Wildcats',
'Morgan State': isFemale ? 'Morgan State Lady Bears' : 'Morgan State Bears',
Adelphi: 'Adelphi Panthers',
SMU: 'SMU Mustangs',
TCU: 'TCU Horned Frogs',
'Kansas State': 'Kansas State Wildcats',
Fordham: 'Fordham Rams',
Princeton: 'Princeton Tigers',
'New Mexico': 'New Mexico Lobos',
Rutgers: 'Rutgers Scarlet Knights',
Richmond: 'Richmond Spiders',
Washington: 'Washington Huskies',
'Boise State': 'Boise State Broncos',
'Southern Miss': 'Southern Miss Golden Eagles',
'Northwestern State': isFemale ? 'Northwestern State Lady Demons' : 'Northwestern State Demons',
Maryland: 'Maryland Terrapins',
'Cal State LA': 'Cal State Los Angeles Golden Eagles',
Toledo: 'Toledo Rockets',
Ohio: 'Ohio Bobcats',
'Mississippi College': 'Mississippi College Choctaws',
'UT Arlington': 'UT Arlington Mavericks',
'Jackson State': 'Jackson State Tigers',
ULM: 'Louisiana–Monroe Warhawks',
Southern: isFemale ? 'Southern Lady Jaguars' : 'Southern Jaguars',
Louisville: 'Louisville Cardinals',
CSUN: 'Cal State Northridge Matadors',
'Weber State': 'Weber State Wildcats',
Nevada: 'Nevada Wolf Pack',
'Miami (Ohio)': 'Miami RedHawks',
'Oregon State': 'Oregon State Beavers',
'Colgate': 'Colgate Raiders',
'Long Beach State': 'Long Beach State Beach',
Navy: 'Navy Midshipmen',
Louisiana: 'Louisiana Ragin\' Cajuns',
'McNeese State': isFemale ? 'McNeese State Cowgirls' : 'McNeese State Cowboys',
'South Florida': 'South Florida Bulls',
'Fresno State': 'Fresno State Bulldogs',
'Montana State': 'Montana State Bobcats',
'Purdue': 'Purdue Boilermakers',
'San Jose State': 'San Jose State Spartans',
'Northern Iowa': 'Northern Iowa Panthers',
'Binghamton': 'Binghamton Bearcats',
'Akron': 'Akron Zips',
'South Dakota': 'South Dakota Coyotes',
'Southern Illinois': 'Southern Illinois Salukis',
'Hawai\'i': isFemale ? 'Hawaii Rainbow Wahine' : 'Hawaii Rainbow Warriors',
'Central Michigan': 'Central Michigan Chippewas',
'Colorado State': 'Colorado State Rams',
'North Dakota State': 'North Dakota State Bison',
ETSU: 'East Tennessee State Buccaneers',
UMBC: 'UMBC Retrievers',
'UC Riverside': 'UC Riverside Highlanders',
Cincinnati: 'Cincinnati Bearcats',
Connecticut: 'UConn Huskies',
'Rhode Island': 'Rhode Island Rams',
'Kent State': 'Kent State Golden Flashes',
Wyoming: isFemale ? 'Wyoming Cowgirls' : 'Wyoming Cowboys',
'Southeastern Louisiana': isFemale ? 'Southeastern Louisiana Lady Lions' : 'Southeastern Louisiana Lions',
'Kennesaw State': 'Kennesaw State Owls',
}
out = '';
fmtName = (nameText, splitCol = false) => {
let split = '';
const result = (nameText?.split(' ') ?? []).flatMap(n => {
if (n.startsWith('(')) return [];
if (n.match(/^[0-9.]+$/)) { split = n; return []; }
if (n === n.toUpperCase()) return n.split('-').map(word => word[0] + word.slice(1).toLowerCase()).join('-');
return n;
}).join(' ');
return `[[${result}]]${splitCol ? ` || ${split}` : ''}`;
};
[...document.querySelectorAll('table.ui')].toReversed().forEach(t => {
const yr = t.querySelector('tbody td').innerText?.split(' ')[0];
if (!yr) return;
const athletes = t.querySelectorAll('td[colspan="6"] tbody tr');
const winners = [...athletes].filter(a => a.querySelector('td').innerText.startsWith('(1)'));
out += winners.length > 1 ? `|rowspan=${winners.length}| ` : isRelay ? `|rowspan=4| ` : `| `;
out += `[[${yr} NCAA Division I Indoor Track and Field Championships|${yr}]] || `;
for (let i = 0; i < winners.length; i++) {
const winner = winners[i];
const [nameTd, _, team, markTd] = winner.querySelectorAll('td');
const nameText = nameTd.querySelector('span').innerText.split(') ')[1];
const teamText = isRelay ? nameText : team.innerText;
if (!teams[teamText]) console.log(`Missing ${teamText}`);
let names = isRelay ? winner.nextSibling?.querySelector('td').innerText.trim().split(', ').map(n => fmtName(n, true)) ?? [...Array(4)].fill(' ||') : [fmtName(nameText)];
const mark = markTd.querySelector('a')?.innerText ?? markTd.innerText;
const abbrs = [...markTd.querySelectorAll('.tooltip')].map(tt => tt.firstChild.textContent);
if (i) out += '\n| ';
const span = isRelay ? 'rowspan=4' : '';
out += `${names[0]} ||${span} {{tfco|${teams[teamText]}}} ||${span ? span + '|' : ''} ${mark}${abbrs.map(a => ` {{AthAbbr|${a}}}`).join('')}${names.length ? '\n|-\n' : ''}${names.slice(1).map(n => `| ${n}`).join('\n|-\n')}`;
out += '\n|-\n';
}
});
console.log(out.replaceAll(`|-\n\n|-`, '|-'));