User:Habst/matchWdTfrrs.js
// document.body.innerHTML = JSON.stringify(JSON.parse(document.body.innerText.split('\n').at(-1))['*'][0].a['*'].map(p => ({ title: p.title, q: p.q, id: p.id })));
clear()
window.ts ??= {};
window.cats ??= {};
normalize = s => s.replaceAll('_', ' ').replaceAll('-', ' ').replaceAll(' ', ' ').split('(')[0].normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase().trim();
t2wiki = (team, isMale) => {
let pre = nicks[team];
if (!pre) return null;
if (Array.isArray(pre)) pre = pre[isMale ? 0 : 1];
else pre += isMale ? ' men\'s' : ' women\'s';
return `Category:${pre} track and field athletes`;
}
wikiJsonP = async (props) => {
let wpResult;
window.cb = res => wpResult = res;
const script = Object.assign(document.createElement('script'), {
src: 'https://en.wikipedia.org/w/api.php?' + new URLSearchParams({
action: 'query',
format: 'json',
formatversion: '2',
callback: 'cb',
...props,
})
});
document.body.appendChild(script);
await new Promise(res => script.addEventListener('load', res));
return wpResult;
};
wdEdit = async (qid, prop, val, cmt, refs = [], rank = 'normal') => {
return await (await fetch(`https://www.wikidata.org/w/rest.php/wikibase/v0/entities/items/${qid}/statements`, {
headers: { 'Content-type': 'application/json' },
method: 'POST',
body: JSON.stringify({
statement: {
rank,
property: { id: prop },
value: { type: 'value', content: val },
qualifiers: [], references: refs,
},
tags: [], bot: false,
comment: cmt,
}),
})).json();
};
window.nicks = {
Georgia: 'Georgia Bulldogs',
Harvard: 'Harvard Crimson',
Penn: 'Penn Quakers',
UTSA: 'UTSA Roadrunners',
Wis_Eau_Claire: 'Wisconsin–Eau Claire Blugolds',
USC: 'USC Trojans',
East_Tenn_St: 'East Tennessee State Buccaneers',
Virginia: 'Virginia Cavaliers',
Kansas: 'Kansas Jayhawks',
Nebraska_Wesleyan: 'Nebraska Wesleyan Prairie Wolves',
UC_Santa_Barbara: 'UC Santa Barbara Gauchos',
Augustana_IL: 'Augustana (Illinois) Vikings',
Duke: 'Duke Blue Devils',
Bluffton: 'Bluffton Beavers',
LIU_Post: 'LIU_Post_Pioneers',
Miami_FL: 'Miami Hurricanes',
Emporia_St: 'Emporia State Hornets',
U_of_the_South: 'Sewanee Tigers',
TAMU_Commerce: 'Texas A&M–Commerce Lions',
Simpson: 'Simpson Storm',
Lees_McRae: 'Lees–McRae Bobcats',
UTEP: 'UTEP Miners',
Western_Texas_College: 'Western Texas Westerners',
Fairleigh_Dickinson_University: 'Fairleigh Dickinson Knights',
Lincoln_MO: 'Lincoln Blue Tigers',
Florida: 'Florida Gators',
BYU: 'BYU Cougars',
Louisville: 'Louisville Cardinals',
Indiana_IN: 'Indiana Hoosiers',
Virginia_Tech: 'Virginia Tech Hokies',
Medaille: 'Medaille Mavericks',
Washington: 'Washington Huskies',
Carleton: 'Carleton Knights',
Michigan_State: 'Michigan State Spartans',
Michigan: 'Michigan Wolverines',
LSU: ['LSU Tigers', 'LSU Lady Tigers'],
Tennessee: 'Tennessee Volunteers',
Concord: 'Concord Mountain Lions',
Pomona_Pitzer: 'Pomona–Pitzer Sagehens',
Akron: 'Akron Zips',
Plymouth_State: 'Plymouth State Panthers',
Williams: 'Williams Ephs',
Wartburg: 'Wartburg Knights',
Ohio_State: 'Ohio State Buckeyes',
Trinity_Western: 'Trinity Western Spartans',
Iona: 'Iona Gaels',
Texas_Tech: 'Texas Tech Red Raiders',
North_Carolina: 'North Carolina Tar Heels',
Florida_Intl: 'FIU Panthers',
Carson_Newman: 'Carson–Newman Eagles',
Penn_State: 'Penn State Nittany Lions',
Ramapo: 'Ramapo Roadrunners',
Washington_State: 'Washington State Cougars',
Oregon: 'Oregon Ducks',
UCLA: 'UCLA Bruins',
North_Carolina_St: 'NC State Wolfpack',
Georgia_Tech: 'Georgia Tech Yellow Jackets',
Arkansas: 'Arkansas Razorbacks',
N_Carolina_AT: 'North Carolina A&T Aggies',
Alabama: 'Alabama Crimson Tide',
Pittsburg_St: 'Pittsburg State Gorillas',
Cedarville: 'Cedarville Yellow Jackets',
Eastern_Kentucky: 'Eastern Kentucky Colonels',
Stanford: 'Stanford Cardinal',
Arizona: 'Arizona Wildcats',
Jacksonville_College: 'Jacksonville Jaguars',
Rose_Hulman: 'Rose–Hulman Fightin\' Engineers',
Minnesota: 'Minnesota Golden Gophers',
Southern_Nazarene: 'Southern Nazarene Crimson Storm',
Alfred_State: 'Alfred State Pioneers',
Wis_Platteville: 'Wisconsin–Platteville Pioneers',
Trine: 'Trine Thunder',
Indiana_Wesleyan: 'Indiana Wesleyan Wildcats',
Mount_Vernon_Nazarene: 'Mount Vernon Nazarene Cougars',
Augustana_SD: 'Augustana (South Dakota) Vikings',
St_Martins: 'Saint Martin\'s Saints',
Mount_Marty: 'Mount Marty Lancers',
Cal_Poly_Pomona: 'Cal Poly Pomona Broncos',
High_Point: 'High Point Panthers',
East_Carolina: 'East Carolina Pirates',
Vanderbilt: 'Vanderbilt Commodores',
Cornell: 'Cornell Big Red',
Hawaii: ['Hawaii Rainbow Warriors', 'Hawaii Rainbow Wahine'],
Fordham: 'Fordham Rams',
Clemson: 'Clemson Tigers',
McKendree: 'McKendree Bearcats',
New_Mexico: 'New Mexico Lobos',
Cincinnati: 'Cincinnati Bearcats',
Wisconsin: 'Wisconsin Badgers',
California_CA: 'California Golden Bears',
Arizona_State: 'Arizona State Sun Devils',
Oklahoma_State: ['Oklahoma State Cowboys', 'Oklahoma State Cowgirls'],
Mississippi: 'Ole Miss Rebels',
South_Plains: ['South Plains Texans', 'South Plains Lady Texans'],
Maryland: 'Maryland Terrapins',
South_Carolina: 'South Carolina Gamecocks',
West_Virginia: 'West Virginia Mountaineers',
East_Stroudsburg: 'East Stroudsburg Warriors',
Baldwin_Wallace: 'Baldwin Wallace Yellow Jackets',
Babson: 'Babson Beavers',
Oklahoma: 'Oklahoma Sooners',
Kentucky: 'Kentucky Wildcats',
Purdue: 'Purdue Boilermakers',
Villanova: 'Villanova Wildcats',
Utah: 'Utah Utes',
Nebraska: 'Nebraska Cornhuskers',
Northern_Arizona: 'Northern Arizona Lumberjacks',
Iowa_State: 'Iowa State Cyclones',
Texas_AM: 'Texas A&M Aggies',
Notre_Dame_IN: 'Notre Dame Fighting Irish',
Florida_State: 'Florida State Seminoles',
Charleston_Southern: 'Charleston Southern Buccaneers',
Princeton: 'Princeton Tigers',
Baylor: 'Baylor Bears',
Mid_Tenn_State: 'Middle Tennessee Blue Raiders',
Tennessee_St: ['Tennessee State Tigers', 'Tennessee State Lady Tigers'],
Illinois_State: 'Illinois State Redbirds',
Liberty: ['Liberty Flames', 'Liberty Lady Flames'],
Iowa: 'Iowa Hawkeyes',
San_Diego_State: 'San Diego State Aztecs',
Marshall: 'Marshall Thundering Herd',
Texas: 'Texas Longhorns',
Iowa_Western_CC: 'Iowa Western Reivers',
Montana_State: 'Montana State Bobcats',
Furman: 'Furman Paladins',
Mississippi_Valley: ['Mississippi Valley State Delta Devils', 'Mississippi Valley State Devilettes'],
Barton_County_CC: 'Barton Cougars',
Iowa_Central_CC: 'Iowa Central Tritons',
Drake: 'Drake Bulldogs',
Findlay: 'Findlay Oilers',
Tulsa: 'Tulsa Golden Hurricane',
Rio_Grande: 'Rio Grande RedStorm',
Mississippi_St: 'Mississippi State Bulldogs',
Colorado: 'Colorado Buffaloes',
Dartmouth: 'Dartmouth Big Green',
Coastal_Carolina: 'Coastal Carolina Chanticleers',
Saint_Leo: 'Saint Leo Lions',
Citadel: 'The Citadel Bulldogs',
Utah_State: 'Utah State Aggies',
TCU: 'TCU Horned Frogs',
South_Florida: 'South Florida Bulls',
Auburn: 'Auburn Tigers',
UNLV: 'UNLV Rebels',
Idaho: 'Idaho Vandals',
Idaho_State: 'Idaho State Bengals',
Memphis: 'Memphis Tigers',
Indiana_State: 'Indiana State Sycamores',
Eastern_Michigan: 'Eastern Michigan Eagles',
Western_Colorado: 'Western Colorado Mountaineers',
Kent_State: 'Kent State Golden Flashes',
Brown: 'Brown Bears',
Southern_Illinois: 'Southern Illinois Salukis',
Maine_Maritime: 'Maine Maritime Mariners',
San_Diego: 'San Diego Toreros',
Central_Arizona: 'Central Arizona Vaqueros',
Augusta: 'Augusta Jaguars',
Northwestern_IA: 'Northwestern Red Raiders',
Pittsburgh: 'Pittsburgh Panthers',
Western_Kentucky: ['Western Kentucky Hilltoppers', 'Western Kentucky Lady Toppers'],
Louisiana_Lafayette: 'Louisiana Ragin\' Cajuns',
Illinois: 'Illinois Fighting Illini',
Gardner_Webb: 'Gardner–Webb Runnin\' Bulldogs',
Mississippi_College: 'Mississippi College Choctaws',
Graceland: 'Graceland Yellowjackets',
St_Josephs_IN: 'Saint Joseph\'s Pumas',
Syracuse: 'Syracuse Orange',
Houston: 'Houston Cougars',
Texas_AM_CC: 'Texas A&M–Corpus Christi Islanders',
Oklahoma_City: 'Oklahoma City Stars',
Northwest_Kansas: 'Northwest Kansas Mavericks',
Tabor: 'Tabor Bluejays',
Texas_Arlington: 'UT Arlington Mavericks',
Miami_OH: 'Miami RedHawks',
Eastern_Nazarene: 'Eastern Nazarene Lions',
Montevallo: 'Montevallo Falcons',
Concordia_NE: 'Concordia Bulldogs',
St_Michaels: 'Saint Michael\'s Purple Knights',
Judson: 'Judson Eagles',
Sam_Houston: 'Sam Houston Bearkats',
William_Carey: 'William Carey Crusaders',
Hanover: 'Hanover Panthers',
Diablo_Valley: 'Diablo Valley Vikings',
Mount_Mercy: 'Mount Mercy Mustangs',
Coast_Guard: 'Coast Guard Bears',
Dordt: 'Dordt Defenders',
Lipscomb: 'Lipscomb Bisons',
Mount_Union: 'Mount Union Purple Raiders',
Adrian: 'Adrian Bulldogs',
Ohio_Northern: 'Ohio Northern Polar Bears',
Kennesaw_State: 'Kennesaw State Owls',
Northern_Iowa: 'Northern Iowa Panthers',
Florida_Atlantic: 'Florida Atlantic Owls',
Georgetown_DC: 'Georgetown Hoyas',
UMass_Boston: 'UMass–Boston Beacons',
Otterbein: 'Otterbein Cardinals',
Missouri: 'Missouri Tigers',
Coffeyville_CC: 'Coffeyville Red Ravens',
North_Dakota_St: 'North Dakota State Bison',
Stevenson: 'Stevenson Mustangs',
Luther: 'Luther Norse',
Colorado_State: 'Colorado State Rams',
Wichita_State: 'Wichita State Shockers',
South_Dakota: 'South Dakota Coyotes',
Kansas_State: 'Kansas State Wildcats',
Academy_of_Art: 'Academy of Art Urban Knights',
'UNT-Dallas': 'UNT Dallas Trailblazers',
USC_Upstate: 'USC Upstate Spartans',
Morgan_State: 'Morgan State Bears',
Paine: 'Paine Lions',
Bloomfield: 'Bloomfield Bears',
Concordia_St_Paul: 'Concordia Golden Bears',
Kentucky_Wesleyan: 'Kentucky Wesleyan Panthers',
Elmhurst: 'Elmhurst Bluejays',
Texas_State: 'Texas State Bobcats',
William_Penn: 'William Penn Statesmen',
Valparaiso: 'Valparaiso Beacons',
Manhattan: 'Manhattan Jaspers',
Rutgers: 'Rutgers Scarlet Knights',
UNC_Greensboro: 'UNC Greensboro Spartans',
Shorter: 'Shorter Hawks',
Boise_State: 'Boise State Broncos',
Rice: 'Rice Owls',
Albany: 'Albany Great Danes',
Columbia: 'Columbia Lions',
Appalachian_State: 'Appalachian State Mountaineers',
Wyoming: ['Wyoming Cowboys', 'Wyoming Cowgirls'],
Yale: 'Yale Bulldogs',
Central_Michigan: 'Central Michigan Chippewas',
Coppin_State: 'Coppin State Eagles',
Northeastern: 'Northeastern Huskies',
Bethel_IN: 'Bethel Pilots',
Assumption: 'Assumption Greyhounds',
Charlotte: 'Charlotte 49ers',
Winona_State: 'Winona State Warriors',
Tarleton_State: 'Tarleton State Texans',
Texas_Lutheran: 'Texas Lutheran Bulldogs',
Haverford: 'Haverford Fords',
William__Mary: 'William & Mary Tribe',
Catholic: 'Catholic University Cardinals',
UC_Irvine: 'UC Irvine Anteaters',
Finger_Lakes_CC: 'Finger Lakes Lakers',
Providence: 'Providence Friars',
DePaul: 'DePaul Blue Demons',
Portland_State: 'Portland State Vikings',
Southern_Miss: 'Southern Miss Golden Eagles',
Long_Beach_St: 'Long Beach State Beach',
Cal_St_Fullerton: 'Cal State Fullerton Titans',
Little_Rock: 'Little Rock Trojans',
Greenville: 'Greenville Panthers',
Oregon_State: 'Oregon State Beavers',
Wis_Stout: 'Wisconsin–Stout Blue Devils',
Davenport: 'Davenport Panthers',
Lindsey_Wilson: 'Lindsey Wilson Blue Raiders',
Hope: ['Hope Flying Dutchmen', 'Hope Flying Dutch'],
George_Mason: 'George Mason Patriots',
Central_Florida: 'UCF Knights',
Arkansas_Pine_Bluff: 'Arkansas–Pine Bluff Golden Lions',
Southern: ['Southern Jaguars', 'Southern Lady Jaguars'],
Weber_State: 'Weber State Wildcats',
San_Francisco: 'San Francisco Dons',
Louisiana_Tech: ['Louisiana Tech Bulldogs', 'Louisiana Tech Lady Techsters'],
Southern_Utah: 'Southern Utah Thunderbirds',
Hampton: ['Hampton Pirates', 'Hampton Lady Pirates'],
North_Texas: 'North Texas Mean Green',
Oral_Roberts: 'Oral Roberts Golden Eagles',
SMU: 'SMU Mustangs',
Butler: 'Butler Bulldogs',
};
(async () => {
for (const p of ps.toReversed()) {
const title = normalize(p.title);
if (p.done) { continue; }
console.log(p.title);
cats[p.title] ??= await wikiJsonP({ titles: p.title, prop: 'categories', cllimit: '500' });
const pCats = cats[p.title].query.pages[0].categories.map(c => c.title);
const yob = +pCats.find(c => c.match(/^Category:\d\d\d\d births$/))?.split(':')[1].split(' ')[0];
if (yob && yob < 1980) { console.log(` ${yob} birth, skipping`); continue; }
const teams = pCats.filter(c => c.split(' ').length > 5 && !c.includes(' male ') && !c.includes(' female ') && c.endsWith(' track and field athletes'));
ts[title] ??= new DOMParser().parseFromString(await (await fetch("https://www.tfrrs.org/search.html", {
headers: { "content-type": "application/x-www-form-urlencoded" },
body: `athlete=${title}`,
method: "POST",
})).text(), 'text/html').querySelector('.panel-body').innerHTML;
const body = new DOMParser().parseFromString(ts[title], 'text/html');
const rows = [...body.querySelectorAll('tr.allRows')].map(row => {
const tds = [...row.querySelectorAll('td')].map(td => td.querySelector('a'));
if (!tds[1]) console.log(' *** no team in results');
const id = tds[0].href.split('/')[4];
const isMale = tds[1]?.href.split('_')[2] === 'm';
const team = tds[0].href.split('/')[5];
const name = normalize(tds[0].href.split('/')[6]?.split('.')[0] ?? '');
return { id, isMale, team, name };
});
if (!rows.length) { console.log(' no search results'); continue; }
let hasMisses = false;
const matches = rows.filter(({ id, isMale, team, name }) => {
if (!team) return false;
const wikiTeam = t2wiki(team, isMale);
if (!wikiTeam) { hasMisses = true; console.log(' miss', team, teams.join('\n')); return false; }
// console.log(title, name, title === name, teams, wikiTeam);
return title === name && teams.includes(wikiTeam);
});
if (hasMisses && matches.length < teams.length) {
const allFound = teams.every(ct => {
const t = ct.split(':')[1].replace(' track and field athletes', ).replace(' men\'s', ).replace(' women\'s', '');
return Object.values(nicks).flat().includes(t);
});
if (!allFound) { console.log(rows.map(r=>r.team), teams); break; }
}
if (!matches.length) { console.log(' no matching team / name'); continue; }
for (const match of matches) {
const msg = `Adding TFRRS ID ${match.id} with matching name (${match.name}) and team (${match.team})`;
console.log(' ' + msg);
await wdEdit(p.q, 'P5120', match.id, msg);
p.done = true;
}
}
})();