diff --git a/FlaskWebProject/FlaskWebProject/fs_scraper.py b/FlaskWebProject/FlaskWebProject/fs_scraper.py index 5d4eaa4..df270f0 100644 --- a/FlaskWebProject/FlaskWebProject/fs_scraper.py +++ b/FlaskWebProject/FlaskWebProject/fs_scraper.py @@ -12,7 +12,7 @@ def safe_traverse(obj: dict, path: list, default=None): try: for x in path: result = result[x] - except KeyError: + except (KeyError, TypeError): result = default print(f"safe_traverse: error reading {' -> '.join(path)} - returning: {default}") finally: @@ -59,21 +59,14 @@ class scraper: def czy_mecz_istnieje(self, zewnetrzne_id_meczu: str): - # mecz = db.simple_select_all(ldb.mecze, zewnetrzne_id_meczu=zewnetrzne_id_meczu) - # if mecz is not None and mecz != []: - # return True - # else: - # return False return self.__czy_x_istnieje("mecze", zewnetrzne_id_meczu=zewnetrzne_id_meczu) def czy_klub_istnieje(self, id_klubu: str): - # mecz = db.simple_select_all(ldb.mecze, zewnetrzne_id_meczu=zewnetrzne_id_meczu) - # if mecz is not None and mecz != []: - # return True - # else: - # return False return self.__czy_x_istnieje("kluby", id_klubu=id_klubu) + def czy_nie_trzeba_pobierac_nowych_meczy_zawodnika(self, id_zawodnika: int, zewnetrzne_id_meczu: str): + return self.__czy_x_istnieje("sportowcy_w_meczach", id_zawodnika=id_zawodnika, zewnetrzne_id_meczu=zewnetrzne_id_meczu) + def id_na_imie_nazwisko_urodziny(self, zewnetrzne_id_sportowca: str = "MVC8zHZD"): """ Scraper z dykty xD @@ -109,6 +102,7 @@ class scraper: # TODO: Sprawdź, czy sportowiec istnieje w bazie. # Jeśli nie, dodaj go w podobny sposób, jak # w sample_data_init() (w lewy_db.py). + # -- Jednak tego tak nie robimy, ponieważ nie uzyskamy wielu informacji. id_zawodnika = self.db.get_id_zawodnika_by_zewnetrzne_id(zewnetrzne_id_sportowca) zawodnik = self.db.simple_select_all("sportowcy", zewnetrzne_id_zawodnika=zewnetrzne_id_sportowca)[0] @@ -133,16 +127,26 @@ class scraper: # ~Sprawdź, czy mecz nie znajduje się już w bazie~ # - # TODO: UWAGA! Nie powinniśmy tak tego sprawdzać! + # UWAGA! Nie powinniśmy tego sprawdzać jak w komentarzu poniżej! # 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 + # + # Rozwiązanie jest mocno nieefektywne przy scrapowaniu całej bazy od zera, + # ale rozwiąże przypadki, w których zawodnicy, których śledzimy, grali przeciwko sobie. + if self.czy_nie_trzeba_pobierac_nowych_meczy_zawodnika(id_zawodnika=id_zawodnika, zewnetrzne_id_meczu=match_id): + stop_scraping = True + break + + if self.czy_mecz_istnieje(zewnetrzne_id_meczu=match_id): + # Nie scrapuj istniejących meczy. + # Naturalnie, istniejący mecz nie musi oznaczać potrzeby zakończenia scrapowania. + continue # Sprawdź, czy klub znajduje się już w bazie. Jeśli nie, # trzeba go dodać przed meczem. @@ -159,55 +163,58 @@ class scraper: pelna_nazwa=safe_traverse(match, ["awayParticipantName"]), skrocona_nazwa=safe_traverse(match, ["awayParticipant3CharName"])) - # TODO: (opcjonalnie) zamień *słownik match* na *obiekt mecz* - - - # TODO: dodaj obiekt mecz do bazy (simple_insert_one(), simple_insert_many()) print(f"{c.OKCYAN}Nowy mecz ({match_num}){c.ENDC}: {match}") 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="") zewnetrzne_id_meczu = safe_traverse(match, ["eventEncodedId"], default="") if stats != False: # gdy sportowiec był aktywny w meczu - print("todo :)") - # todo: + # print("todo :)") self.db.simple_insert_one("sportowcy_w_meczach", id_zawodnika = id_zawodnika, zawodnik = zawodnik, - zewnetrzne_id_meczu = zewnetrzne_id_meczu, + zewnetrzne_id_meczu = zewnetrzne_id_meczu, + # Uwaga! Czasami przygłupy z flashscore zwracają puste pole '' zamiast zera, np. do liczby strzelonych goli. + # Dlatego int("0" + "") = int("0"), co zapobiegnie wysypaniu się przy int(""). 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")), + goli = int("0" + safe_traverse(stats, ["596", "value"], default="0")), + asyst = int("0" + 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")), + 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 - ) + ) # # 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()) - # self.db.simple_insert_one("statystyki_sportowcow", + # # aby to zrobić, najpierw pobierz najnowszą statystykę sportowca + # # ... + # + # + # # a następnie użyj funkcji w lewy_db do inkrementowania danych + # # (póki co jeszcze takiej nie ma) + # self.db.simple_increment_data("statystyki_sportowcow", + # id = ... # pewnie id się przyda # sportowiec = zawodnik, # 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, @@ -225,19 +232,19 @@ class scraper: # ) else: - print("też todo :)") + # 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 = 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")), + goli = int("0" + safe_traverse(stats, ["596", "value"], default="0")), + asyst = int("0" + 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")), + 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 ) @@ -253,7 +260,7 @@ class scraper: # rate limita. - sherl page += 1 - time.sleep(5) + #time.sleep(5) def aktualizuj_dane(self): @@ -261,8 +268,12 @@ class scraper: Pobiera mecze dla każdego sportowca wymienionego w pliku konfiguracyjnym. """ + start_time = time.time() for id_sportowca in lewy_globals.config['sportsmen']['tracked_ids']: self.aktualizuj_dane_sportowca(zewnetrzne_id_sportowca=id_sportowca) - time.sleep(15) + time.sleep(5) + end_time = time.time() + + print(f"Scrapowanie trwało {end_time - start_time}s.") diff --git a/FlaskWebProject/FlaskWebProject/lewy_db.py b/FlaskWebProject/FlaskWebProject/lewy_db.py index 99ce51f..b1e495f 100644 --- a/FlaskWebProject/FlaskWebProject/lewy_db.py +++ b/FlaskWebProject/FlaskWebProject/lewy_db.py @@ -70,6 +70,7 @@ class baza(): statystyki_id: Mapped[ List[int]] = mapped_column(ForeignKey(f"{tnp}statystyki_sportowcow.id_statystyki"), nullable=True) statystyki: Mapped[List["statystyki_sportowcow"]] = relationship(back_populates="sportowiec") trofea: Mapped[ List["trofea"]] = relationship(back_populates="zawodnik", foreign_keys="[trofea.id_zawodnika]") + mecze_zawodnika: Mapped[ List["sportowcy_w_meczach"]] = relationship(back_populates="zawodnik") def __repr__(self): return f"" @@ -92,8 +93,9 @@ class baza(): __tablename__ = tnp + "sportowcy_w_meczach" id_rekordu: Mapped[ int] = mapped_column(primary_key=True, autoincrement=True) id_zawodnika: Mapped[ int] = mapped_column(ForeignKey(f"{tnp}sportowcy.id_zawodnika")) - zawodnik: Mapped[ "sportowcy"] = relationship() + zawodnik: Mapped[ "sportowcy"] = relationship(back_populates="mecze_zawodnika") zewnetrzne_id_meczu: Mapped[ str] = mapped_column(ForeignKey(f"{tnp}mecze.zewnetrzne_id_meczu")) + mecz: Mapped[ "mecze"] = relationship() czas_gry: Mapped[ int] = mapped_column() goli: Mapped[ int] = mapped_column() asyst: Mapped[ int] = mapped_column() @@ -105,7 +107,7 @@ class baza(): wynik: Mapped[ float] = mapped_column() def __repr__(self): - return f"" + return f"<{self.zawodnik.imie} {self.zawodnik.nazwisko} w meczu {self.mecz.gospodarze.skrocona_nazwa} vs. {self.mecz.goscie.skrocona_nazwa}>" class statystyki_sportowcow(Base): __tablename__ = tnp + "statystyki_sportowcow" @@ -486,6 +488,27 @@ class baza(): self.session.commit() return 0 + @exit_gracefully + def get_sportowcy_w_meczach_by_sportsman_id(self, id_zawodnika = None, zewnetrzne_id_zawodnika = None, order = "DESC"): + + if zewnetrzne_id_zawodnika is not None: + id_zawodnika = self.get_id_zawodnika_by_zewnetrzne_id(zewnetrzne_id_zawodnika) + + query = self.session.query( + self.entities["sportowcy_w_meczach"] + ).join( + self.entities["sportowcy_w_meczach"].zawodnik + ).filter( + self.entities["sportowcy"].id_zawodnika == id_zawodnika + ) + + #print(query) + + if order.lower() == "desc": + query = query.order_by(self.entities["sportowcy_w_meczach"].id_rekordu.desc()) + + return query.all() + @exit_gracefully def sample_data_init(self, override_safety_check=False): """ @@ -523,36 +546,46 @@ class baza(): nazwa_turnieju="Nieznany turniej", skrocona_nazwa_turnieju="N/A", flaga=0) - self.simple_insert_one(statystyki_sportowcow, - ostatni_mecz=1, - 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=0, - przegranych_sum=0, - remisow_sum=0, - wynik_sum=0, - meczow_do_wynikow_sum=0) + + # Robercik + self.simple_insert_one(kluby, + id_klubu="barcelona", + pelna_nazwa="Barcelona", + skrocona_nazwa="BAR" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=487, + minut_gry=0, # Brak danych + gier_sum=487, + goli_sum=381, + asyst_sum=44, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=2, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) sportowiec = sportowcy( - zewnetrzne_id_zawodnika="MVC8zHZD", - imie="Robert", - nazwisko="Lewandowski", - data_urodzenia="21.08.1988", - czy_aktywny=True, - klub_id="undefined", - narodowosc="PL", - ilosc_trofeow=0, - pierwszy_mecz_id=1, - ostatni_gol_dla_id="undefined", - statystyki_id=1, - wycena=64_940_000) + zewnetrzne_id_zawodnika="MVC8zHZD", + imie="Robert", + nazwisko="Lewandowski", + data_urodzenia="21.08.1988", + czy_aktywny=True, + klub_id="barcelona", + narodowosc="PL", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=1, + wycena=67_000_000 # Wartość rynkowa: €15.3 mln + ) + trofeum = trofea( nazwa="Nieznane trofeum", sezon="0000-0000", @@ -600,6 +633,514 @@ class baza(): # statystyki_id=2, # itd... # wycena=...) # w złotówkach + # Ronaldo + self.simple_insert_one(kluby, + id_klubu="al-nassr", + pelna_nazwa="Al Nassr Riyadh", + skrocona_nazwa="ANR" #? + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=702, + minut_gry=0, # Brak danych + gier_sum=702, + goli_sum=569, + asyst_sum=81, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=92, + czerwonych_kartek_sum=8, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="WGOY4FSt", + imie="Cristiano", + nazwisko="Ronaldo", + data_urodzenia="05.02.1985", + czy_aktywny=True, + klub_id="al-nassr", + narodowosc="PT", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=2, + wycena=55_000_000 # Wartość rynkowa: €12.1 mln + ) + + # Messi + self.simple_insert_one(kluby, + id_klubu="inter-miami", + pelna_nazwa="Inter Miami", + skrocona_nazwa="INM" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=619, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=619, + goli_sum=528, + asyst_sum=53, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=0, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="vgOOdZbd", + imie="Lionel", + nazwisko="Messi", + data_urodzenia="24.06.1987", + czy_aktywny=True, + klub_id="inter-miami", + narodowosc="AR", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=3, + wycena=67_000_000 # Wartość rynkowa: €15.3 mln + ) + + # Mbappe + self.simple_insert_one(kluby, + id_klubu="real-madryt", + pelna_nazwa="Real Madryt", + skrocona_nazwa="RMA" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=280, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=280, + goli_sum=222, + asyst_sum=67, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=38, + czerwonych_kartek_sum=2, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="Wn6E2SED", + imie="Kylian", + nazwisko="Mbappé", + data_urodzenia="20.12.1998", + czy_aktywny=True, + klub_id="real-madryt", + narodowosc="FR", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=4, + wycena=185_700_000 # Wartość rynkowa: €185.7 mln + ) + + # Zlatan + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=519, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=519, + goli_sum=355, + asyst_sum=63, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=87, + czerwonych_kartek_sum=9, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="AiH2zDve", + imie="Zlatan", + nazwisko="Ibrahimović", + data_urodzenia="03.10.1981", + czy_aktywny=False, + klub_id="undefined", + narodowosc="SE", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=5, + wycena=0 # Zakończył karierę + ) + + # Suarez + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=608, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=608, + goli_sum=399, + asyst_sum=122, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=0, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="dUShzrBp", + imie="Luis", + nazwisko="Suárez", + data_urodzenia="24.01.1987", + czy_aktywny=True, + klub_id="inter-miami", + narodowosc="UY", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=6, + wycena=8_800_000 # Wartość rynkowa: €2.0 mln + ) + + # Haaland + self.simple_insert_one(kluby, + id_klubu="manchester-city", + pelna_nazwa="Manchester City", + skrocona_nazwa="MCI" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=235, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=235, + goli_sum=178, + asyst_sum=41, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=18, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="UmV9iQmE", + imie="Erling", + nazwisko="Haaland", + data_urodzenia="21.07.2000", + czy_aktywny=True, + klub_id="manchester-city", + narodowosc="NO", + ilosc_trofeow=0, # Brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=7, + wycena=777_500_000 # ~€178.7 mln + ) + + # Karim Benzema + self.simple_insert_one(kluby, + id_klubu="al-ittihad", + pelna_nazwa="Al-Ittihad FC", #? + skrocona_nazwa="RMA" #? + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=589, + minut_gry=0, # Brak danych + gier_sum=589, + goli_sum=305, + asyst_sum=0, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=14, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="tpV0VX0S", + imie="Karim", + nazwisko="Benzema", + data_urodzenia="19.12.1987", + czy_aktywny=True, + klub_id="al-ittihad", + narodowosc="FR", + ilosc_trofeow=0, # Flashscore nie podaje + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=8, + wycena=31_950_000 # €7.1 mln + ) + + # Sergio Aguero + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=443, + minut_gry=0, # Brak danych o czasie gry + gier_sum=443, + goli_sum=254, + asyst_sum=38, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=47, + czerwonych_kartek_sum=2, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="vw8ZV7HC", + imie="Sergio", + nazwisko="Agüero", + data_urodzenia="02.06.1988", + czy_aktywny=False, + klub_id="undefined", + narodowosc="AR", + ilosc_trofeow=0, # Brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=9, + wycena=0 # Zakończył karierę + ) + + # Edinson Cavani + self.simple_insert_one(kluby, + id_klubu="boca-juniors", + pelna_nazwa="Boca Juniors", #? + skrocona_nazwa="CAB" #? + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=507, + minut_gry=0, # Brak danych o czasie gry + gier_sum=507, + goli_sum=273, + asyst_sum=62, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=3, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="Qgx2trzH", + imie="Edinson", + nazwisko="Cavani", + data_urodzenia="14.02.1987", + czy_aktywny=True, + klub_id="boca-juniors", + narodowosc="UY", + ilosc_trofeow=0, + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=10, + wycena=4_212_000 # PLN + ) + + # Radamel Falcao + self.simple_insert_one(kluby, + id_klubu="millonarios", + pelna_nazwa="Millonarios", + skrocona_nazwa="MLA" #? + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=360, + minut_gry=0, # brak danych o czasie gry + gier_sum=360, + goli_sum=170, + asyst_sum=17, + interwencji_sum=54, + nieobronionych_interwencji_sum=1, + zoltych_kartek_sum=0, # brak danych + czerwonych_kartek_sum=0, + wygranych_sum=0, + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="2oMimkAU", + imie="Radamel", + nazwisko="Falcao", + data_urodzenia="10.02.1986", + czy_aktywny=True, + klub_id="millonarios", + narodowosc="CO", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=11, + wycena=1_084_500 #PLN + ) + + # Wayne Rooney + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=568, + minut_gry=0, # brak danych o czasie gry + gier_sum=568, + goli_sum=234, + asyst_sum=47, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, # brak danych + zoltych_kartek_sum=105, + czerwonych_kartek_sum=4, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="WfXv1DCa", + imie="Wayne", + nazwisko="Rooney", + data_urodzenia="24.10.1985", + czy_aktywny=False, # zakończył karierę + klub_id="undefined", + narodowosc="ENG", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=12, + wycena=0 # brak wyceny + ) + + # Robin van Persie + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=374, + minut_gry=0, # brak danych o czasie gry + gier_sum=374, + goli_sum=190, + asyst_sum=16, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, # brak danych + zoltych_kartek_sum=54, + czerwonych_kartek_sum=3, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="0vgcq6un", + imie="Robin", + nazwisko="van Persie", + data_urodzenia="06.08.1983", + czy_aktywny=False, + klub_id="undefined", # zakończył karierę + narodowosc="NED", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=13, + wycena=0 # zakończył karierę + ) + + # Harry Kane + self.simple_insert_one(kluby, + id_klubu="bayern", + pelna_nazwa="Bayern Monachium", + skrocona_nazwa="BAY" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=439, + minut_gry=0, # brak danych o czasie gry + gier_sum=439, + goli_sum=295, + asyst_sum=64, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=48, + czerwonych_kartek_sum=1, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="v5HSlEAa", + imie="Harry", + nazwisko="Kane", + data_urodzenia="28.07.1993", + czy_aktywny=True, + klub_id="bayern", + narodowosc="ENG", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=14, + wycena=344_700_000 # PLN + ) + + # Ciro Immobile + self.simple_insert_one(kluby, + id_klubu="besiktas", + pelna_nazwa="Besiktas", + skrocona_nazwa="BES" + ) + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=455, + minut_gry=0, # brak danych o czasie gry + gier_sum=455, + goli_sum=250, + asyst_sum=51, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=71, + czerwonych_kartek_sum=3, + wygranych_sum=0, + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 + ) + self.simple_insert_one(sportowcy, + zewnetrzne_id_zawodnika="4S9fNUYh", + imie="Ciro", + nazwisko="Immobile", + data_urodzenia="20.02.1990", + czy_aktywny=True, + klub_id="besiktas", + narodowosc="IT", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=15, + wycena=12_600_000 # PLN + ) + + session.commit() return 0