Merge branch 'ScraperV2'

This commit is contained in:
2025-06-06 00:50:21 +02:00

View File

@@ -131,10 +131,18 @@ 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 # ~Sprawdź, czy mecz nie znajduje się już w bazie~
if self.czy_mecz_istnieje(zewnetrzne_id_meczu=match_id): #
stop_scraping = True # TODO: UWAGA! Nie powinniśmy tak tego sprawdzać!
break # To sprawdzenie powinno jedynie służyć zapobieganiu dodania istniejących meczy,
# natomiast istniejący mecz nie oznacza, że sportowiec ma już statystykę z niego!
# Przerwać scrapowanie należy wtedy, gdy znajdzie się statystykę sportowca
# z bieżącego meczu, a nie kiedy znajdzie się bieżący mecz w bazie!
#
# TODO TODO TODO FIXME FIXME FIXME
# if self.czy_mecz_istnieje(zewnetrzne_id_meczu=match_id):
# stop_scraping = True
# break
# Sprawdź, czy klub znajduje się już w bazie. Jeśli nie, # Sprawdź, czy klub znajduje się już w bazie. Jeśli nie,
# trzeba go dodać przed meczem. # trzeba go dodać przed meczem.
@@ -160,20 +168,20 @@ class scraper:
iso_converted_date = self.to_iso_compatible_date(safe_traverse(match, ["eventStartTime"], default="1970-01-01")) iso_converted_date = self.to_iso_compatible_date(safe_traverse(match, ["eventStartTime"], default="1970-01-01"))
self.db.simple_insert_one("mecze", # self.db.simple_insert_one("mecze",
zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default=""), # zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default=""),
data = iso_converted_date, # data = iso_converted_date,
gospodarze_id = home_club_id, # gospodarze_id = home_club_id,
gospodarze = self.db.simple_select_all("kluby", id_klubu=home_club_id)[0], # gospodarze = self.db.simple_select_all("kluby", id_klubu=home_club_id)[0],
goscie_id = away_club_id, # goscie_id = away_club_id,
goscie = self.db.simple_select_all("kluby", id_klubu=away_club_id)[0], # goscie = self.db.simple_select_all("kluby", id_klubu=away_club_id)[0],
gosp_wynik = safe_traverse(match, ["homeScore"], default=0), # gosp_wynik = safe_traverse(match, ["homeScore"], default=0),
gosc_wynik = safe_traverse(match, ["awayScore"], default=0), # gosc_wynik = safe_traverse(match, ["awayScore"], default=0),
sezon = safe_traverse(match, ["tournamentSeason"], default=""), # sezon = safe_traverse(match, ["tournamentSeason"], default=""),
nazwa_turnieju = safe_traverse(match, ["tournamentTitle"], default=""), # nazwa_turnieju = safe_traverse(match, ["tournamentTitle"], default=""),
skrocona_nazwa_turnieju = safe_traverse(match, ["tournamentTemplateShortCode"], default=""), # skrocona_nazwa_turnieju = safe_traverse(match, ["tournamentTemplateShortCode"], default=""),
flaga = safe_traverse(match, ["flagId"], default=0), # flaga = safe_traverse(match, ["flagId"], default=0),
) # )
match_num += 1 match_num += 1
stats = safe_traverse(match, ["stats"], default="") stats = safe_traverse(match, ["stats"], default="")
@@ -181,29 +189,24 @@ class scraper:
if stats != False: # gdy sportowiec był aktywny w meczu if stats != False: # gdy sportowiec był aktywny w meczu
print("todo :)") print("todo :)")
# # TODO: # todo:
# self.db.simple_insert_one("sportowcy_w_meczach", self.db.simple_insert_one("sportowcy_w_meczach",
# id_zawodnika = id_zawodnika, id_zawodnika = id_zawodnika,
# zawodnik = zawodnik, zawodnik = zawodnik,
# zewnetrzne_id_meczu = zewnetrzne_id_meczu, zewnetrzne_id_meczu = zewnetrzne_id_meczu,
# # ODTĄD SIĘ NIE POKRYWA!!! POLA POWINNY SIĘ ZGADZAĆ Z TYM, CO JEST W LEWY_DB (konkretnie klasie sportowcy_w_meczach) czas_gry = int("0" + safe_traverse(stats, ["595", "value"], default="0").rstrip("'?")),
# ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), goli = int(safe_traverse(stats, ["596", "value"], default="0")),
# ilosc_wystapien = 1 if int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")) > 0 else 0, asyst = int(safe_traverse(stats, ["541", "value"], default="0")),
# minut_gry = int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")), interwencje_bramkarza = 0,
# gier_sum = 1 if int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")) > 0 else 0, suma_interwencji_na_bramke = 0,
# goli_sum = int(safe_traverse(stats, ["596", "value"], default="0")), zolte_kartki = int(safe_traverse(stats, ["599", "value"], default="0")),
# asyst_sum = int(safe_traverse(stats, ["541", "value"], default="0")), czerwone_kartki = int(safe_traverse(stats, ["600", "value"], default="0")),
# interwencji_sum = 0, wygrana = {"Z": 1, "R": 0, "P": -1}.get(safe_traverse(match, ["winLoseShort"], default=""), 0),
# nieobronionych_interwencji_sum = 0, wynik = safe_traverse(match, ["rating"], default=0) or 0
# zoltych_kartek_sum = int(safe_traverse(stats, ["599", "value"], default="0")), )
# czerwonych_kartek_sum = int(safe_traverse(stats, ["600", "value"], default="0")),
# wygranych_sum = 1 if safe_traverse(match, ["winLoseShort"], default="") == "Z" else 0,
# wynik_sum = safe_traverse(match, ["rating"], default=0),
# meczow_do_wynikow_sum = 1 if safe_traverse(match, ["rating"], default=0) not in (0, None) else None
# )
# # analogicznie zinkrementuj statystyki_sportowcow: # # analogicznie zinkrementuj statystyki_sportowcow:
# # UWAGA! NIE ZADZIAŁA DLA NIKOGO INNEGO, NIŻ ROBERCIKA (bo nie mamy innych sportowców w bazie, trzeba dodać ich ręcznie w lewy_db sample_data_init()) # # uwaga! nie zadziała dla nikogo innego, niż robercika (bo nie mamy innych sportowców w bazie, trzeba dodać ich ręcznie w lewy_db sample_data_init())
# self.db.simple_insert_one("statystyki_sportowcow", # self.db.simple_insert_one("statystyki_sportowcow",
# sportowiec = zawodnik, # sportowiec = zawodnik,
# ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), # ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu),
@@ -216,29 +219,28 @@ class scraper:
# nieobronionych_interwencji_sum = 0, # nieobronionych_interwencji_sum = 0,
# zoltych_kartek_sum = int(safe_traverse(stats, ["599", "value"], default="0")), # zoltych_kartek_sum = int(safe_traverse(stats, ["599", "value"], default="0")),
# czerwonych_kartek_sum = int(safe_traverse(stats, ["600", "value"], default="0")), # czerwonych_kartek_sum = int(safe_traverse(stats, ["600", "value"], default="0")),
# wygranych_sum = 1 if safe_traverse(match, ["winLoseShort"], default="") == "Z" else 0, # wygranych_sum = 1 if safe_traverse(match, ["winloseshort"], default="") == "z" else 0,
# wynik_sum = safe_traverse(match, ["rating"], default=0), # wynik_sum = safe_traverse(match, ["rating"], default=0),
# meczow_do_wynikow_sum = 1 if safe_traverse(match, ["rating"], default=0) not in (0, None) else None # meczow_do_wynikow_sum = 1 if safe_traverse(match, ["rating"], default=0) not in (0, none) else none
# ) # )
else: else:
print("też todo :)") print("też todo :)")
# # TODO: TU TEŻ TRZEBA POPRAWIĆ ANALOGICZNIE DO TEGO, CO JEST WEWNĄTRZ IF'A # # TODO: TU TEŻ TRZEBA POPRAWIĆ ANALOGICZNIE DO TEGO, CO JEST WEWNĄTRZ IF'A
# self.db.simple_insert_one("sportowcy_w_meczach", id_zawodnika, self.db.simple_insert_one("sportowcy_w_meczach",
# ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), id_zawodnika = id_zawodnika,
# ilosc_wystapien = 0, zawodnik = zawodnik,
# minut_gry = 0, zewnetrzne_id_meczu = zewnetrzne_id_meczu,
# gier_sum = 0, czas_gry = 0, #(lambda v: int(str(v).rstrip("'")) if isinstance(v, (str, int, float)) and str(v).rstrip("'").lstrip("-").isdigit() else 0)(safe_traverse(stats if isinstance(stats, dict) else {}, ["595", "value"], default="0")),
# goli_sum = 0, goli = int(safe_traverse(stats, ["596", "value"], default="0")),
# asyst_sum = 0, asyst = int(safe_traverse(stats, ["541", "value"], default="0")),
# interwencji_sum = 0, interwencje_bramkarza = 0,
# nieobronionych_interwencji_sum = 0, suma_interwencji_na_bramke = 0,
# zoltych_kartek_sum = 0, zolte_kartki = int(safe_traverse(stats, ["599", "value"], default="0")),
# czerwonych_kartek_sum = 0, czerwone_kartki = int(safe_traverse(stats, ["600", "value"], default="0")),
# wygranych_sum = 1 if safe_traverse(match, ["winLoseShort"], default="") == "Z" else 0, wygrana = {"Z": 1, "R": 0, "P": -1}.get(safe_traverse(match, ["winLoseShort"], default=""), 0),
# wynik_sum = safe_traverse(match, ["rating"], default=0), wynik = safe_traverse(match, ["rating"], default=0) or 0
# meczow_do_wynikow_sum = 1 if safe_traverse(match, ["rating"], default=0) not in (0, None) else None )
# )
# TODO: Zaktualizuj statystyki sportowca # TODO: Zaktualizuj statystyki sportowca