8 Commits

Author SHA1 Message Date
afa666d2fd fix: scraper fix, add club info 2025-06-20 03:50:07 +02:00
b0ea0a836b scraper fix attempt 2025-06-20 01:19:48 +02:00
327aabde78 fix for goals 2025-06-16 23:21:34 +02:00
7ed241bc00 deleting some sections 2025-06-16 23:07:40 +02:00
ac2335a3bc one more 2025-06-16 23:00:38 +02:00
45dfd38f9a one fix for club stats 2025-06-16 22:57:19 +02:00
04b12d4657 fix: readd missing imports and funcs II 2025-06-15 04:59:37 +02:00
687bdedf88 fix: readd missing import 2025-06-15 04:52:37 +02:00
6 changed files with 35 additions and 10 deletions

View File

@@ -177,6 +177,21 @@ class scraper:
stats = safe_traverse(match, ["stats"], default="")
zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default="")
wygrana_str = safe_traverse(match, ["winLoseShort"], default="R").upper()
klub_zawodnika = "undefined"
# Zwycięstwo klubu zawodnika
if wygrana_str == "Z":
if safe_traverse(match, ["homeScore"], default=0) > safe_traverse(match, ["awayScore"], default=0):
klub_zawodnika = home_club_id
else:
klub_zawodnika = away_club_id
# Przegrana klubu zawodnika
elif wygrana_str == "P":
if safe_traverse(match, ["homeScore"], default=0) > safe_traverse(match, ["awayScore"], default=0):
klub_zawodnika = away_club_id
else:
klub_zawodnika = home_club_id
if stats != False: # gdy sportowiec był aktywny w meczu
# print("todo :)")
self.db.simple_insert_one("sportowcy_w_meczach",
@@ -193,7 +208,8 @@ class scraper:
zolte_kartki = int("0" + safe_traverse(stats, ["599", "value"], default="0")),
czerwone_kartki = int("0" + safe_traverse(stats, ["600", "value"], default="0")),
wygrana = {"Z": 1, "R": 0, "P": -1}.get(safe_traverse(match, ["winLoseShort"], default=""), 0),
wynik = safe_traverse(match, ["rating"], default=0) or 0
wynik = safe_traverse(match, ["rating"], default=0) or 0,
klub_id = klub_zawodnika
)
# # analogicznie zinkrementuj statystyki_sportowcow:
@@ -236,7 +252,8 @@ class scraper:
zolte_kartki = int("0" + safe_traverse(stats, ["599", "value"], default="0")),
czerwone_kartki = int("0" + safe_traverse(stats, ["600", "value"], default="0")),
wygrana = {"Z": 1, "R": 0, "P": -1}.get(safe_traverse(match, ["winLoseShort"], default=""), 0),
wynik = safe_traverse(match, ["rating"], default=0) or 0
wynik = safe_traverse(match, ["rating"], default=0) or 0,
klub_id = klub_zawodnika
)
# TODO: Zaktualizuj statystyki sportowca

View File

@@ -18,7 +18,7 @@ scr = None
def setup():
# sanity check: make sure config is set
# required to make `flask --app lewy run --debug` work
global config, app_host, app_port, scrape
global config, app_host, app_port, scr
try:
if not config['general']:
lewy_globals.setConfig(lewy_globals.configfile)

View File

@@ -60,6 +60,9 @@ def __czy_x_istnieje(typ, **id):
def czy_sportowiec_istnieje(id_zawodnika: str):
return __czy_x_istnieje("sportowcy", id_zawodnika=id_zawodnika)
def czy_klub_istnieje(id_klubu: str):
return __czy_x_istnieje("kluby", id_klubu=id_klubu)
# GET /api/v1
def stub_hello():
"""
@@ -95,7 +98,7 @@ def stats():
return 200, "ok", data_to_send
# GET /api/v1/matches
def get_matches(r = None, id_zawodnika: str | None = None, rok: int | None = None):
def get_matches(r = None, id_zawodnika: int | None = None, rok: int | None = None):
"""
Zwraca mecze.
Przykład wywołania:
@@ -134,7 +137,7 @@ def get_matches(r = None, id_zawodnika: str | None = None, rok: int | None = Non
return 200, "ok", response_json
# GET /api/v1/player_stats
def player_stats(r = None, id_zawodnika: str | None = None):
def player_stats(r = None, id_zawodnika: int | None = None):
"""
Zwraca statystyki gracza.
Przykład wywołania:
@@ -148,7 +151,7 @@ def player_stats(r = None, id_zawodnika: str | None = None):
id_zawodnika = r.args.get('id_zawodnika', 0)
# Sprawdź, czy sportowiec o podanym (lub niepodanym) id istnieje.
elif not czy_sportowiec_istnieje(id_zawodnika=id_zawodnika):
if not czy_sportowiec_istnieje(id_zawodnika=id_zawodnika):
return 404, "error", {"error_msg": "This sportsman has not been found in the database. Try: id_zawodnika=1"}
# Gdy sportowiec istnieje, wypisz jego statystyki.

View File

@@ -1,7 +1,7 @@
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
from functools import wraps
from sqlalchemy import ForeignKey, select, insert, update, extract, func, case
from sqlalchemy.orm import Mapped, mapped_column, DeclarativeBase, Session, relationship
from typing import List
import time

View File

@@ -8,6 +8,9 @@ def get_lewy_stats():
stats = player_stats(id_zawodnika=1)[2][0]
polska = robert_stats(id_klubu="polska")[2][0]
barcelona = robert_stats(id_klubu="barcelona")[2][0]
borussia = robert_stats(id_klubu="dortmund")[2][0]
bayern = robert_stats(id_klubu="bayern")[2][0]
und = robert_stats(id_klubu="undefined")[2][0]
return {
'all_time_stats': {
'goals': stats["goals"], # 589+85
@@ -15,9 +18,9 @@ def get_lewy_stats():
'matches': stats["unique_items"] # 791+158
},
'club_stats': {
'goals': barcelona["goals"], # 589
'assists': barcelona["assists"], # 154
'matches': barcelona["unique_items"] # 791 # to trochę na wyrost, bo w części meczy był kontuzjowany
'goals': barcelona["goals"] + borussia["goals"] + bayern["goals"]+ und["goals"], # 589
'assists': barcelona["assists"] + borussia["assists"] + bayern["assists"]+ und["assists"], # 154
'matches': barcelona["unique_items"] + borussia["unique_items"] + bayern["unique_items"]+ und["unique_items"] # 791 # to trochę na wyrost, bo w części meczy był kontuzjowany
},
'nation_stats': {
'goals': polska["goals"], # 85

View File

@@ -55,6 +55,7 @@
<p>Występy</p>
</div>
</section>
<!--
<section class="section-stats">
<h2>(!) Puchary międzynarodowe</h2>
<div class="stats">
@@ -89,6 +90,7 @@
</div>
</div>
</section>
-->
<section class="section-stats">
<h2>Kartki</h2>
<div class="stats">