diff --git a/FlaskWebProject/FlaskWebProject/fs_scraper.py b/FlaskWebProject/FlaskWebProject/fs_scraper.py index 6fd1c29..5d4eaa4 100644 --- a/FlaskWebProject/FlaskWebProject/fs_scraper.py +++ b/FlaskWebProject/FlaskWebProject/fs_scraper.py @@ -131,10 +131,18 @@ class scraper: home_club_id = safe_traverse(match, ["homeParticipantUrl"], 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): - stop_scraping = True - break + # ~Sprawdź, czy mecz nie znajduje się już w bazie~ + # + # TODO: UWAGA! Nie powinniśmy tak tego sprawdzać! + # 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, # 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")) - self.db.simple_insert_one("mecze", - zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default=""), - data = iso_converted_date, - gospodarze_id = home_club_id, - gospodarze = self.db.simple_select_all("kluby", id_klubu=home_club_id)[0], - goscie_id = away_club_id, - goscie = self.db.simple_select_all("kluby", id_klubu=away_club_id)[0], - gosp_wynik = safe_traverse(match, ["homeScore"], default=0), - gosc_wynik = safe_traverse(match, ["awayScore"], default=0), - sezon = safe_traverse(match, ["tournamentSeason"], default=""), - nazwa_turnieju = safe_traverse(match, ["tournamentTitle"], default=""), - skrocona_nazwa_turnieju = safe_traverse(match, ["tournamentTemplateShortCode"], default=""), - flaga = safe_traverse(match, ["flagId"], default=0), - ) + # self.db.simple_insert_one("mecze", + # zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default=""), + # data = iso_converted_date, + # gospodarze_id = home_club_id, + # gospodarze = self.db.simple_select_all("kluby", id_klubu=home_club_id)[0], + # goscie_id = away_club_id, + # goscie = self.db.simple_select_all("kluby", id_klubu=away_club_id)[0], + # gosp_wynik = safe_traverse(match, ["homeScore"], default=0), + # gosc_wynik = safe_traverse(match, ["awayScore"], default=0), + # sezon = safe_traverse(match, ["tournamentSeason"], default=""), + # nazwa_turnieju = safe_traverse(match, ["tournamentTitle"], default=""), + # skrocona_nazwa_turnieju = safe_traverse(match, ["tournamentTemplateShortCode"], default=""), + # flaga = safe_traverse(match, ["flagId"], default=0), + # ) match_num += 1 stats = safe_traverse(match, ["stats"], default="") @@ -181,29 +189,24 @@ class scraper: if stats != False: # gdy sportowiec był aktywny w meczu print("todo :)") - # # TODO: - # self.db.simple_insert_one("sportowcy_w_meczach", - # id_zawodnika = id_zawodnika, - # zawodnik = zawodnik, - # 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) - # ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), - # ilosc_wystapien = 1 if int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")) > 0 else 0, - # minut_gry = int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")), - # gier_sum = 1 if int(safe_traverse(stats, ["595", "value"], default="0").rstrip("'")) > 0 else 0, - # goli_sum = int(safe_traverse(stats, ["596", "value"], default="0")), - # asyst_sum = int(safe_traverse(stats, ["541", "value"], default="0")), - # interwencji_sum = 0, - # nieobronionych_interwencji_sum = 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 - # ) + # todo: + self.db.simple_insert_one("sportowcy_w_meczach", + id_zawodnika = id_zawodnika, + zawodnik = zawodnik, + zewnetrzne_id_meczu = zewnetrzne_id_meczu, + czas_gry = int("0" + safe_traverse(stats, ["595", "value"], default="0").rstrip("'?")), + goli = int(safe_traverse(stats, ["596", "value"], default="0")), + asyst = int(safe_traverse(stats, ["541", "value"], default="0")), + interwencje_bramkarza = 0, + suma_interwencji_na_bramke = 0, + zolte_kartki = int(safe_traverse(stats, ["599", "value"], default="0")), + czerwone_kartki = int(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 + ) # # 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", # sportowiec = zawodnik, # ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), @@ -216,29 +219,28 @@ class scraper: # nieobronionych_interwencji_sum = 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, + # 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 + # meczow_do_wynikow_sum = 1 if safe_traverse(match, ["rating"], default=0) not in (0, none) else none # ) else: print("też todo :)") # # TODO: TU TEŻ TRZEBA POPRAWIĆ ANALOGICZNIE DO TEGO, CO JEST WEWNĄTRZ IF'A - # self.db.simple_insert_one("sportowcy_w_meczach", id_zawodnika, - # ostatni_mecz = self.db.get_id_meczu_by_zewnetrzne_id(zewnetrzne_id_meczu), - # ilosc_wystapien = 0, - # minut_gry = 0, - # gier_sum = 0, - # goli_sum = 0, - # asyst_sum = 0, - # interwencji_sum = 0, - # nieobronionych_interwencji_sum = 0, - # zoltych_kartek_sum = 0, - # czerwonych_kartek_sum = 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 - # ) + self.db.simple_insert_one("sportowcy_w_meczach", + id_zawodnika = id_zawodnika, + zawodnik = zawodnik, + zewnetrzne_id_meczu = zewnetrzne_id_meczu, + 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 = int(safe_traverse(stats, ["596", "value"], default="0")), + asyst = int(safe_traverse(stats, ["541", "value"], default="0")), + interwencje_bramkarza = 0, + suma_interwencji_na_bramke = 0, + zolte_kartki = int(safe_traverse(stats, ["599", "value"], default="0")), + czerwone_kartki = int(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 + ) # TODO: Zaktualizuj statystyki sportowca