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
+69 -69
View File
@@ -14,16 +14,16 @@
},
"goals1": [
{
"name": "Iraragorri",
"name": "José Iraragorri",
"minute": 18,
"penalty": true
},
{
"name": "Iraragorri",
"name": "José Iraragorri",
"minute": 25
},
{
"name": "Lángara",
"name": "Isidro Lángara",
"minute": 29
}
],
@@ -49,29 +49,29 @@
},
"goals1": [
{
"name": "Teleki",
"name": "Pál Teleki",
"minute": 11
},
{
"name": "Toldi",
"name": "Géza Toldi",
"minute": 31
},
{
"name": "Toldi",
"name": "Géza Toldi",
"minute": 61
},
{
"name": "Vincze",
"name": "Jenő Vincze",
"minute": 53
}
],
"goals2": [
{
"name": "Fawzi",
"name": "Abdulrahman Fawzi",
"minute": 35
},
{
"name": "Fawzi",
"name": "Abdulrahman Fawzi",
"minute": 39
}
],
@@ -91,25 +91,25 @@
},
"goals1": [
{
"name": "Kielholz",
"name": "Leopold Kielholz",
"minute": 7
},
{
"name": "Kielholz",
"name": "Leopold Kielholz",
"minute": 43
},
{
"name": "Abegglen",
"name": "André Abegglen",
"minute": 66
}
],
"goals2": [
{
"name": "Smit",
"name": "Kick Smit",
"minute": 29
},
{
"name": "Vente",
"name": "Leen Vente",
"minute": 69
}
],
@@ -129,37 +129,37 @@
},
"goals1": [
{
"name": "Schiavio",
"name": "Angelo Schiavio",
"minute": 18
},
{
"name": "Schiavio",
"name": "Angelo Schiavio",
"minute": 29
},
{
"name": "Schiavio",
"name": "Angelo Schiavio",
"minute": 64
},
{
"name": "Orsi",
"name": "Raimundo Orsi",
"minute": 20
},
{
"name": "Orsi",
"name": "Raimundo Orsi",
"minute": 69
},
{
"name": "Ferrari",
"name": "Giovanni Ferrari",
"minute": 63
},
{
"name": "Meazza",
"name": "Giuseppe Meazza",
"minute": 90
}
],
"goals2": [
{
"name": "Donelli",
"name": "Aldo Donelli",
"minute": 57
}
],
@@ -179,17 +179,17 @@
},
"goals1": [
{
"name": "Puč",
"name": "Antonín Puč",
"minute": 50
},
{
"name": "Nejedlý",
"name": "Oldřich Nejedlý",
"minute": 67
}
],
"goals2": [
{
"name": "Dobay",
"name": "Ștefan Dobay",
"minute": 11
}
],
@@ -209,25 +209,25 @@
},
"goals1": [
{
"name": "Jonasson",
"name": "Sven Jonasson",
"minute": 9
},
{
"name": "Jonasson",
"name": "Sven Jonasson",
"minute": 67
},
{
"name": "Kroon",
"name": "Knut Kroon",
"minute": 79
}
],
"goals2": [
{
"name": "Belis",
"name": "Ernesto Belis",
"minute": 4
},
{
"name": "Galateo",
"name": "Alberto Galateo",
"minute": 48
}
],
@@ -251,25 +251,25 @@
},
"goals1": [
{
"name": "Sindelar",
"name": "Matthias Sindelar",
"minute": 44
},
{
"name": "Schall",
"name": "Anton Schall",
"minute": 93
},
{
"name": "Bican",
"name": "Josef Bican",
"minute": 109
}
],
"goals2": [
{
"name": "Nicolas",
"name": "Jean Nicolas",
"minute": 18
},
{
"name": "Verriest",
"name": "Georges Verriest",
"minute": 116,
"penalty": true
}
@@ -290,33 +290,33 @@
},
"goals1": [
{
"name": "Kobierski",
"name": "Stanislaus Kobierski",
"minute": 25
},
{
"name": "Siffling",
"name": "Otto Siffling",
"minute": 49
},
{
"name": "Conen",
"name": "Edmund Conen",
"minute": 66
},
{
"name": "Conen",
"name": "Edmund Conen",
"minute": 70
},
{
"name": "Conen",
"name": "Edmund Conen",
"minute": 87
}
],
"goals2": [
{
"name": "Voorhoof",
"name": "Bernard Voorhoof",
"minute": 29
},
{
"name": "Voorhoof",
"name": "Bernard Voorhoof",
"minute": 43
}
],
@@ -336,17 +336,17 @@
},
"goals1": [
{
"name": "Horvath",
"name": "Johann Horvath",
"minute": 8
},
{
"name": "Zischek",
"name": "Karl Zischek",
"minute": 51
}
],
"goals2": [
{
"name": "Sárosi",
"name": "György Sárosi",
"minute": 60,
"penalty": true
}
@@ -371,13 +371,13 @@
},
"goals1": [
{
"name": "Ferrari",
"name": "Giovanni Ferrari",
"minute": 44
}
],
"goals2": [
{
"name": "Regueiro",
"name": "Luis Regueiro",
"minute": 30
}
],
@@ -397,17 +397,17 @@
},
"goals1": [
{
"name": "Hohmann",
"name": "Karl Hohmann",
"minute": 60
},
{
"name": "Hohmann",
"name": "Karl Hohmann",
"minute": 63
}
],
"goals2": [
{
"name": "Dunker",
"name": "Gösta Dunker",
"minute": 82
}
],
@@ -427,25 +427,25 @@
},
"goals1": [
{
"name": "Svoboda",
"name": "František Svoboda",
"minute": 24
},
{
"name": "Sobotka",
"name": "Jiří Sobotka",
"minute": 49
},
{
"name": "Nejedlý",
"name": "Oldřich Nejedlý",
"minute": 82
}
],
"goals2": [
{
"name": "Kielholz",
"name": "Leopold Kielholz",
"minute": 18
},
{
"name": "Jäggi",
"name": "Willy Jäggi",
"minute": 78
}
],
@@ -465,7 +465,7 @@
},
"goals1": [
{
"name": "Meazza",
"name": "Giuseppe Meazza",
"minute": 11
}
],
@@ -485,7 +485,7 @@
},
"goals1": [
{
"name": "Guaita",
"name": "Enrique Guaita",
"minute": 19
}
],
@@ -505,21 +505,21 @@
},
"goals1": [
{
"name": "Nejedlý",
"name": "Oldřich Nejedlý",
"minute": 21
},
{
"name": "Nejedlý",
"name": "Oldřich Nejedlý",
"minute": 69
},
{
"name": "Nejedlý",
"name": "Oldřich Nejedlý",
"minute": 80
}
],
"goals2": [
{
"name": "Noack",
"name": "Rudolf Noack",
"minute": 62
}
],
@@ -539,25 +539,25 @@
},
"goals1": [
{
"name": "Lehner",
"name": "Ernst Lehner",
"minute": 1
},
{
"name": "Lehner",
"name": "Ernst Lehner",
"minute": 42
},
{
"name": "Conen",
"name": "Edmund Conen",
"minute": 27
}
],
"goals2": [
{
"name": "Horvath",
"name": "Johann Horvath",
"minute": 28
},
{
"name": "Sesta",
"name": "Karl Sesta",
"minute": 54
}
],
@@ -581,17 +581,17 @@
},
"goals1": [
{
"name": "Orsi",
"name": "Raimundo Orsi",
"minute": 81
},
{
"name": "Schiavio",
"name": "Angelo Schiavio",
"minute": 95
}
],
"goals2": [
{
"name": "Puč",
"name": "Antonín Puč",
"minute": 71
}
],