refactor: consolidate data/ into single root directory, fix historical player names
Merge data/wikipedia/{year}/ into data/{year}/ so there is a single
canonical location for World Cup JSON files. Update scrape and seed
scripts to use data/ instead of data/wikipedia/.
Re-scraped all 22 years (1930-2022) with fixed player name extraction
(full name from <a title="..."> rather than abbreviated display text)
so historical goals now show e.g. "Thomas Müller" not "Müller".
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+94
-231
@@ -24,7 +24,7 @@
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Causio",
|
||||
"name": "Franco Causio",
|
||||
"minute": 38
|
||||
}
|
||||
],
|
||||
@@ -48,21 +48,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 38
|
||||
},
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 105
|
||||
},
|
||||
{
|
||||
"name": "Bertoni",
|
||||
"name": "Daniel Bertoni",
|
||||
"minute": 115
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Nanninga",
|
||||
"name": "Dick Nanninga",
|
||||
"minute": 82
|
||||
}
|
||||
],
|
||||
@@ -83,17 +83,17 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Rossi",
|
||||
"name": "Paolo Rossi",
|
||||
"minute": 29
|
||||
},
|
||||
{
|
||||
"name": "Zaccarelli",
|
||||
"name": "Renato Zaccarelli",
|
||||
"minute": 54
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Lacombe",
|
||||
"name": "Bernard Lacombe",
|
||||
"minute": 1
|
||||
}
|
||||
],
|
||||
@@ -114,17 +114,17 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Luque",
|
||||
"name": "Leopoldo Luque",
|
||||
"minute": 14
|
||||
},
|
||||
{
|
||||
"name": "Bertoni",
|
||||
"name": "Daniel Bertoni",
|
||||
"minute": 83
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Csapó",
|
||||
"name": "Károly Csapó",
|
||||
"minute": 9
|
||||
}
|
||||
],
|
||||
@@ -145,21 +145,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Rossi",
|
||||
"name": "Paolo Rossi",
|
||||
"minute": 34
|
||||
},
|
||||
{
|
||||
"name": "Bettega",
|
||||
"name": "Roberto Bettega",
|
||||
"minute": 35
|
||||
},
|
||||
{
|
||||
"name": "Benetti",
|
||||
"name": "Romeo Benetti",
|
||||
"minute": 61
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "A. Tóth",
|
||||
"name": "András Tóth",
|
||||
"minute": 81,
|
||||
"penalty": true
|
||||
}
|
||||
@@ -181,18 +181,18 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Passarella",
|
||||
"name": "Daniel Passarella",
|
||||
"minute": 45,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Luque",
|
||||
"name": "Leopoldo Luque",
|
||||
"minute": 73
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Platini",
|
||||
"name": "Michel Platini",
|
||||
"minute": 60
|
||||
}
|
||||
],
|
||||
@@ -213,21 +213,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Lopez",
|
||||
"name": "Christian Lopez",
|
||||
"minute": 23
|
||||
},
|
||||
{
|
||||
"name": "Berdoll",
|
||||
"name": "Marc Berdoll",
|
||||
"minute": 38
|
||||
},
|
||||
{
|
||||
"name": "Rocheteau",
|
||||
"name": "Dominique Rocheteau",
|
||||
"minute": 42
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Zombori",
|
||||
"name": "Sándor Zombori",
|
||||
"minute": 41
|
||||
}
|
||||
],
|
||||
@@ -248,7 +248,7 @@
|
||||
},
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Bettega",
|
||||
"name": "Roberto Bettega",
|
||||
"minute": 67
|
||||
}
|
||||
],
|
||||
@@ -259,7 +259,7 @@
|
||||
"group": "Group 2",
|
||||
"date": "1978-06-01",
|
||||
"time": "15:00",
|
||||
"team1": "West Germany",
|
||||
"team1": "Germany",
|
||||
"team2": "Poland",
|
||||
"score": {
|
||||
"ft": [
|
||||
@@ -284,21 +284,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Kaabi",
|
||||
"name": "Ali Kaabi",
|
||||
"minute": 55
|
||||
},
|
||||
{
|
||||
"name": "Ghommidh",
|
||||
"name": "Néjib Ghommidh",
|
||||
"minute": 79
|
||||
},
|
||||
{
|
||||
"name": "Dhouieb",
|
||||
"name": "Mokhtar Dhouieb",
|
||||
"minute": 87
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Vázquez Ayala",
|
||||
"name": "Arturo Vázquez Ayala",
|
||||
"minute": 45,
|
||||
"penalty": true
|
||||
}
|
||||
@@ -310,7 +310,7 @@
|
||||
"group": "Group 2",
|
||||
"date": "1978-06-06",
|
||||
"time": "16:45",
|
||||
"team1": "West Germany",
|
||||
"team1": "Germany",
|
||||
"team2": "Mexico",
|
||||
"score": {
|
||||
"ft": [
|
||||
@@ -320,27 +320,27 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "D. Müller",
|
||||
"name": "Dieter Müller",
|
||||
"minute": 15
|
||||
},
|
||||
{
|
||||
"name": "H. Müller",
|
||||
"name": "Hansi Müller",
|
||||
"minute": 30
|
||||
},
|
||||
{
|
||||
"name": "Rummenigge",
|
||||
"name": "Karl-Heinz Rummenigge",
|
||||
"minute": 38
|
||||
},
|
||||
{
|
||||
"name": "Rummenigge",
|
||||
"name": "Karl-Heinz Rummenigge",
|
||||
"minute": 73
|
||||
},
|
||||
{
|
||||
"name": "Flohe",
|
||||
"name": "Heinz Flohe",
|
||||
"minute": 44
|
||||
},
|
||||
{
|
||||
"name": "Flohe",
|
||||
"name": "Heinz Flohe",
|
||||
"minute": 89
|
||||
}
|
||||
],
|
||||
@@ -361,7 +361,7 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Lato",
|
||||
"name": "Grzegorz Lato",
|
||||
"minute": 43
|
||||
}
|
||||
],
|
||||
@@ -372,7 +372,7 @@
|
||||
"group": "Group 2",
|
||||
"date": "1978-06-10",
|
||||
"time": "16:45",
|
||||
"team1": "West Germany",
|
||||
"team1": "Germany",
|
||||
"team2": "Tunisia",
|
||||
"score": {
|
||||
"ft": [
|
||||
@@ -397,163 +397,26 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Boniek",
|
||||
"name": "Zbigniew Boniek",
|
||||
"minute": 43
|
||||
},
|
||||
{
|
||||
"name": "Boniek",
|
||||
"name": "Zbigniew Boniek",
|
||||
"minute": 84
|
||||
},
|
||||
{
|
||||
"name": "Deyna",
|
||||
"name": "Kazimierz Deyna",
|
||||
"minute": 56
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Rangel",
|
||||
"name": "Víctor Rangel",
|
||||
"minute": 52
|
||||
}
|
||||
],
|
||||
"ground": "Estadio Gigante de Arroyito, Rosario"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-03",
|
||||
"time": "13:45",
|
||||
"team1": "Austria",
|
||||
"team2": "Spain",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Schachner",
|
||||
"minute": 10
|
||||
},
|
||||
{
|
||||
"name": "Krankl",
|
||||
"minute": 76
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Dani",
|
||||
"minute": 21
|
||||
}
|
||||
],
|
||||
"ground": "Estadio José Amalfitani, Buenos Aires"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-03",
|
||||
"time": "13:45",
|
||||
"team1": "Brazil",
|
||||
"team2": "Sweden",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Reinaldo",
|
||||
"minute": 45
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Sjöberg",
|
||||
"minute": 37
|
||||
}
|
||||
],
|
||||
"ground": "Estadio José Maria Minella, Mar del Plata"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-07",
|
||||
"time": "13:45",
|
||||
"team1": "Austria",
|
||||
"team2": "Sweden",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Krankl",
|
||||
"minute": 42,
|
||||
"penalty": true
|
||||
}
|
||||
],
|
||||
"ground": "Estadio José Amalfitani, Buenos Aires"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-07",
|
||||
"time": "13:45",
|
||||
"team1": "Brazil",
|
||||
"team2": "Spain",
|
||||
"score": {
|
||||
"ft": [
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"ground": "Estadio José Maria Minella, Mar del Plata"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-11",
|
||||
"time": "13:45",
|
||||
"team1": "Spain",
|
||||
"team2": "Sweden",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Asensi",
|
||||
"minute": 75
|
||||
}
|
||||
],
|
||||
"ground": "Estadio José Amalfitani, Buenos Aires"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 3",
|
||||
"date": "1978-06-11",
|
||||
"time": "13:45",
|
||||
"team1": "Brazil",
|
||||
"team2": "Austria",
|
||||
"score": {
|
||||
"ft": [
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Dinamite",
|
||||
"minute": 40
|
||||
}
|
||||
],
|
||||
"ground": "Estadio José Maria Minella, Mar del Plata"
|
||||
},
|
||||
{
|
||||
"round": "Group stage",
|
||||
"group": "Group 4",
|
||||
@@ -569,21 +432,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Cueto",
|
||||
"name": "César Cueto",
|
||||
"minute": 43
|
||||
},
|
||||
{
|
||||
"name": "Cubillas",
|
||||
"name": "Teófilo Cubillas",
|
||||
"minute": 71
|
||||
},
|
||||
{
|
||||
"name": "Cubillas",
|
||||
"name": "Teófilo Cubillas",
|
||||
"minute": 77
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Jordan",
|
||||
"name": "Joe Jordan",
|
||||
"minute": 14
|
||||
}
|
||||
],
|
||||
@@ -604,16 +467,16 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Rensenbrink",
|
||||
"name": "Rob Rensenbrink",
|
||||
"minute": 40,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Rensenbrink",
|
||||
"name": "Rob Rensenbrink",
|
||||
"minute": 62
|
||||
},
|
||||
{
|
||||
"name": "Rensenbrink",
|
||||
"name": "Rob Rensenbrink",
|
||||
"minute": 78,
|
||||
"penalty": true
|
||||
}
|
||||
@@ -635,14 +498,14 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Eskandarian",
|
||||
"name": "Andranik Eskandarian",
|
||||
"minute": 43,
|
||||
"owngoal": true
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Danaeifard",
|
||||
"name": "Iraj Danaeifard",
|
||||
"minute": 60
|
||||
}
|
||||
],
|
||||
@@ -678,27 +541,27 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Velásquez",
|
||||
"name": "José Velásquez",
|
||||
"minute": 2
|
||||
},
|
||||
{
|
||||
"name": "Cubillas",
|
||||
"name": "Teófilo Cubillas",
|
||||
"minute": 36,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Cubillas",
|
||||
"name": "Teófilo Cubillas",
|
||||
"minute": 39,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Cubillas",
|
||||
"name": "Teófilo Cubillas",
|
||||
"minute": 79
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Rowshan",
|
||||
"name": "Hassan Rowshan",
|
||||
"minute": 41
|
||||
}
|
||||
],
|
||||
@@ -719,27 +582,27 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Dalglish",
|
||||
"name": "Kenny Dalglish",
|
||||
"minute": 45
|
||||
},
|
||||
{
|
||||
"name": "A. Gemmill",
|
||||
"name": "Archie Gemmill",
|
||||
"minute": 46,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "A. Gemmill",
|
||||
"name": "Archie Gemmill",
|
||||
"minute": 68
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Rensenbrink",
|
||||
"name": "Rob Rensenbrink",
|
||||
"minute": 34,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Rep",
|
||||
"name": "Johnny Rep",
|
||||
"minute": 71
|
||||
}
|
||||
],
|
||||
@@ -760,30 +623,30 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Obermayer",
|
||||
"name": "Erich Obermayer",
|
||||
"minute": 80
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Brandts",
|
||||
"name": "Ernie Brandts",
|
||||
"minute": 6
|
||||
},
|
||||
{
|
||||
"name": "Rensenbrink",
|
||||
"name": "Rob Rensenbrink",
|
||||
"minute": 35,
|
||||
"penalty": true
|
||||
},
|
||||
{
|
||||
"name": "Rep",
|
||||
"name": "Johnny Rep",
|
||||
"minute": 36
|
||||
},
|
||||
{
|
||||
"name": "Rep",
|
||||
"name": "Johnny Rep",
|
||||
"minute": 53
|
||||
},
|
||||
{
|
||||
"name": "W. van de Kerkhof",
|
||||
"name": "Willy van de Kerkhof",
|
||||
"minute": 82
|
||||
}
|
||||
],
|
||||
@@ -795,7 +658,7 @@
|
||||
"date": "1978-06-14",
|
||||
"time": "13:45",
|
||||
"team1": "Italy",
|
||||
"team2": "West Germany",
|
||||
"team2": "Germany",
|
||||
"score": {
|
||||
"ft": [
|
||||
0,
|
||||
@@ -810,7 +673,7 @@
|
||||
"date": "1978-06-18",
|
||||
"time": "16:45",
|
||||
"team1": "Netherlands",
|
||||
"team2": "West Germany",
|
||||
"team2": "Germany",
|
||||
"score": {
|
||||
"ft": [
|
||||
2,
|
||||
@@ -819,21 +682,21 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Haan",
|
||||
"name": "Arie Haan",
|
||||
"minute": 27
|
||||
},
|
||||
{
|
||||
"name": "R. van de Kerkhof",
|
||||
"name": "René van de Kerkhof",
|
||||
"minute": 82
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Abramczik",
|
||||
"name": "Rüdiger Abramczik",
|
||||
"minute": 3
|
||||
},
|
||||
{
|
||||
"name": "D. Müller",
|
||||
"name": "Dieter Müller",
|
||||
"minute": 70
|
||||
}
|
||||
],
|
||||
@@ -854,7 +717,7 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Rossi",
|
||||
"name": "Paolo Rossi",
|
||||
"minute": 13
|
||||
}
|
||||
],
|
||||
@@ -866,7 +729,7 @@
|
||||
"date": "1978-06-21",
|
||||
"time": "13:45",
|
||||
"team1": "Austria",
|
||||
"team2": "West Germany",
|
||||
"team2": "Germany",
|
||||
"score": {
|
||||
"ft": [
|
||||
3,
|
||||
@@ -875,26 +738,26 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Vogts",
|
||||
"name": "Berti Vogts",
|
||||
"minute": 59,
|
||||
"owngoal": true
|
||||
},
|
||||
{
|
||||
"name": "Krankl",
|
||||
"name": "Hans Krankl",
|
||||
"minute": 66
|
||||
},
|
||||
{
|
||||
"name": "Krankl",
|
||||
"name": "Hans Krankl",
|
||||
"minute": 87
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Rummenigge",
|
||||
"name": "Karl-Heinz Rummenigge",
|
||||
"minute": 19
|
||||
},
|
||||
{
|
||||
"name": "Hölzenbein",
|
||||
"name": "Bernd Hölzenbein",
|
||||
"minute": 68
|
||||
}
|
||||
],
|
||||
@@ -915,18 +778,18 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Brandts",
|
||||
"name": "Ernie Brandts",
|
||||
"minute": 19,
|
||||
"owngoal": true
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Brandts",
|
||||
"name": "Ernie Brandts",
|
||||
"minute": 49
|
||||
},
|
||||
{
|
||||
"name": "Haan",
|
||||
"name": "Arie Haan",
|
||||
"minute": 76
|
||||
}
|
||||
],
|
||||
@@ -977,11 +840,11 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 16
|
||||
},
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 71
|
||||
}
|
||||
],
|
||||
@@ -1002,7 +865,7 @@
|
||||
},
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Szarmach",
|
||||
"name": "Andrzej Szarmach",
|
||||
"minute": 65
|
||||
}
|
||||
],
|
||||
@@ -1042,17 +905,17 @@
|
||||
"minute": 13
|
||||
},
|
||||
{
|
||||
"name": "Dinamite",
|
||||
"name": "Roberto Dinamite",
|
||||
"minute": 58
|
||||
},
|
||||
{
|
||||
"name": "Dinamite",
|
||||
"name": "Roberto Dinamite",
|
||||
"minute": 63
|
||||
}
|
||||
],
|
||||
"goals2": [
|
||||
{
|
||||
"name": "Lato",
|
||||
"name": "Grzegorz Lato",
|
||||
"minute": 45
|
||||
}
|
||||
],
|
||||
@@ -1073,27 +936,27 @@
|
||||
},
|
||||
"goals1": [
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 21
|
||||
},
|
||||
{
|
||||
"name": "Kempes",
|
||||
"name": "Mario Kempes",
|
||||
"minute": 49
|
||||
},
|
||||
{
|
||||
"name": "Tarantini",
|
||||
"name": "Alberto Tarantini",
|
||||
"minute": 43
|
||||
},
|
||||
{
|
||||
"name": "Luque",
|
||||
"name": "Leopoldo Luque",
|
||||
"minute": 50
|
||||
},
|
||||
{
|
||||
"name": "Luque",
|
||||
"name": "Leopoldo Luque",
|
||||
"minute": 72
|
||||
},
|
||||
{
|
||||
"name": "Houseman",
|
||||
"name": "René Houseman",
|
||||
"minute": 67
|
||||
}
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user