Skip to content

Beautify Ryder Cup and Other Team Tournaments #73

@dathbe

Description

@dathbe

Right now, team tournaments do work, but they only display the overall score. This could be beautified to look more like what ESPN displays:

Image

I'd imagine a header row with away team on left with score, home team on right with score. Then rows below that with the score of each match.

This is the raw output of the API during an example tournament:

{"events":[{"id":"401734110","uid":"s:1100~l:1106~e:401734110","date":"2025-09-26T04:00Z","endDate":"2025-09-28T04:00Z","name":"Ryder Cup","shortName":"Ryder Cup","primary":true,"hasPlayerStats":false,"hasCourseStats":false,"league":{"id":"1106","name":"PGA TOUR","abbreviation":"PGA","shortName":"PGA TOUR","slug":"pga"},"season":{"year":2025},"links":[{"language":"en-US","rel":["live","desktop","event"],"href":"https://www.espn.com/golf/leaderboard?tournamentId=401734110","text":"Full Scorecard","shortText":"Live","isExternal":false,"isPremium":false,"isHidden":false}],"tournament":{"id":"112","displayName":"Ryder Cup","major":false,"scoringSystem":{"id":"2","name":"Match"},"numberOfRounds":3,"cutRound":0,"cutScore":0,"cutCount":0},"status":{"type":{"id":"2","name":"STATUS_IN_PROGRESS","state":"in","completed":false,"description":"In Progress"}},"playoffType":{"id":-1,"description":"None","minimumHoles":0},"competitions":[[{"id":"11766","uid":"s:1100~l:1106~e:401734110~c:11766","date":"2025-09-26T11:10Z","endDate":"2025-09-28T16:00Z","description":"tournament","score":"EUR leads USA 3-0","recent":true,"onWatchESPN":false,"dataFormat":"API","status":{"period":1,"type":{"id":"2","name":"STATUS_IN_PROGRESS","state":"in","description":"In Progress","detail":"In Progress","shortDetail":"In Progress"}},"broadcasts":[{"media":{"id":"379","slug":"nbc","name":"NBC","shortName":"NBC","callLetters":"NBC"},"lang":"en","region":"us"},{"media":{"id":"519","slug":"usa-network","name":"USA Network","shortName":"USA Net","callLetters":"USA Net"},"lang":"en","region":"us"},{"media":{"id":"789","slug":"peacock","name":"Peacock","shortName":"Peacock","callLetters":"Peacock"},"lang":"en","region":"us"}],"type":{"id":"1","text":"tournament"},"competitors":[{"id":"1","uid":"s:1100~l:1106~t:1","movement":0,"sortOrder":1,"featured":false,"homeAway":"home","status":{"displayValue":"In Progress","behindCurrentRound":true,"type":{"id":"1","name":"STATUS_IN_PROGRESS","state":"in","completed":false,"description":"In Progress","detail":"In Progress","shortDetail":"In Progress"}},"score":{"value":0.0,"displayValue":"0","draw":false},"linescores":[],"team":{"id":"1","abbreviation":"USA","displayName":"USA","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/usa.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/usa.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]}},{"id":"2","uid":"s:1100~l:1106~t:2","movement":0,"sortOrder":2,"featured":false,"homeAway":"away","status":{"displayValue":"In Progress","behindCurrentRound":true,"type":{"id":"1","name":"STATUS_IN_PROGRESS","state":"in","completed":false,"description":"In Progress","detail":"In Progress","shortDetail":"In Progress"}},"score":{"value":3.0,"displayValue":"3","draw":false},"linescores":[],"team":{"id":"2","abbreviation":"EUR","displayName":"EUR","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/eur.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/eur.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]}}],"leaders":[],"holeByHoleSource":{"id":"0","state":"none","description":"none"},"scoringSystem":{"id":"4","name":"Cup"}}],[{"id":"11767","uid":"s:1100~l:1106~e:401734110~c:11767","date":"2025-09-26T11:10Z","endDate":"2025-09-26T16:00Z","description":"Friday Morning Foursomes","recent":true,"dataFormat":"API","status":{"period":1,"type":{"id":"3","name":"STATUS_FINAL","state":"post","description":"Final","detail":"Final","shortDetail":"Final"}},"broadcasts":[{"media":{"id":"379","slug":"nbc","name":"NBC","shortName":"NBC","callLetters":"NBC"},"lang":"en","region":"us"},{"media":{"id":"519","slug":"usa-network","name":"USA Network","shortName":"USA Net","callLetters":"USA Net"},"lang":"en","region":"us"},{"media":{"id":"789","slug":"peacock","name":"Peacock","shortName":"Peacock","callLetters":"Peacock"},"lang":"en","region":"us"}],"type":{"id":"5","text":"foursome"},"competitors":[{"id":"1131","uid":"s:1100~l:1106~p:1131","movement":0,"sortOrder":2,"featured":false,"homeAway":"away","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:10Z","startHole":1,"thru":15,"displayThru":"15","playoff":false,"behindCurrentRound":false,"detail":"4 & 3","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":"4 & 3"},"score":{"value":4.0,"displayValue":"4 & 3","holesRemaining":3,"draw":false,"winner":true},"linescores":[{"value":5.0,"displayValue":"5","period":1,"linescores":[{"value":0.0,"displayValue":"0","period":1,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":7,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":8,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":12,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":15,"isPlayoff":false,"draw":false}],"isPlayoff":false}],"team":{"id":"2","abbreviation":"EUR","displayName":"EUR","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/eur.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/eur.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":5553,"athlete":{"id":"5553","uid":"s:1100~a:5553","displayName":"Tyrrell Hatton","shortName":"T. Hatton","lastName":"Hatton","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/5553.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/eng.png","alt":"England"},"birthPlace":{"countryAbbreviation":"eng"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/5553/tyrrell-hatton","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":9780,"athlete":{"id":"9780","uid":"s:1100~a:9780","displayName":"Jon Rahm","shortName":"J. Rahm","lastName":"Rahm","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/9780.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/esp.png","alt":"Spain"},"birthPlace":{"countryAbbreviation":"esp"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/9780/jon-rahm","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]},{"id":"131209","uid":"s:1100~l:1106~p:131209","movement":0,"sortOrder":1,"featured":false,"homeAway":"home","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:10Z","startHole":1,"thru":15,"displayThru":"15","playoff":false,"behindCurrentRound":false,"detail":"","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":""},"score":{"value":0.0,"displayValue":"","holesRemaining":3,"draw":false,"winner":false},"linescores":[{"value":1.0,"displayValue":"1","period":1,"linescores":[{"value":1.0,"displayValue":"1","period":1,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":8,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":12,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":15,"isPlayoff":false,"draw":false}],"isPlayoff":false}],"team":{"id":"1","abbreviation":"USA","displayName":"USA","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/usa.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/usa.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":4848,"athlete":{"id":"4848","uid":"s:1100~a:4848","displayName":"Justin Thomas","shortName":"J. Thomas","lastName":"Thomas","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/4848.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"KY"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/4848/justin-thomas","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":10046,"athlete":{"id":"10046","uid":"s:1100~a:10046","displayName":"Bryson DeChambeau","shortName":"B. DeChambeau","lastName":"DeChambeau","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/10046.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"CA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/10046/bryson-dechambeau","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]}],"leaders":[],"holeByHoleSource":{"id":"0","state":"none","description":"none"},"scoringSystem":{"id":"2","name":"Match"}},{"id":"11768","uid":"s:1100~l:1106~e:401734110~c:11768","date":"2025-09-26T11:26Z","endDate":"2025-09-26T16:00Z","description":"Friday Morning Foursomes","recent":true,"dataFormat":"API","status":{"period":1,"type":{"id":"3","name":"STATUS_FINAL","state":"post","description":"Final","detail":"Final","shortDetail":"Final"}},"broadcasts":[{"media":{"id":"379","slug":"nbc","name":"NBC","shortName":"NBC","callLetters":"NBC"},"lang":"en","region":"us"},{"media":{"id":"519","slug":"usa-network","name":"USA Network","shortName":"USA Net","callLetters":"USA Net"},"lang":"en","region":"us"},{"media":{"id":"789","slug":"peacock","name":"Peacock","shortName":"Peacock","callLetters":"Peacock"},"lang":"en","region":"us"}],"type":{"id":"5","text":"foursome"},"competitors":[{"id":"127935","uid":"s:1100~l:1106~p:127935","movement":0,"sortOrder":1,"featured":false,"homeAway":"home","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:26Z","startHole":1,"thru":15,"displayThru":"15","playoff":false,"behindCurrentRound":false,"detail":"","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":""},"score":{"value":0.0,"displayValue":"","holesRemaining":3,"draw":false,"winner":false},"linescores":[{"value":2.0,"displayValue":"2","period":1,"linescores":[{"value":0.0,"displayValue":"0","period":1,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":2,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":8,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":12,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":15,"isPlayoff":false,"draw":false}],"isPlayoff":false}],"team":{"id":"1","abbreviation":"USA","displayName":"USA","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/usa.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/usa.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":5409,"athlete":{"id":"5409","uid":"s:1100~a:5409","displayName":"Russell Henley","shortName":"R. Henley","lastName":"Henley","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/5409.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"GA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/5409/russell-henley","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":9478,"athlete":{"id":"9478","uid":"s:1100~a:9478","displayName":"Scottie Scheffler","shortName":"S. Scheffler","lastName":"Scheffler","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/9478.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"TX"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/9478/scottie-scheffler","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]},{"id":"131210","uid":"s:1100~l:1106~p:131210","movement":0,"sortOrder":2,"featured":false,"homeAway":"away","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:26Z","startHole":1,"thru":15,"displayThru":"15","playoff":false,"behindCurrentRound":false,"detail":"5 & 3","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":"5 & 3"},"score":{"value":5.0,"displayValue":"5 & 3","holesRemaining":3,"draw":false,"winner":true},"linescores":[{"value":7.0,"displayValue":"7","period":1,"linescores":[{"value":1.0,"displayValue":"1","period":1,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":4,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":5,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":6,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":8,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":9,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":12,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":15,"isPlayoff":false,"draw":false}],"isPlayoff":false}],"team":{"id":"2","abbreviation":"EUR","displayName":"EUR","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/eur.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/eur.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":9037,"athlete":{"id":"9037","uid":"s:1100~a:9037","displayName":"Matt Fitzpatrick","shortName":"M. Fitzpatrick","lastName":"Fitzpatrick","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/9037.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/eng.png","alt":"England"},"birthPlace":{"countryAbbreviation":"eng"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/9037/matt-fitzpatrick","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":4375972,"athlete":{"id":"4375972","uid":"s:1100~a:4375972","displayName":"Ludvig Åberg","shortName":"L. Åberg","lastName":"Åberg","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/4375972.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/swe.png","alt":"Sweden"},"birthPlace":{"countryAbbreviation":"swe"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/4375972/ludvig-aberg","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]}],"leaders":[],"holeByHoleSource":{"id":"0","state":"none","description":"none"},"scoringSystem":{"id":"2","name":"Match"}},{"id":"11769","uid":"s:1100~l:1106~e:401734110~c:11769","date":"2025-09-26T11:42Z","endDate":"2025-09-26T16:00Z","description":"Friday Morning Foursomes","recent":true,"dataFormat":"API","status":{"period":1,"type":{"id":"3","name":"STATUS_FINAL","state":"post","description":"Final","detail":"Final","shortDetail":"Final"}},"broadcasts":[{"media":{"id":"379","slug":"nbc","name":"NBC","shortName":"NBC","callLetters":"NBC"},"lang":"en","region":"us"},{"media":{"id":"519","slug":"usa-network","name":"USA Network","shortName":"USA Net","callLetters":"USA Net"},"lang":"en","region":"us"},{"media":{"id":"789","slug":"peacock","name":"Peacock","shortName":"Peacock","callLetters":"Peacock"},"lang":"en","region":"us"}],"type":{"id":"5","text":"foursome"},"competitors":[{"id":"127877","uid":"s:1100~l:1106~p:127877","movement":0,"sortOrder":2,"featured":false,"homeAway":"away","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:42Z","startHole":1,"thru":14,"displayThru":"14","playoff":false,"behindCurrentRound":false,"detail":"5 & 4","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":"5 & 4"},"score":{"value":5.0,"displayValue":"5 & 4","holesRemaining":4,"draw":false,"winner":true},"linescores":[{"value":6.0,"displayValue":"6","period":1,"linescores":[{"value":1.0,"displayValue":"1","period":1,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":4,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":5,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":6,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":8,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":12,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":13,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true}],"isPlayoff":false}],"team":{"id":"2","abbreviation":"EUR","displayName":"EUR","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/eur.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/eur.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":3470,"athlete":{"id":"3470","uid":"s:1100~a:3470","displayName":"Rory McIlroy","shortName":"R. McIlroy","lastName":"McIlroy","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/3470.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/nir.png","alt":"Northern Ireland"},"birthPlace":{"countryAbbreviation":"nir"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/3470/rory-mcilroy","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":5539,"athlete":{"id":"5539","uid":"s:1100~a:5539","displayName":"Tommy Fleetwood","shortName":"T. Fleetwood","lastName":"Fleetwood","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/5539.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/eng.png","alt":"England"},"birthPlace":{"countryAbbreviation":"eng"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/5539/tommy-fleetwood","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]},{"id":"131211","uid":"s:1100~l:1106~p:131211","movement":0,"sortOrder":1,"featured":false,"homeAway":"home","status":{"displayValue":"F","period":1,"teeTime":"2025-09-26T11:42Z","startHole":1,"thru":14,"displayThru":"14","playoff":false,"behindCurrentRound":false,"detail":"","type":{"id":"2","name":"STATUS_FINISH","state":"post","completed":true,"description":"Finish","detail":"Finish","shortDetail":"F"},"todayDetail":""},"score":{"value":0.0,"displayValue":"","holesRemaining":4,"draw":false,"winner":false},"linescores":[{"value":1.0,"displayValue":"1","period":1,"linescores":[{"value":0.0,"displayValue":"0","period":1,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":8,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":9,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":12,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":13,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true}],"isPlayoff":false}],"team":{"id":"1","abbreviation":"USA","displayName":"USA","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/usa.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/usa.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":5408,"athlete":{"id":"5408","uid":"s:1100~a:5408","displayName":"Harris English","shortName":"H. English","lastName":"English","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/5408.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"GA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/5408/harris-english","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":10592,"athlete":{"id":"10592","uid":"s:1100~a:10592","displayName":"Collin Morikawa","shortName":"C. Morikawa","lastName":"Morikawa","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/10592.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"CA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/10592/collin-morikawa","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]}],"leaders":[],"holeByHoleSource":{"id":"0","state":"none","description":"none"},"scoringSystem":{"id":"2","name":"Match"}},{"id":"11770","uid":"s:1100~l:1106~e:401734110~c:11770","date":"2025-09-26T11:58Z","endDate":"2025-09-26T16:00Z","description":"Friday Morning Foursomes","recent":true,"dataFormat":"API","status":{"period":1,"type":{"id":"2","name":"STATUS_IN_PROGRESS","state":"in","description":"In Progress","detail":"Thru 14","shortDetail":"Thru 14"}},"broadcasts":[{"media":{"id":"379","slug":"nbc","name":"NBC","shortName":"NBC","callLetters":"NBC"},"lang":"en","region":"us"},{"media":{"id":"519","slug":"usa-network","name":"USA Network","shortName":"USA Net","callLetters":"USA Net"},"lang":"en","region":"us"},{"media":{"id":"789","slug":"peacock","name":"Peacock","shortName":"Peacock","callLetters":"Peacock"},"lang":"en","region":"us"}],"type":{"id":"5","text":"foursome"},"competitors":[{"id":"1085","uid":"s:1100~l:1106~p:1085","movement":0,"sortOrder":1,"featured":false,"homeAway":"home","status":{"displayValue":"Thru 14","period":1,"teeTime":"2025-09-26T11:58Z","startHole":1,"thru":14,"displayThru":"14","playoff":false,"behindCurrentRound":false,"detail":"1 Up","type":{"id":"1","name":"STATUS_IN_PROGRESS","state":"in","completed":false,"description":"In Progress","detail":"In Progress","shortDetail":"In Progress"},"todayDetail":"1 Up"},"score":{"value":1.0,"displayValue":"1 Up","holesRemaining":18,"draw":false,"winner":false},"linescores":[{"value":4.0,"displayValue":"4","period":1,"linescores":[{"value":0.0,"displayValue":"0","period":1,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":2,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":7,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":8,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":10,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":11,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":12,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true}],"isPlayoff":false}],"team":{"id":"1","abbreviation":"USA","displayName":"USA","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/usa.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/usa.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":6007,"athlete":{"id":"6007","uid":"s:1100~a:6007","displayName":"Patrick Cantlay","shortName":"P. Cantlay","lastName":"Cantlay","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/6007.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"CA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/6007/patrick-cantlay","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":10140,"athlete":{"id":"10140","uid":"s:1100~a:10140","displayName":"Xander Schauffele","shortName":"X. Schauffele","lastName":"Schauffele","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/10140.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/usa.png","alt":"United States"},"birthPlace":{"countryAbbreviation":"usa","stateAbbreviation":"CA"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/10140/xander-schauffele","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]},{"id":"131212","uid":"s:1100~l:1106~p:131212","movement":0,"sortOrder":2,"featured":false,"homeAway":"away","status":{"displayValue":"Thru 14","period":1,"teeTime":"2025-09-26T11:58Z","startHole":1,"thru":14,"displayThru":"14","playoff":false,"behindCurrentRound":false,"detail":"","type":{"id":"1","name":"STATUS_IN_PROGRESS","state":"in","completed":false,"description":"In Progress","detail":"In Progress","shortDetail":"In Progress"},"todayDetail":""},"score":{"value":0.0,"displayValue":"","holesRemaining":18,"draw":false,"winner":false},"linescores":[{"value":3.0,"displayValue":"3","period":1,"linescores":[{"value":0.0,"displayValue":"0","period":1,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":2,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":3,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":4,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":5,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":6,"isPlayoff":false,"draw":true},{"value":1.0,"displayValue":"1","period":7,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":8,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":9,"isPlayoff":false,"draw":true},{"value":0.0,"displayValue":"0","period":10,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":11,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":12,"isPlayoff":false,"draw":false},{"value":1.0,"displayValue":"1","period":13,"isPlayoff":false,"draw":false},{"value":0.0,"displayValue":"0","period":14,"isPlayoff":false,"draw":true}],"isPlayoff":false}],"team":{"id":"2","abbreviation":"EUR","displayName":"EUR","logos":[{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500/eur.png&w=84&h=84","alt":"","rel":["full","default"],"width":500,"height":500},{"href":"https://a.espncdn.com/combiner/i?img=/i/teamlogos/countries/500-dark/eur.png&w=84&h=84","alt":"","rel":["full","dark"],"width":500,"height":500}]},"roster":[{"playerId":11378,"athlete":{"id":"11378","uid":"s:1100~a:11378","displayName":"Robert MacIntyre","shortName":"R. MacIntyre","lastName":"MacIntyre","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/11378.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/sct.png","alt":"Scotland"},"birthPlace":{"countryAbbreviation":"sct"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/11378/robert-macintyre","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}},{"playerId":4364873,"athlete":{"id":"4364873","uid":"s:1100~a:4364873","displayName":"Viktor Hovland","shortName":"V. Hovland","lastName":"Hovland","amateur":false,"headshot":{"href":"https://a.espncdn.com/i/headshots/golf/players/full/4364873.png"},"flag":{"href":"https://a.espncdn.com/i/teamlogos/countries/500/nor.png","alt":"Norway"},"birthPlace":{"countryAbbreviation":"nor"},"links":[{"language":"en-US","rel":["playercard","desktop","athlete"],"href":"https://www.espn.com/golf/player/_/id/4364873/viktor-hovland","text":"Player Card","shortText":"Player Card","isExternal":false,"isPremium":false,"isHidden":false}]}}]}],"leaders":[],"holeByHoleSource":{"id":"0","state":"none","description":"none"},"scoringSystem":{"id":"2","name":"Match"}}]],"courses":[{"id":"74","name":"Bethpage State Park (Black Course)","totalYards":7401,"shotsToPar":70,"parIn":35,"parOut":35,"host":true,"holes":[{"number":1,"shotsToPar":4,"totalYards":397},{"number":2,"shotsToPar":4,"totalYards":389},{"number":3,"shotsToPar":3,"totalYards":210},{"number":4,"shotsToPar":5,"totalYards":517},{"number":5,"shotsToPar":4,"totalYards":478},{"number":6,"shotsToPar":4,"totalYards":408},{"number":7,"shotsToPar":4,"totalYards":524},{"number":8,"shotsToPar":3,"totalYards":210},{"number":9,"shotsToPar":4,"totalYards":460},{"number":10,"shotsToPar":4,"totalYards":502},{"number":11,"shotsToPar":4,"totalYards":435},{"number":12,"shotsToPar":4,"totalYards":496},{"number":13,"shotsToPar":5,"totalYards":608},{"number":14,"shotsToPar":3,"totalYards":161},{"number":15,"shotsToPar":4,"totalYards":477},{"number":16,"shotsToPar":4,"totalYards":539},{"number":17,"shotsToPar":3,"totalYards":179},{"number":18,"shotsToPar":4,"totalYards":411}],"address":{"city":"Farmingdale","state":"NY","country":"United States","zipCode":"11735"}}]}]}

This will take some re-write of the code to, essentially, catch when we have such a tournament, and then basically create a whole new card format. Not on the immediate to-do list, but if anyone wants to tackle, go for it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions