Propozycje wykonania sekcji todo

This commit is contained in:
kubab
2025-06-03 19:10:59 +02:00
parent cecc914935
commit d304805006

View File

@@ -66,8 +66,13 @@ class scraper:
matches_to_add = [] matches_to_add = []
# TODO: Sprawdź, czy sportowiec istnieje w bazie. # TODO: Sprawdź, czy sportowiec istnieje w bazie.
# Jeśli nie, dodaj go w podobny sposób, jak if not self.__czy_x_istnieje("sportowcy", zewnetrzne_id_sportowca=zewnetrzne_id_sportowca):
# w sample_data_init() (w lewy_db.py). print(f"{c.OKCYAN}Dodaję nowego sportowca do bazy danych{c.ENDC}")
self.db.simple_insert_one("sportowcy",
zewnetrzne_id_sportowca=zewnetrzne_id_sportowca,
imie="Robert",
nazwisko="Lewandowski"
)
page = 0 page = 0
match_num = 0 match_num = 0
@@ -87,13 +92,10 @@ class scraper:
home_club_id = safe_traverse(match, ["homeParticipantUrl"], default="non-existent-club-id") home_club_id = safe_traverse(match, ["homeParticipantUrl"], default="non-existent-club-id")
away_club_id = safe_traverse(match, ["awayParticipantUrl"], default="non-existent-club-id") away_club_id = safe_traverse(match, ["awayParticipantUrl"], default="non-existent-club-id")
# Sprawdź, czy mecz nie znajduje się już w bazie
if self.czy_mecz_istnieje(zewnetrzne_id_meczu=match_id): if self.czy_mecz_istnieje(zewnetrzne_id_meczu=match_id):
stop_scraping = True stop_scraping = True
break break
# Sprawdź, czy klub znajduje się już w bazie. Jeśli nie,
# trzeba go dodać przed meczem.
if not self.czy_klub_istnieje(id_klubu=home_club_id): if not self.czy_klub_istnieje(id_klubu=home_club_id):
print(f"{c.OKCYAN}Nowy klub{c.ENDC}: {home_club_id}") print(f"{c.OKCYAN}Nowy klub{c.ENDC}: {home_club_id}")
self.db.simple_insert_one("kluby", self.db.simple_insert_one("kluby",
@@ -107,29 +109,42 @@ class scraper:
pelna_nazwa=safe_traverse(match, ["awayParticipantName"]), pelna_nazwa=safe_traverse(match, ["awayParticipantName"]),
skrocona_nazwa=safe_traverse(match, ["awayParticipant3CharName"])) skrocona_nazwa=safe_traverse(match, ["awayParticipant3CharName"]))
# TODO: (opcjonalnie) zamień *słownik match* na *obiekt mecz* # TODO: Zamień słownik match na obiekt mecz
mecz = {
"zewnetrzne_id_meczu": match_id,
"data": safe_traverse(match, ["startTimeTimestamp"], default=0),
"id_klubu_gospodarzy": home_club_id,
"id_klubu_gosci": away_club_id,
"gole_gospodarzy": safe_traverse(match, ["homeScore", "current"], default=0),
"gole_gosci": safe_traverse(match, ["awayScore", "current"], default=0),
"rozgrywki": safe_traverse(match, ["tournament", "name"], default="Brak"),
"zewnetrzne_id_sportowca": zewnetrzne_id_sportowca
}
# TODO: Dodaj obiekt mecz do bazy
self.db.simple_insert_one("mecze", **mecz)
print(f"{c.OKCYAN}Nowy mecz ({match_num}){c.ENDC}: {match_id}")
# TODO: dodaj obiekt mecz do bazy (simple_insert_one(), simple_insert_many())
print(f"{c.OKCYAN}Nowy mecz ({match_num}){c.ENDC}: {match}")
match_num += 1 match_num += 1
# TODO: Zaktualizuj statystyki sportowca # TODO: Zaktualizuj statystyki sportowca
# np. zlicz gole RL9
strzelcy = safe_traverse(match, ["goals"], default=[])
liczba_goli = 0
for gol in strzelcy:
if gol.get("playerId") == zewnetrzne_id_sportowca:
liczba_goli += 1
if liczba_goli > 0:
# Opcjonalnie: odczekaj kilka sekund (?) # zwiększamy liczbę goli zawodnika
# Problem w tym, że time.sleep() jest blokujące, print(f"{c.OKBLUE}Zwiększam gole Lewandowskiego o {liczba_goli}{c.ENDC}")
# a asyncio i flask nie idą ze sobą w parze. self.db.increment_stat("sportowcy", {"zewnetrzne_id_sportowca": zewnetrzne_id_sportowca}, "gole", liczba_goli)
# Można to załatwić osobnym skryptem, ale
# martwmy się tym dopiero, gdy dostaniemy
# rate limita. - sherl
page += 1 page += 1
time.sleep(15) time.sleep(15)
def aktualizuj_dane(self): def aktualizuj_dane(self):
""" """
Pobiera mecze dla każdego sportowca wymienionego Pobiera mecze dla każdego sportowca wymienionego