30 players finished

This commit is contained in:
itten
2026-08-02 17:54:45 +03:00
parent 243fc7d509
commit ce3384dd1a
43 changed files with 86 additions and 85 deletions
+29 -29
View File
@@ -1,34 +1,34 @@
Player, Club, Sum, Photo, Logo
Морган Роджерс,Челси,138 млн,tmp-player.png,chelsea.png
Эллиот Андерсон,Манчестер Сити,135 млн,tmp-player.png,manchester-city.png
Сандро Тонали,Тоттенхэм,108 млн,tmp-player.png,tottenham.png
Матеус Фернандес,Тоттенхэм,99 млн,tmp-player.png,tottenham.png
Энтони Гордон,Барселона,80 млн,tmp-player.png,barcelona.png
Гонсало Рамуш,Милан,74 млн,tmp-player.png,ajax.png
Самервилл,Аль-Хилаль,"64,5 млн",tmp-player.png,ajax.png
Жереми Жаке,Ливерпуль,"63,6 млн",tmp-player.png,liverpool.png
Ван Хекке,Тоттенхэм,60 млн,tmp-player.png,tottenham.png
Йохан Манзамби,Астон Вилла,60 млн,tmp-player.png,ajax.png
Лука Вушкович,Брайтон,54 млн,tmp-player.png,chelsea.png
Марко Палестра,Челси,57 млн,tmp-player.png,chelsea.png
Андре Сантос,Манчестер Юнайтед,"56,3 млн",tmp-player.png,chelsea.png
Марк Кукурелья,Реал,50 млн,tmp-player.png,chelsea.png
Натаниэль Браун,Бавария,50 млн,tmp-player.png,chelsea.png
Исмаэль Сайбари,Бавария,50 млн,tmp-player.png,chelsea.png
Ибрагим Конате,Реал,Свободный агент,tmp-player.png,chelsea.png
Опенда,Ювентус,"42,75 млн",tmp-player.png,chelsea.png
Тилеманс,Манчестер Юнайтед,41 млн,tmp-player.png,chelsea.png
Христос Цолис,Арсенал,40 млн,tmp-player.png,chelsea.png
Кан Ли,Атлетико,40 млн,tmp-player.png,chelsea.png
Карим Адейеми,Барселона,22 млн,tmp-player.png,chelsea.png
Гарначо,Астон Вилла,Аренда,tmp-player.png,chelsea.png
Александар Станкович,Интер,23 млн,tmp-player.png,chelsea.png
Думфрис,Реал,20 млн,tmp-player.png,chelsea.png
Гримальдо,Атлетико,22 млн,tmp-player.png,chelsea.png
Бернардо Силва,Реал,Свободный агент,tmp-player.png,chelsea.png
Оскар Мингеса,Кристал Пэлас,Свободный агент,tmp-player.png,chelsea.png
Аканжи,Интер,15 млн,tmp-player.png,chelsea.png
Альваро Мората,Комо,12 млн,tmp-player.png,chelsea.png
Эллиот Андерсон,Манчестер Сити,135 млн,elliot-anderson.png,manchester-city.png
Сандро Тонали,Тоттенхэм,108 млн,sandro-tonali.png,tottenham.png
Матеус Фернандес,Тоттенхэм,99 млн,mateus-fernandes.png,tottenham.png
Энтони Гордон,Барселона,80 млн,antony-gordon.png,barcelona.png
Гонсало Рамуш,Милан,74 млн,gonsalo-ramush.png,milan.png
Самервилл,Аль-Хилаль,"64,5 млн",samervil.png,alhilal.png
Жереми Жаке,Ливерпуль,"63,6 млн",jeremis-jaque.png,liverpool.png
Ван Хекке,Тоттенхэм,60 млн,van-hekke.png,tottenham.png
Йохан Манзамби,Астон Вилла,60 млн,johan-monzambi.png,aston-villa.png
Лука Вушкович,Брайтон,54 млн,luka-vuskovic.png,brighton.png
Марко Палестра,Челси,57 млн,marko-palestra.png,chelsea.png
Андре Сантос,Манчестер Юнайтед,"56,3 млн",andrey-santos.png,manchester-united.png
Марк Кукурелья,Реал,50 млн,kukurelya.png,real-ma.png
Натаниэль Браун,Бавария,50 млн,nataniel-braun.png,bayern-munchen.png
Исмаэль Сайбари,Бавария,50 млн,ismael-saibari.png,bayern-munchen.png
Ибрагим Конате,Реал,Свободный агент,konate.png,real-ma.png
Опенда,Ювентус,"42,75 млн", openda.png, juventus.png
Тилеманс,Манчестер Юнайтед,41 млн,tilemans.png,manchester-united.png
Христос Цолис,Арсенал,40 млн,tsolis.png,arsenal.png
Кан Ли,Атлетико,40 млн,kan-li.png,athletico-madrid.png
Карим Адейеми,Барселона,22 млн,karim-adeemi.png,barcelona.png
Гарначо,Астон Вилла,Аренда,garnacho.png,aston-villa.png
Александар Станкович,Интер,23 млн,stankovic.png,inter.png
Думфрис,Реал,20 млн,dumfris.png,real-ma.png
Гримальдо,Атлетико,22 млн,grimaldo.png,athletico-madrid.png
Бернардо Силва,Реал,Свободный агент,bernardo-silva.png,real-ma.png
Оскар Мингеса,Кристал Пэлас,Свободный агент,oscar-mingesa.png,crystal-palace.png
Аканжи,Интер,15 млн,akanzhi.png,inter.png
Альваро Мората,Комо,12 млн,morata.png,como.png
1 Player Club Sum Photo Logo
2 Морган Роджерс Челси 138 млн tmp-player.png chelsea.png
3 Эллиот Андерсон Манчестер Сити 135 млн tmp-player.png elliot-anderson.png manchester-city.png
4 Сандро Тонали Тоттенхэм 108 млн tmp-player.png sandro-tonali.png tottenham.png
5 Матеус Фернандес Тоттенхэм 99 млн tmp-player.png mateus-fernandes.png tottenham.png
6 Энтони Гордон Барселона 80 млн tmp-player.png antony-gordon.png barcelona.png
7 Гонсало Рамуш Милан 74 млн tmp-player.png gonsalo-ramush.png ajax.png milan.png
8 Самервилл Аль-Хилаль 64,5 млн tmp-player.png samervil.png ajax.png alhilal.png
9 Жереми Жаке Ливерпуль 63,6 млн tmp-player.png jeremis-jaque.png liverpool.png
10 Ван Хекке Тоттенхэм 60 млн tmp-player.png van-hekke.png tottenham.png
11 Йохан Манзамби Астон Вилла 60 млн tmp-player.png johan-monzambi.png ajax.png aston-villa.png
12 Лука Вушкович Брайтон 54 млн tmp-player.png luka-vuskovic.png chelsea.png brighton.png
13 Марко Палестра Челси 57 млн tmp-player.png marko-palestra.png chelsea.png
14 Андре Сантос Манчестер Юнайтед 56,3 млн tmp-player.png andrey-santos.png chelsea.png manchester-united.png
15 Марк Кукурелья Реал 50 млн tmp-player.png kukurelya.png chelsea.png real-ma.png
16 Натаниэль Браун Бавария 50 млн tmp-player.png nataniel-braun.png chelsea.png bayern-munchen.png
17 Исмаэль Сайбари Бавария 50 млн tmp-player.png ismael-saibari.png chelsea.png bayern-munchen.png
18 Ибрагим Конате Реал Свободный агент tmp-player.png konate.png chelsea.png real-ma.png
19 Опенда Ювентус 42,75 млн tmp-player.png openda.png chelsea.png juventus.png
20 Тилеманс Манчестер Юнайтед 41 млн tmp-player.png tilemans.png chelsea.png manchester-united.png
21 Христос Цолис Арсенал 40 млн tmp-player.png tsolis.png chelsea.png arsenal.png
22 Кан Ли Атлетико 40 млн tmp-player.png kan-li.png chelsea.png athletico-madrid.png
23 Карим Адейеми Барселона 22 млн tmp-player.png karim-adeemi.png chelsea.png barcelona.png
24 Гарначо Астон Вилла Аренда tmp-player.png garnacho.png chelsea.png aston-villa.png
25 Александар Станкович Интер 23 млн tmp-player.png stankovic.png chelsea.png inter.png
26 Думфрис Реал 20 млн tmp-player.png dumfris.png chelsea.png real-ma.png
27 Гримальдо Атлетико 22 млн tmp-player.png grimaldo.png chelsea.png athletico-madrid.png
28 Бернардо Силва Реал Свободный агент tmp-player.png bernardo-silva.png chelsea.png real-ma.png
29 Оскар Мингеса Кристал Пэлас Свободный агент tmp-player.png oscar-mingesa.png chelsea.png crystal-palace.png
30 Аканжи Интер 15 млн tmp-player.png akanzhi.png chelsea.png inter.png
31 Альваро Мората Комо 12 млн tmp-player.png morata.png chelsea.png como.png
32
33
34
Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+1 -1
View File
@@ -246,7 +246,7 @@ html, body {
.compact .price-value { font-size: 38px; }
.compact .price-value { font-size: 38px; white-space: normal; }
/* ========================================================================
Reveal animation (staggered entrance)
+52 -52
View File
@@ -3,7 +3,7 @@
{
"id": 1,
"playerName": "Морган Роджерс",
"photo": "tmp-player.png",
"photo": "players/tmp-player.png",
"team": {
"name": "Челси",
"logo": "clubs-logo/chelsea.png",
@@ -16,7 +16,7 @@
{
"id": 2,
"playerName": "Эллиот Андерсон",
"photo": "tmp-player.png",
"photo": "players/elliot-anderson.png",
"team": {
"name": "Манчестер Сити",
"logo": "clubs-logo/manchester-city.png",
@@ -29,7 +29,7 @@
{
"id": 3,
"playerName": "Сандро Тонали",
"photo": "tmp-player.png",
"photo": "players/sandro-tonali.png",
"team": {
"name": "Тоттенхэм",
"logo": "clubs-logo/tottenham.png",
@@ -42,7 +42,7 @@
{
"id": 4,
"playerName": "Матеус Фернандес",
"photo": "tmp-player.png",
"photo": "players/mateus-fernandes.png",
"team": {
"name": "Тоттенхэм",
"logo": "clubs-logo/tottenham.png",
@@ -55,7 +55,7 @@
{
"id": 5,
"playerName": "Энтони Гордон",
"photo": "tmp-player.png",
"photo": "players/antony-gordon.png",
"team": {
"name": "Барселона",
"logo": "clubs-logo/barcelona.png",
@@ -68,10 +68,10 @@
{
"id": 6,
"playerName": "Гонсало Рамуш",
"photo": "tmp-player.png",
"photo": "players/gonsalo-ramush.png",
"team": {
"name": "Милан",
"logo": "clubs-logo/ajax.png",
"logo": "clubs-logo/milan.png",
"color": "#FB090B",
"accent": "#000000"
},
@@ -81,10 +81,10 @@
{
"id": 7,
"playerName": "Самервилл",
"photo": "tmp-player.png",
"photo": "players/samervil.png",
"team": {
"name": "Аль-Хилаль",
"logo": "clubs-logo/ajax.png",
"logo": "clubs-logo/alhilal.png",
"color": "#1B458F",
"accent": "#FFFFFF"
},
@@ -94,7 +94,7 @@
{
"id": 8,
"playerName": "Жереми Жаке",
"photo": "tmp-player.png",
"photo": "players/jeremis-jaque.png",
"team": {
"name": "Ливерпуль",
"logo": "clubs-logo/liverpool.png",
@@ -107,7 +107,7 @@
{
"id": 9,
"playerName": "Ван Хекке",
"photo": "tmp-player.png",
"photo": "players/van-hekke.png",
"team": {
"name": "Тоттенхэм",
"logo": "clubs-logo/tottenham.png",
@@ -120,10 +120,10 @@
{
"id": 10,
"playerName": "Йохан Манзамби",
"photo": "tmp-player.png",
"photo": "players/johan-monzambi.png",
"team": {
"name": "Астон Вилла",
"logo": "clubs-logo/ajax.png",
"logo": "clubs-logo/aston-villa.png",
"color": "#95BFE5",
"accent": "#670E36"
},
@@ -133,10 +133,10 @@
{
"id": 11,
"playerName": "Лука Вушкович",
"photo": "tmp-player.png",
"photo": "players/luka-vuskovic.png",
"team": {
"name": "Брайтон",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/brighton.png",
"color": "#0057B8",
"accent": "#FFCD00"
},
@@ -146,7 +146,7 @@
{
"id": 12,
"playerName": "Марко Палестра",
"photo": "tmp-player.png",
"photo": "players/marko-palestra.png",
"team": {
"name": "Челси",
"logo": "clubs-logo/chelsea.png",
@@ -159,10 +159,10 @@
{
"id": 13,
"playerName": "Андре Сантос",
"photo": "tmp-player.png",
"photo": "players/andrey-santos.png",
"team": {
"name": "Манчестер Юнайтед",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/manchester-united.png",
"color": "#DA291C",
"accent": "#FFE500"
},
@@ -172,10 +172,10 @@
{
"id": 14,
"playerName": "Марк Кукурелья",
"photo": "tmp-player.png",
"photo": "players/kukurelya.png",
"team": {
"name": "Реал",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/real-ma.png",
"color": "#FEBE10",
"accent": "#00529F"
},
@@ -185,10 +185,10 @@
{
"id": 15,
"playerName": "Натаниэль Браун",
"photo": "tmp-player.png",
"photo": "players/nataniel-braun.png",
"team": {
"name": "Бавария",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/bayern-munchen.png",
"color": "#DC052D",
"accent": "#0066B2"
},
@@ -198,10 +198,10 @@
{
"id": 16,
"playerName": "Исмаэль Сайбари",
"photo": "tmp-player.png",
"photo": "players/ismael-saibari.png",
"team": {
"name": "Бавария",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/bayern-munchen.png",
"color": "#DC052D",
"accent": "#0066B2"
},
@@ -211,10 +211,10 @@
{
"id": 17,
"playerName": "Ибрагим Конате",
"photo": "tmp-player.png",
"photo": "players/konate.png",
"team": {
"name": "Реал",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/real-ma.png",
"color": "#FEBE10",
"accent": "#00529F"
},
@@ -224,10 +224,10 @@
{
"id": 18,
"playerName": "Опенда",
"photo": "tmp-player.png",
"photo": "players/openda.png",
"team": {
"name": "Ювентус",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/juventus.png",
"color": "#000000",
"accent": "#FFFFFF"
},
@@ -237,10 +237,10 @@
{
"id": 19,
"playerName": "Тилеманс",
"photo": "tmp-player.png",
"photo": "players/tilemans.png",
"team": {
"name": "Манчестер Юнайтед",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/manchester-united.png",
"color": "#DA291C",
"accent": "#FFE500"
},
@@ -250,10 +250,10 @@
{
"id": 20,
"playerName": "Христос Цолис",
"photo": "tmp-player.png",
"photo": "players/tsolis.png",
"team": {
"name": "Арсенал",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/arsenal.png",
"color": "#EF0107",
"accent": "#FFFFFF"
},
@@ -263,10 +263,10 @@
{
"id": 21,
"playerName": "Кан Ли",
"photo": "tmp-player.png",
"photo": "players/kan-li.png",
"team": {
"name": "Атлетико",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/athletico-madrid.png",
"color": "#CB3524",
"accent": "#261E60"
},
@@ -276,10 +276,10 @@
{
"id": 22,
"playerName": "Карим Адейеми",
"photo": "tmp-player.png",
"photo": "players/karim-adeemi.png",
"team": {
"name": "Барселона",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/barcelona.png",
"color": "#A50044",
"accent": "#004D98"
},
@@ -289,10 +289,10 @@
{
"id": 23,
"playerName": "Гарначо",
"photo": "tmp-player.png",
"photo": "players/garnacho.png",
"team": {
"name": "Астон Вилла",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/aston-villa.png",
"color": "#95BFE5",
"accent": "#670E36"
},
@@ -302,10 +302,10 @@
{
"id": 24,
"playerName": "Александар Станкович",
"photo": "tmp-player.png",
"photo": "players/stankovic.png",
"team": {
"name": "Интер",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/inter.png",
"color": "#0068A8",
"accent": "#000000"
},
@@ -315,10 +315,10 @@
{
"id": 25,
"playerName": "Думфрис",
"photo": "tmp-player.png",
"photo": "players/dumfris.png",
"team": {
"name": "Реал",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/real-ma.png",
"color": "#FEBE10",
"accent": "#00529F"
},
@@ -328,10 +328,10 @@
{
"id": 26,
"playerName": "Гримальдо",
"photo": "tmp-player.png",
"photo": "players/grimaldo.png",
"team": {
"name": "Атлетико",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/athletico-madrid.png",
"color": "#CB3524",
"accent": "#261E60"
},
@@ -341,10 +341,10 @@
{
"id": 27,
"playerName": "Бернардо Силва",
"photo": "tmp-player.png",
"photo": "players/bernardo-silva.png",
"team": {
"name": "Реал",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/real-ma.png",
"color": "#FEBE10",
"accent": "#00529F"
},
@@ -354,10 +354,10 @@
{
"id": 28,
"playerName": "Оскар Мингеса",
"photo": "tmp-player.png",
"photo": "players/oscar-mingesa.png",
"team": {
"name": "Кристал Пэлас",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/crystal-palace.png",
"color": "#1B458F",
"accent": "#C4122E"
},
@@ -367,10 +367,10 @@
{
"id": 29,
"playerName": "Аканжи",
"photo": "tmp-player.png",
"photo": "players/akanzhi.png",
"team": {
"name": "Интер",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/inter.png",
"color": "#0068A8",
"accent": "#000000"
},
@@ -380,10 +380,10 @@
{
"id": 30,
"playerName": "Альваро Мората",
"photo": "tmp-player.png",
"photo": "players/morata.png",
"team": {
"name": "Комо",
"logo": "clubs-logo/chelsea.png",
"logo": "clubs-logo/como.png",
"color": "#0033A0",
"accent": "#FFFFFF"
},
+4 -3
View File
@@ -21,6 +21,7 @@ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DATA_DIR = os.path.join(BASE_DIR, "data")
CSV_PATH = os.path.join(BASE_DIR, "assets", "transfers-list.csv")
CLUBS_DIR = os.path.join(BASE_DIR, "clubs-logo")
PLAYER_DIR = os.path.join(BASE_DIR, "players")
os.makedirs(DATA_DIR, exist_ok=True)
@@ -142,7 +143,7 @@ def main():
warnings.append(f"Row {i+1}: unknown club '{club_name}' -> auto colours {color}")
photo = r["photo"] if r["photo"] else "tmp-player.png"
photo_path = os.path.join(BASE_DIR, photo)
photo_path = os.path.join(PLAYER_DIR, photo)
if not os.path.exists(photo_path):
warnings.append(f"Row {i+1}: photo '{photo}' not found at project root")
@@ -165,7 +166,7 @@ def main():
transfers_json.append({
"id": i + 1,
"playerName": r["player"],
"photo": photo,
"photo": f"players/{photo}",
"team": {
"name": club_name,
"logo": f"clubs-logo/{logo}" if logo else "",
@@ -177,7 +178,7 @@ def main():
})
json_path = os.path.join(DATA_DIR, "transfers.json")
with open(json_path, "w") as f:
with open(json_path, "w", encoding="utf-8") as f:
json.dump({"transfers": transfers_json}, f, indent=2, ensure_ascii=False)
f.write("\n")
print(f" Data -> {os.path.relpath(json_path, BASE_DIR)}")
Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

Before

Width:  |  Height:  |  Size: 666 KiB

After

Width:  |  Height:  |  Size: 666 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB