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:
2026-06-15 18:27:35 +02:00
parent 9ce2a4e27c
commit d37ebe201e
48 changed files with 2488 additions and 3630 deletions
+67 -67
View File
@@ -15,25 +15,25 @@
},
"goals1": [
{
"name": "L. Laurent",
"name": "Lucien Laurent",
"minute": 19
},
{
"name": "Langiller",
"name": "Marcel Langiller",
"minute": 40
},
{
"name": "Maschinot",
"name": "André Maschinot",
"minute": 43
},
{
"name": "Maschinot",
"name": "André Maschinot",
"minute": 87
}
],
"goals2": [
{
"name": "Carreño",
"name": "Juan Carreño",
"minute": 70
}
],
@@ -54,7 +54,7 @@
},
"goals1": [
{
"name": "Monti",
"name": "Luis Monti",
"minute": 81
}
],
@@ -75,15 +75,15 @@
},
"goals1": [
{
"name": "Vidal",
"name": "Carlos Vidal",
"minute": 3
},
{
"name": "Vidal",
"name": "Carlos Vidal",
"minute": 65
},
{
"name": "M. Rosas",
"name": "Manuel Rosas",
"minute": 52,
"owngoal": true
}
@@ -105,7 +105,7 @@
},
"goals1": [
{
"name": "Subiabre",
"name": "Guillermo Subiabre",
"minute": 67
}
],
@@ -126,42 +126,42 @@
},
"goals1": [
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 8
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 17
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 80
},
{
"name": "Zumelzú",
"name": "Adolfo Zumelzú",
"minute": 12
},
{
"name": "Zumelzú",
"name": "Adolfo Zumelzú",
"minute": 55
},
{
"name": "Varallo",
"name": "Francisco Varallo",
"minute": 53
}
],
"goals2": [
{
"name": "M. Rosas",
"name": "Manuel Rosas",
"minute": 42,
"penalty": true
},
{
"name": "M. Rosas",
"name": "Manuel Rosas",
"minute": 65
},
{
"name": "Gayón",
"name": "Roberto Gayón",
"minute": 75
}
],
@@ -182,21 +182,21 @@
},
"goals1": [
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 12
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 13
},
{
"name": "M. Evaristo",
"name": "Mario Evaristo",
"minute": 51
}
],
"goals2": [
{
"name": "Subiabre",
"name": "Guillermo Subiabre",
"minute": 15
}
],
@@ -217,11 +217,11 @@
},
"goals1": [
{
"name": "Tirnanić",
"name": "Aleksandar Tirnanić",
"minute": 21
},
{
"name": "Bek",
"name": "Ivan Bek",
"minute": 30
}
],
@@ -248,19 +248,19 @@
},
"goals1": [
{
"name": "Bek",
"name": "Ivan Bek",
"minute": 60
},
{
"name": "Bek",
"name": "Ivan Bek",
"minute": 67
},
{
"name": "Marjanović",
"name": "Blagoje Marjanović",
"minute": 65
},
{
"name": "Vujadinović",
"name": "Đorđe Vujadinović",
"minute": 85
}
],
@@ -281,11 +281,11 @@
},
"goals1": [
{
"name": "Moderato",
"name": "Moderato Wisintainer",
"minute": 37
},
{
"name": "Moderato",
"name": "Moderato Wisintainer",
"minute": 73
},
{
@@ -314,21 +314,21 @@
},
"goals1": [
{
"name": "Deșu",
"name": "Adalbert Deșu",
"minute": 1
},
{
"name": "Stanciu",
"name": "Constantin Stanciu",
"minute": 79
},
{
"name": "Kovács",
"name": "Miklós Kovács",
"minute": 89
}
],
"goals2": [
{
"name": "De Souza",
"name": "Luis de Souza",
"minute": 75
}
],
@@ -349,7 +349,7 @@
},
"goals1": [
{
"name": "Castro",
"name": "Héctor Castro",
"minute": 65
}
],
@@ -370,19 +370,19 @@
},
"goals1": [
{
"name": "Dorado",
"name": "Pablo Dorado",
"minute": 7
},
{
"name": "Scarone",
"name": "Héctor Scarone",
"minute": 26
},
{
"name": "Anselmo",
"name": "Peregrino Anselmo",
"minute": 31
},
{
"name": "Cea",
"name": "Pedro Cea",
"minute": 35
}
],
@@ -403,15 +403,15 @@
},
"goals1": [
{
"name": "McGhee",
"name": "Bart McGhee",
"minute": 23
},
{
"name": "Florie",
"name": "Tom Florie",
"minute": 45
},
{
"name": "Patenaude",
"name": "Bert Patenaude",
"minute": 69
}
],
@@ -432,15 +432,15 @@
},
"goals1": [
{
"name": "Patenaude",
"name": "Bert Patenaude",
"minute": 10
},
{
"name": "Patenaude",
"name": "Bert Patenaude",
"minute": 15
},
{
"name": "Patenaude",
"name": "Bert Patenaude",
"minute": 50
}
],
@@ -461,7 +461,7 @@
},
"goals1": [
{
"name": "Vargas Peña",
"name": "Luis Vargas Peña",
"minute": 40
}
],
@@ -481,33 +481,33 @@
},
"goals1": [
{
"name": "Monti",
"name": "Luis Monti",
"minute": 20
},
{
"name": "Scopelli",
"name": "Alejandro Scopelli",
"minute": 56
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 69
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 87
},
{
"name": "Peucelle",
"name": "Carlos Peucelle",
"minute": 80
},
{
"name": "Peucelle",
"name": "Carlos Peucelle",
"minute": 85
}
],
"goals2": [
{
"name": "Brown",
"name": "Jim Brown",
"minute": 89
}
],
@@ -527,33 +527,33 @@
},
"goals1": [
{
"name": "Cea",
"name": "Pedro Cea",
"minute": 18
},
{
"name": "Cea",
"name": "Pedro Cea",
"minute": 67
},
{
"name": "Cea",
"name": "Pedro Cea",
"minute": 72
},
{
"name": "Anselmo",
"name": "Peregrino Anselmo",
"minute": 20
},
{
"name": "Anselmo",
"name": "Peregrino Anselmo",
"minute": 31
},
{
"name": "Iriarte",
"name": "Santos Iriarte",
"minute": 61
}
],
"goals2": [
{
"name": "Vujadinović",
"name": "Đorđe Vujadinović",
"minute": 4
}
],
@@ -573,29 +573,29 @@
},
"goals1": [
{
"name": "Dorado",
"name": "Pablo Dorado",
"minute": 12
},
{
"name": "Cea",
"name": "Pedro Cea",
"minute": 57
},
{
"name": "Iriarte",
"name": "Santos Iriarte",
"minute": 68
},
{
"name": "Castro",
"name": "Héctor Castro",
"minute": 89
}
],
"goals2": [
{
"name": "Peucelle",
"name": "Carlos Peucelle",
"minute": 20
},
{
"name": "Stábile",
"name": "Guillermo Stábile",
"minute": 37
}
],