def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//tbody/tr")) for it in range(0, len(items)): if (it > 1): tds = items[it].find_elements_by_xpath("./td") strPlayer = tds[1].text + " / " + tds[3].text idDriver = strPlayer.replace(" / ", "_").replace(" ", "_", 9) strTeam = tds[4].text + " " + tds[5].text + " " + tds[6].text idTeam = strTeam.replace(" ", "_", 9) pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": strPlayer, "strNumber": tds[7].text, "idTeam": params["catRCtrl"].upper() + "-" + idTeam.lower(), "strTeam": strTeam, "numSeason": parse_int(params["year"]), "strFanart4": get_brand_logo(tds[4].text), } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_drivers(driver, params): pilots = [] pilotList = [] try: print("::: DRIVERS") tables = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//table")) for table in range(0, len(tables)): th = tables[table].find_element_by_xpath("./thead/tr/th[1]").text if (th == "Teams"): tbodys = tables[table].find_elements_by_xpath("./tbody") for body in range(0, len(tbodys)): trs = tbodys[body].find_elements_by_xpath("./tr") linkTeam = "" idTeam = "" strTeam = "" for tr in range(0, len(trs)): tds = trs[tr].find_elements_by_xpath("./td") if (tds[0].text != ""): linkTeam = get_link_MSS(tds[0]) idTeam = get_id_link_MSS(params["urlBase"], linkTeam, "T") strTeam = tds[0].text linkDriver = get_link_MSS(tds[2]) idDriver = get_id_link_MSS(params["urlBase"], linkDriver, "D") pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "idMss": idDriver, "strPlayer": trs[tr].find_element_by_xpath( "./td[3]").text.strip(), "strNumber": trs[tr].find_element_by_xpath( "./td[2]").text.strip(), "idTeam": idTeam, "strTeam": strTeam, "numSeason": parse_int(params["year"]), "strRSS": linkDriver, } if (pilot["idPlayer"] not in pilotList): pilots.append(pilot) pilotList.append(pilot["idPlayer"]) break logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_champC(driver, params): ret = [] champ = {} teams = [] data = [] try: print("::: CHAMPIONSHIP CONSTRUCTOR") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath( "//div[@id='tabs-3']/div/ul[@class='puntajes']")) points = 0 for it in range(0, len(items)): tds = items[it].find_elements_by_xpath("./li") strTeam = tds[2].find_element_by_xpath("./span").get_attribute( "innerHTML") idTeam = params["catRCtrl"].upper() + "-C-" + \ strTeam.lower().strip().replace(" ", "_", 9) linkTeam = tds[1].find_element_by_xpath("./img").get_attribute( "src") team = { "idTeam": idTeam, "strTeam": strTeam, "idCategory": params["catRCtrl"], "idRCtrl": idTeam, "numSeason": parse_int(params["year"]), "strGender": "C", "strTeamLogo": linkTeam, "strTeamBadge": linkTeam, "strTeamFanart4": linkTeam } teams.append(team) line = { "idPlayer": idTeam, "position": parse_int(tds[0].get_attribute("innerHTML").replace("°", "")), "totalPoints": parse_float(tds[3].get_attribute("innerHTML")), } points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-C", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "C" } ret.append(teams) ret.append(champ) logger(ret) print("::: PROCESS FINISHED :::") return ret except Exception as e: logger(e, True, "Championship", [teams, champ]) return "::: ERROR CHAMP CONSTRUCTOR :::"
def load_MSS(params): ret = {} params["urlApi"] = current_app.config["API_URL"] params["urlBase"] = "https://results.motorsportstats.com" data = api_request("get", params["urlApi"] + "/org/find/sec/int") try: for i in range(0, len(data)): if (len(data[i]["categories"]) > 0): cats = data[i]["categories"] for it in range(0, len(cats)): print(cats[it]["idRCtrl"]) if (cats[it]["idMss"] != ""): params["catId"] = cats[it]["_id"] params["catRCtrl"] = cats[it]["idLeague"] params["catOrigen"] = cats[it]["idMss"] params["chTypes"] = cats[it]["chTypes"] params["chYearIni"] = cats[it]["chYearIni"] params["chYearFin"] = cats[it]["chYearFin"] ans = run_script_MSS(params) ret[cats[it]["idLeague"]] = ans if (it % 2 == 0): wake_up() except Exception as e: logger(e, True, "Load", data) return ret
def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath( "//figure[contains(@class, 'vc_figure')]/div/img") ) for it in range(0, len(items) - 1): linkDriver = items[it].get_attribute("src") idDriver = get_id_link_APTP(params, linkDriver, "D") nameDriver = (idDriver.replace("_", " ", 9).strip()) pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": nameDriver.title(), "numSeason": parse_int(params["year"]), "strRender": linkDriver.replace(".jpg", "-221x300.jpg"), "strDescriptionJP": idDriver.replace("_", " ", 9), "isOnlyImg": False, "strRSS": linkDriver, } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath("//table[3]/tbody/tr")) for it in range(2, len(items)): tds = items[it].find_elements_by_xpath("./td") names = tds[10].text.split("\n") idDriver = (names[0] + "_" + names[1]).replace(" ", "_") pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": names[0] + " - " + names[1], "strTeam": tds[9].text, "strNumber": tds[8].text, "numSeason": parse_int(params["year"]), } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_teamsST(driver, params): teams = [] try: print("::: TEAMS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//article/a")) for it in range(0, len(items)): linkTeam = items[it].get_attribute("href") thumb = items[it].find_element_by_xpath(".//img").get_attribute( "src"), idTeam = get_id_link_AUVO(params, thumb, "T") txt = idTeam.split("_") strTeam = "" for t in range(2, len(txt)): strTeam += txt[t] + " " team = { "idTeam": idTeam, "strTeam": "", "idCategory": params["catRCtrl"], "idRCtrl": idTeam, "numSeason": parse_int(params["year"]), "strGender": "T", "strThumb": thumb.replace(".jpg", "-300x189.jpg"), "strCutout": thumb, "strRSS": linkTeam, } teams.append(team) logger(teams) print("::: PROCESS FINISHED :::") return teams except Exception as e: logger(e, True, "Teams", teams) return "::: ERROR TEAMS :::"
def fix_drivers(): ret = {} drivers = [] params = {} params["urlApi"] = current_app.config["API_URL"] data = api_request("get", params["urlApi"] + "/career") try: for i in range(0, len(data)): if (data[i]["idOrg"] == "5fd620a4f28c8a0017ca6bea"): print(data[i]["idCareer"]) txt = data[i]["idCareer"].split("|") txt[2] = txt[2].replace("_", "") txt[2] = re.sub("\d", "", txt[2]) data[i]["idCareer"] = txt[0] + "|" + \ txt[1] + "|" + txt[2] + "|" + txt[3] driver = api_request( "put", params["urlApi"] + "/career/update/" + data[i]["_id"], data[i]) drivers.append(driver) ret["drivers"] = drivers except Exception as e: logger(e, True, "Load", data) return ret
def get_driversST(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath( "//article[contains(@class, 'list-pilotos')]/a")) for it in range(0, len(items)): linkDriver = items[it].get_attribute("href") idDriver = get_id_link_AUVO(params, linkDriver, "D") txt = idDriver.split("_") strPlayer = "" strNumber = txt[0] for t in range(1, len(txt)): strPlayer += txt[t] + " " thumb = items[it].find_element_by_xpath(".//img").get_attribute( "src"), pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": strPlayer, "strNumber": strNumber, "numSeason": parse_int(params["year"]), "strThumb": thumb.replace(".png", "-253x300.png"), "strCutout": thumb, "strRSS": linkDriver, } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait( driver, 30, 1, (NoSuchElementException)).until(lambda d: d.find_elements_by_xpath( "//div[@id='session-results']/a")) for it in range(0, len(items)): tds = items[it].find_elements_by_xpath(".//div") strPlayer = tds[1].text strNumber = tds[3].text idPlayer = strNumber + "_" + strPlayer.replace(" ", "_", 9) pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idPlayer, "idCategory": params["catRCtrl"], "idRCtrl": idPlayer, "strPlayer": strPlayer, "strNumber": strNumber, "numSeason": parse_int(params["year"]), } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_champD(driver, pilots, params): ret = [] champ = {} data = [] try: print("::: CHAMPIONSHIP DRIVERS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath( "//div[@id='tabs-1']/div/ul[@class='puntajes']")) points = 0 for it in range(0, len(items)): tds = items[it].find_elements_by_xpath("./li") nameDriver = tds[2].find_element_by_xpath("./span").text idDriver = "" for p in range(0, len(pilots)): if (pilots[p]["strPlayer"].upper() == nameDriver.upper()): idDriver = pilots[p]["idRCtrl"] break if (idDriver == ""): idDriver = params["catRCtrl"].upper() + "-" + nameDriver.lower( ).strip().replace(" ", "_", 9) linkTeam = tds[1].find_element_by_xpath("./img").get_attribute( "src") pilot = { "idPlayer": idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": nameDriver.title(), "numSeason": parse_int(params["year"]), "strFanart4": linkTeam } pilots.append(pilot) line = { "idPlayer": idDriver, "position": parse_int(tds[0].text.replace("°", "")), "totalPoints": parse_float(tds[3].text), } points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } ret.append(pilots) ret.append(champ) logger(ret) print("::: PROCESS FINISHED :::") return ret except Exception as e: logger(e, True, "Championship", [pilots, champ]) return "::: ERROR CHAMP DRIVERS :::"
def get_champD(driver, params): champ = {} data = [] pilots = [] pilot = {} ret = [] try: print("::: CHAMPIONSHIP DRIVERS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath( "//tbody/tr") ) points = 0 for it in range(0, len(items)): tds = items[it].find_elements_by_xpath("./td") idDriver = tds[2].text idPlayer = params["catRCtrl"].upper() + "-" + \ idDriver.replace(" ", "_", 9).replace(",", "") line = { "idPlayer": idPlayer, "position": parse_int(tds[0].text), "totalPoints": parse_float(tds[4].text), "cups": parse_int(tds[5].text.replace("x", "")), } strFanart4 = get_brand_logo(tds[3].text) pilot = { "idPlayer": idPlayer, "idCategory": params["catRCtrl"], "idRCtrl": idPlayer, "strPlayer": idDriver.title(), "strTeam": tds[3].text, "strNumber": tds[1].text, "strFanart4": strFanart4, "numSeason": parse_int(params["year"]), "isOnlyImg": False } pilots.append(pilot) points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } ret.append(pilots) ret.append(champ) logger(ret) print("::: PROCESS FINISHED :::") return ret except Exception as e: logger(e, True, "Championship", [pilots, champ]) return "::: ERROR CHAMP DRIVERS :::"
def get_events(driver, params): data = [] events = [] circuits = [] circList = [] try: print("::: EVENTS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//tbody/tr")) for it in range(0, len(items)): tds = items[it].find_elements_by_xpath("./td") idEvent = tds[2].text.replace(" ", "_", 20) event = { "idEvent": params["catRCtrl"].upper() + "-" + params["year"] + "-" + str(it + 1) + "-" + idEvent, "strEvent": tds[2].text, "idCategory": params["catRCtrl"], "idRCtrl": str(it + 1) + "_" + idEvent, "intRound": str(it + 1), "strDate": tds[1].text, "idCircuit": "CARX_" + idEvent, "strCircuit": tds[2].text, "numSeason": parse_int(params["year"]), "strSeason": params["year"], } events.append(event) circuit = { "idCircuit": event["idCircuit"], "strCircuit": event["strEvent"], "idRCtrl": event["idCircuit"], "strLeague": "carx", "strCountry": "Argentina", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "ARG", } if (circuit["idCircuit"] not in circList): circuits.append(circuit) circList.append(circuit["idCircuit"]) data.append(circuits) data.append(events) logger(data) print("::: PROCESS FINISHED :::") return data except Exception as e: logger(e, True, "Events", [events, circuits]) return "::: ERROR EVENTS :::"
def get_events(driver, params): events = [] try: print("::: EVENTS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//tbody/tr")) for it in range(1, len(items)): tds = items[it].find_elements_by_xpath("./td") if (params["catOrigen"] == "2"): idd = 0 else: idd = 1 linkEvent = tds[3 + idd].find_element_by_xpath( "./a").get_attribute("href") idEvent = get_id_link_APAT(params, linkEvent, "E") link = tds[2].find_elements_by_xpath("./a") if (len(link) > 0): linkCircuit = link[0].get_attribute("href") idCircuit = get_id_link_APAT(params, linkCircuit, "C") else: linkCircuit = tds[2].text idCircuit = tds[2].text.replace(" ", "_") event = { "idEvent": params["catRCtrl"].upper() + "-" + params["year"] + "-" + str(it + 1) + "-" + idEvent, "strEvent": tds[2].text, "idCategory": params["catRCtrl"], "idRCtrl": idEvent, "intRound": str(it + 1), "strDate": tds[1].text, "strResult": tds[3 + idd].text, "idCircuit": idCircuit, "strCircuit": tds[2].text, "numSeason": parse_int(params["year"]), "strSeason": params["year"], "strRSS": linkEvent, } events.append(event) logger(events) print("::: PROCESS FINISHED :::") return events except Exception as e: logger(e, True, "Events", events) return "::: ERROR EVENTS :::"
def get_champD(driver, params): champ = {} pilots = [] data = [] ret = [] try: print("::: CHAMPIONSHIP DRIVERS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//tbody/tr")) points = 0 for it in range(1, len(items)): tds = items[it].find_elements_by_xpath("./td") nameDriver = tds[2].text text = nameDriver.split(",") idDriver = text[1].strip().replace(" ", "-", 9) + "-" + text[0].strip() line = { "idPlayer": idDriver.lower(), "position": parse_int(tds[0].text), "totalPoints": parse_float(tds[len(tds) - 1].text), } points += line["totalPoints"] data.append(line) pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver.lower(), "idCategory": params["catRCtrl"], "idRCtrl": idDriver.lower(), "strPlayer": (text[1].strip() + " " + text[0].strip()).title(), "strNumber": tds[1].text, "numSeason": parse_int(params["year"]), } pilots.append(pilot) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } ret.append(pilots) ret.append(champ) logger(ret) print("::: PROCESS FINISHED :::") return ret except Exception as e: logger(e, True, "Championship", [pilots, champ]) return "::: ERROR CHAMP DRIVERS :::"
def get_teams(driver, params): teams = [] teamList = [] try: print("::: TEAMS") tables = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//table")) for table in range(0, len(tables)): th = tables[table].find_element_by_xpath("./thead/tr/th[1]").text if (th == "Teams"): tbodys = tables[table].find_elements_by_xpath("./tbody") for body in range(0, len(tbodys)): trs = tbodys[body].find_elements_by_xpath("./tr") for tr in range(0, len(trs)): tds = trs[tr].find_elements_by_xpath("./td") if (tds[0].text != ""): linkTeam = get_link_MSS(tds[0]) idTeam = get_id_link_MSS(params["urlBase"], linkTeam, "T") strTeam = tds[0].text team = { "idTeam": params["catRCtrl"].upper() + "-" + idTeam.strip(), "strTeam": strTeam, "idCategory": params["catRCtrl"], "idRCtrl": idTeam, "idMss": idTeam, "strTeamFanart4": get_brand_logo(strTeam), "numSeason": parse_int(params["year"]), "strGender": "T", "strRSS": linkTeam, } if (team["idTeam"] not in teamList): teams.append(team) teamList.append(team["idTeam"]) break break logger(teams) print("::: PROCESS FINISHED :::") return teams except Exception as e: logger(e, True, "Teams", teams) return "::: ERROR TEAMS :::"
def get_teams(driver, params): teams = [] try: print("::: TEAMS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath( "//div[contains(@class, 'team')]/div[@class='row']")) for it in range(0, len(items)): linkTeam = items[it].find_element_by_xpath( ".//div[@class='team-img']").get_attribute("style").replace( 'background-image: url("', '').replace('");', '') idTeam = get_id_link_TR(params, linkTeam, "T") try: city = items[it].find_element_by_xpath( ".//div[@class='title']/span").text except Exception: city = "" team = { "idTeam": params["catRCtrl"].upper() + "-" + idTeam, "strTeam": items[it].find_element_by_xpath(".//h4").text, "idCategory": params["catRCtrl"], "idRCtrl": idTeam, "numSeason": parse_int(params["year"]), "strGender": "T", "strTeamLogo": params["urlBase"] + linkTeam, "strTeamBadge": params["urlBase"] + linkTeam, "strStadiumLocation": city, } social = items[it].find_elements_by_xpath( ".//ul[contains(@class, 'social-list')]/li") if len(social) > 0: for i in range(0, len(social)): link = social[i].find_element_by_xpath( ".//a").get_attribute("href") classs = social[i].get_attribute("class") if ("twitter" in classs): team["strTwitter"] = link elif ("insta" in classs): team["strInstagram"] = link elif ("face" in classs): team["strFacebook"] = link elif ("tube" in classs): team["strYoutube"] = link elif ("web" in classs): team["strWebsite"] = link teams.append(team) logger(teams) print("::: PROCESS FINISHED :::") return teams except Exception as e: logger(e, True, "Teams", teams) return "::: ERROR TEAMS :::"
def get_drivers(driver, params, teams): pilots = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath("//div[@id='pilot']/div/a")) for it in range(0, len(items)): linkDriver = items[it].get_attribute("href") idDriver = get_id_link_TR(params, linkDriver, "D") thumb = items[it].find_element_by_xpath( ".//img[@class='pilot-thumb']").get_attribute("src") if ("avatar-torso" in thumb): thumb = "" strTeam = items[it].find_element_by_xpath( ".//span[@class='display-block']").text pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": items[it].get_attribute("title"), "strNumber": items[it].find_element_by_xpath(".//h5").text, "strTeam": strTeam, "numSeason": parse_int(params["year"]), "strThumb": thumb, "strCutout": thumb, "strFanart4": items[it].find_element_by_xpath( ".//div[@class='logo']/img").get_attribute("src"), "strRSS": linkDriver, } for t in range(0, len(teams)): if (teams[t]["strTeam"].upper() == strTeam.upper()): pilot["idTeam"] = teams[t]["idTeam"] break pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_events(driver, params): data = [] events = [] circuits = [] circList = [] try: print("::: EVENTS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath( "//figure[contains(@class, 'vc_figure')]/div/img") ) for it in range(0, len(items) - 1): linkEvent = items[it].get_attribute("src") idEvent = get_id_link_APTP(params, linkEvent, "E") event = { "idEvent": params["catRCtrl"].upper() + "-" + params["year"] + "-" + str(it + 1) + "-" + idEvent, "strEvent": "#" + str(it + 1), "idCategory": params["catRCtrl"], "idRCtrl": idEvent, "intRound": str(it + 1), "idCircuit": idEvent, "strCircuit": "", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "strRSS": linkEvent, } events.append(event) circuit = { "idCircuit": event["idCircuit"], "strCircuit": "", "idRCtrl": event["idCircuit"], "strLeague": "aptp", "strCountry": "Argentina", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "ARG", "strLogo": linkEvent } if(circuit["idCircuit"] not in circList): circuits.append(circuit) circList.append(circuit["idCircuit"]) data.append(circuits) data.append(events) logger(data) print("::: PROCESS FINISHED :::") return data except Exception as e: logger(e, True, "Events", [events, circuits]) return "::: ERROR EVENTS :::"
def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until(lambda d: d.find_elements_by_xpath( "//div[contains(@class, 'kf_roster_dec6')]")) for it in range(0, len(items)): linkDriver = items[it].find_element_by_xpath( ".//h3/a").get_attribute("href") idDriver = get_id_link_CARX(params, linkDriver, "D") thumb = items[it].find_element_by_xpath( ".//figure/img").get_attribute("src") pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": items[it].find_element_by_xpath(".//h3/a").text.title(), "strNumber": items[it].find_element_by_xpath( ".//div[@class='text']/span").text, "numSeason": parse_int(params["year"]), "strThumb": thumb.replace(".jpg", "-300x300.jpg"), "strCutout": thumb.replace(".jpg", "-180x180.jpg"), "strRender": thumb, "strFanart4": items[it].find_element_by_xpath( ".//div[@class='cntry-flag']/img").get_attribute("src"), "strRSS": linkDriver, } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def upd_CATS(params): ret = {} params["urlApi"] = current_app.config["API_URL"] data = api_request("get", params["urlApi"] + "/org") try: for i in range(0, len(data)): if (len(data[i]["categories"]) > 0): cats = data[i]["categories"] for it in range(0, len(cats)): print(cats[it]["idRCtrl"]) # if(cats[it]["idMss"] != ""): ans = run_script_upd(cats[it], params) ret[cats[it]["idLeague"]] = ans except Exception as e: logger(e, True, "Load", data) return ret
def get_drivers(driver, params): pilots = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until( lambda d: d.find_elements_by_xpath( "//div[@class='driver-listing']/ul/li/a") ) for it in range(0, len(items)): linkDriver = items[it].get_attribute("href") idDriver = get_id_link_ACTC(params, linkDriver, "D") team = items[it].find_element_by_xpath( ".//div[@class='team']").text strPlayer = items[it].find_element_by_xpath( ".//h2").text thumb = params["urlBase"] + items[it].find_element_by_xpath( ".//figure/img").get_attribute("data-original") if("avatar-torso" in thumb): thumb = "" pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": strPlayer.replace("<br>", "", 2).replace( ",", ", ").strip(), "strNumber": items[it].find_element_by_xpath( ".//div[@class='car-data']/span").text, "idTeam": params["catRCtrl"].upper() + "-" + team.replace(" ", "_", 10), "strTeam": team, "numSeason": parse_int(params["year"]), "strThumb": thumb, "strCutout": thumb, "strFanart4": params["urlBase"] + items[it].find_element_by_xpath( ".//div[@class='logo']/img").get_attribute("data-original"), "strRSS": linkDriver, } pilots.append(pilot) logger(pilots) print("::: PROCESS FINISHED :::") return pilots except Exception as e: logger(e, True, "Drivers", pilots) return "::: ERROR DRIVERS :::"
def get_champD(driver, params): champ = {} data = [] try: print("::: CHAMPIONSHIP DRIVERS") items = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath( "//table[@id='table-hidden-content']/tbody/tr")) points = 0 for it in range(0, len(items)): tds = items[it].find_elements_by_xpath("./td") linkDriver = get_link_GPU(tds[2]) idDriver = get_id_link_GPU(params, linkDriver, "D") line = { "idPlayer": idDriver, "position": parse_int(tds[0].text.replace("°", "")), "totalPoints": parse_float(tds[5].text), "cups": parse_int(tds[3].text), } points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } logger(champ) print("::: PROCESS FINISHED :::") return champ except Exception as e: logger(e, True, "Championship", champ) return "::: ERROR CHAMP DRIVERS :::"
def get_teams(data, params): teams = [] teamList = [] try: print("::: TEAMS") for i in range(0, len(data)): team = { "idTeam": data[i]["idTeam"], "strTeam": data[i]["strTeam"], "idCategory": params["catRCtrl"], "idRCtrl": data[i]["idTeam"], "numSeason": parse_int(params["year"]), "strGender": "T", } if (data[i]["idTeam"] not in teamList): teams.append(team) teamList.append(data[i]["idTeam"]) logger(teams) print("::: PROCESS FINISHED :::") return teams except Exception as e: logger(e, True, "Teams", teams) return "::: ERROR TEAMS :::"
def create_career(): ret = {} careers = [] params = {} params["urlApi"] = current_app.config["API_URL"] data = api_request("get", params["urlApi"] + "/driver") try: for i in range(0, len(data)): if ("idTeam" not in data[i]): data[i]["idTeam"] = "0" print(data[i]["idPlayer"]) team = data[i].get("idTeam", "0") career = { "idCareer": str(data[i]["numSeason"]) + "|" + data[i]["idCat"] + "|" + data[i]["_id"] + "|" + team, "idPlayer": data[i]["_id"], "idOrg": data[i]["idOrg"], "idCat": data[i]["idCat"], "numSeason": data[i]["numSeason"] } if (team != "0"): career["idTeam"] = team careers.append(career) ret["careers"] = api_request("post", params["urlApi"] + "/career/create", careers) except Exception as e: logger(e, True, "Load", data) return ret
def get_champD(driver, params): champ = {} data = [] try: print("::: CHAMPIONSHIP DRIVERS") btn_show = None try: btn_show = WebDriverWait(driver, 30).until( lambda d: d.find_element_by_xpath('//button[@class="hFZZS"]')) btn_show.click() except Exception as e: logger(e, True, "Championship", btn_show) pass time.sleep(5) tables = WebDriverWait( driver, 30).until(lambda d: d.find_elements_by_xpath("//table")) for table in range(0, len(tables)): th = tables[table].find_element_by_xpath("./thead/tr/th[1]").text if (th == "Pos."): points = 0 trs = tables[table].find_elements_by_xpath("./tbody/tr") for tr in range(0, len(trs)): tds = trs[tr].find_elements_by_xpath("./td") linkDriver = get_link_MSS(tds[1]) idDriver = get_id_link_MSS(params["urlBase"], linkDriver, "D") line = { "idPlayer": idDriver, "position": parse_int(tds[0].text), "totalPoints": parse_float(tds[2].text), } points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "idMss": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } break logger(champ) print("::: PROCESS FINISHED :::") return champ except Exception as e: logger(e, True, "Championship", champ) return "::: ERROR CHAMP DRIVERS :::"
def get_events(driver, params): data = [] events = [] circuits = [] circList = [] try: print("::: EVENTS") items = WebDriverWait(driver, 30).until(lambda d: d.find_elements_by_xpath( "//div[contains(@class, 'day-item')]")) for it in range(0, len(items)): linkEvent, linkCircuit = "", "" linkDriver, strResult = "", "" try: linkEvent = items[it].find_element_by_xpath( ".//a[contains(@class, 'skew')]").get_attribute("href") except Exception: pass idEvent = get_id_link_TR(params, linkEvent, "E") try: linkCircuit = items[it].find_element_by_xpath( ".//img[@class='pilot-thumb']").get_attribute("src") except Exception: pass idCircuit = get_id_link_TR(params, linkCircuit, "C") try: linkDriver = items[it].find_element_by_xpath( ".//ul[@class='mb0']/li[1]/a").get_attribute("href") strResult = items[it].find_element_by_xpath( ".//ul[@class='mb0']/li[1]/a").text except Exception: pass idDriver = get_id_link_TR(params, linkDriver, "D") strCircuit = items[it].find_element_by_xpath( ".//span[contains(@class, 'circuit-name')]").get_attribute( "innerHTML") strEvent = items[it].find_element_by_xpath(".//h2").text strDate = items[it].find_element_by_xpath(".//h5").text if (idEvent == ""): idEvent = params["catRCtrl"].upper() + "-" + \ strEvent.replace(" ", "_", 9) if (idCircuit == ""): idCircuit = idEvent event = { "idEvent": params["catRCtrl"].upper() + "-" + params["year"] + "-" + str(it + 1) + "-" + strDate.replace(" ", "-", 5), "strEvent": strEvent, "idCategory": params["catRCtrl"], "idRCtrl": idEvent, "intRound": str(it + 1), "strDate": strDate, "idCircuit": idCircuit, "strCircuit": strCircuit, "idWinner": idDriver, "strResult": strResult, "numSeason": parse_int(params["year"]), "strSeason": params["year"], "strPostponed": "", "strRSS": linkEvent, } events.append(event) circuit = { "idCircuit": event["idCircuit"], "strCircuit": event["strEvent"], "idRCtrl": event["idCircuit"], "strLeague": "toprace", "strCountry": "Argentina", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "ARG", "strLogo": linkCircuit, } if (circuit["idCircuit"] not in circList): circuits.append(circuit) circList.append(circuit["idCircuit"]) data.append(circuits) data.append(events) logger(data) print("::: PROCESS FINISHED :::") return data except Exception as e: logger(e, True, "Events", [events, circuits]) return "::: ERROR EVENTS :::"
def get_circuits(driver, params): circuits = [] try: print("::: CIRCUITS") items = WebDriverWait( driver, 30 ).until(lambda d: d.find_elements_by_xpath( "//div[@class='row']/div[contains(@class,'col-md-4 nopadding')]")) for it in range(0, len(items)): linkCircuit = items[it].find_element_by_xpath( ".//a").get_attribute("href") idCircuit = get_id_link_APAT(params, linkCircuit, "C") thumb = items[it].find_elements_by_xpath( ".//div[@class='CirBody']/img") logo = "" if (len(thumb) > 0): logo = thumb[0].get_attribute("src") circuit = { "idCircuit": idCircuit, "strCircuit": items[it].find_element_by_xpath( ".//div[@class='CirTitulo']").text, "idRCtrl": idCircuit, "strLeague": "apat", "strCountry": "Argentina", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "ARG", "strLogo": logo } circuits.append(circuit) circuit = { "idCircuit": "A_confirmar", "strCircuit": "A confirmar", "idRCtrl": "A_confirmar", "strLeague": "apat", "strCountry": "Argentina", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "ARG", "strLogo": "https://www.actc.org.ar/upload/circuitos/31/imgs_v3/calendario/circuito-a-confirmar.png" } circuits.append(circuit) logger(circuits) print("::: PROCESS FINISHED :::") return circuits except Exception as e: logger(e, True, "Circuits", circuits) return "::: ERROR EVENTS :::"
def get_drivers(driver, params): pilots = [] champ = {} data = [] ret = [] try: print("::: DRIVERS") items = WebDriverWait(driver, 30).until(lambda d: d.find_elements_by_xpath( "//tbody/tr[@class='TabResData']")) points = 0 for it in range(0, len(items) - 1): tds = items[it].find_elements_by_xpath("./td") thumb = tds[0].find_element_by_xpath(".//img").get_attribute("src") if ("sin_foto" in thumb or "sin_foto" in thumb): thumb = "" lastre = "Lastre: " + tds[4].text text = tds[1].get_attribute('innerHTML').split("\n") strPlayer = text[0].strip() idDriver = tds[2].text + "_" + strPlayer.replace(" ", "_", 9) text = text[1].strip().replace(" ", "@", 1).split("@") strTeam = text[0].strip() idTeam = strTeam.lower().replace(" ", "_", 9) strBirth = "" if (len(text) > 1): strBirth = text[1].strip() pilot = { "idPlayer": params["catRCtrl"].upper() + "-" + idDriver, "idCategory": params["catRCtrl"], "idRCtrl": idDriver, "strPlayer": strPlayer, "strNumber": tds[2].text, "idTeam": params["catRCtrl"].upper() + "-" + idTeam, "strTeam": strTeam, "strTeam2": tds[5].text, "dateBorn": tds[8].text, "strBirthLocation": strBirth.title(), "strSide": lastre, "numSeason": parse_int(params["year"]), "strFanart4": get_brand_logo(tds[5].text), "strThumb": thumb, "strCutout": thumb, "strRender": thumb.replace("/thumb/", "/mediana/"), "strRSS": thumb, } pilots.append(pilot) line = { "idPlayer": idDriver, "position": it + 1, "totalPoints": parse_float(tds[3].text), } points += line["totalPoints"] data.append(line) champ = { "idChamp": params["catRCtrl"].upper() + "-" + params["year"] + "-D", "numSeason": parse_int(params["year"]), "strSeason": params["year"], "idCategory": params["catRCtrl"], "idRCtrl": params["catOrigen"], "data": data, "sumPoints": points, "typeChamp": "D" } ret.append(pilots) ret.append(champ) logger(ret) print("::: PROCESS FINISHED :::") return ret except Exception as e: logger(e, True, "Drivers", [pilots, champ]) return "::: ERROR DRIVERS :::"
def get_events(driver, params): data = [] events = [] circuits = [] circList = [] try: print("::: EVENTS") items = WebDriverWait(driver, 30).until(lambda d: d.find_elements_by_xpath( "//p[@class='font_8']/span/span")) for it in range(0, len(items)): text = items[it].text.split("–") idEvent = (text[0].strip() + "_" + text[1].strip()).replace( " ", "_").lower() thumb = driver.find_element_by_xpath( "//img[@id='comp-kebyzopeimgimage']").get_attribute("src") event = { "idEvent": params["catRCtrl"].upper() + "-" + params["year"] + "-" + str(it + 1) + "-" + idEvent, "strEvent": text[0].strip(), "idCategory": params["catRCtrl"], "idRCtrl": str(it + 1) + "_" + idEvent, "intRound": str(it + 1), "strDate": text[2].strip(), "idCircuit": "CUR_" + text[1].strip(), "strCircuit": text[1].strip(), "numSeason": parse_int(params["year"]), "strSeason": params["year"], } events.append(event) circuit = { "idCircuit": event["idCircuit"], "strCircuit": event["strCircuit"], "idRCtrl": event["idCircuit"], "strLeague": "cur", "strCountry": "Uruguay", "numSeason": parse_int(params["year"]), "intSoccerXMLTeamID": "URY", "strLogo": thumb, } if (circuit["idCircuit"] not in circList): circuits.append(circuit) circList.append(circuit["idCircuit"]) data.append(circuits) data.append(events) logger(data) print("::: PROCESS FINISHED :::") return data except Exception as e: logger(e, True, "Events", [events, circuits]) return "::: ERROR EVENTS :::"