Propozycje wykonania sekcji todo
This commit is contained in:
@@ -66,8 +66,13 @@ class scraper:
|
||||
matches_to_add = []
|
||||
|
||||
# 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).
|
||||
if not self.__czy_x_istnieje("sportowcy", zewnetrzne_id_sportowca=zewnetrzne_id_sportowca):
|
||||
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
|
||||
match_num = 0
|
||||
@@ -83,17 +88,14 @@ class scraper:
|
||||
retrieved_matches = safe_traverse(retrieved_page, ["lastMatches"], default=[])
|
||||
for match in retrieved_matches:
|
||||
|
||||
match_id = safe_traverse(match, ["eventEncodedId"], default="non-existent-match-id")
|
||||
match_id = safe_traverse(match, ["eventEncodedId"], default="non-existent-match-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")
|
||||
|
||||
# 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 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):
|
||||
print(f"{c.OKCYAN}Nowy klub{c.ENDC}: {home_club_id}")
|
||||
self.db.simple_insert_one("kluby",
|
||||
@@ -107,29 +109,42 @@ class scraper:
|
||||
pelna_nazwa=safe_traverse(match, ["awayParticipantName"]),
|
||||
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)
|
||||
|
||||
|
||||
# TODO: dodaj obiekt mecz do bazy (simple_insert_one(), simple_insert_many())
|
||||
print(f"{c.OKCYAN}Nowy mecz ({match_num}){c.ENDC}: {match}")
|
||||
print(f"{c.OKCYAN}Nowy mecz ({match_num}){c.ENDC}: {match_id}")
|
||||
match_num += 1
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# Opcjonalnie: odczekaj kilka sekund (?)
|
||||
# Problem w tym, że time.sleep() jest blokujące,
|
||||
# a asyncio i flask nie idą ze sobą w parze.
|
||||
# Można to załatwić osobnym skryptem, ale
|
||||
# martwmy się tym dopiero, gdy dostaniemy
|
||||
# rate limita. - sherl
|
||||
if liczba_goli > 0:
|
||||
# zwiększamy liczbę goli zawodnika
|
||||
print(f"{c.OKBLUE}Zwiększam gole Lewandowskiego o {liczba_goli}{c.ENDC}")
|
||||
self.db.increment_stat("sportowcy", {"zewnetrzne_id_sportowca": zewnetrzne_id_sportowca}, "gole", liczba_goli)
|
||||
|
||||
page += 1
|
||||
time.sleep(15)
|
||||
|
||||
|
||||
|
||||
def aktualizuj_dane(self):
|
||||
"""
|
||||
Pobiera mecze dla każdego sportowca wymienionego
|
||||
|
||||
Reference in New Issue
Block a user