Esempio n. 1
0
def main():
    # verify that the necessary files exist
    battletag_from_cli = []
    if len(sys.argv) == 1:
        try:
            verify_files_exists(REGION_CODES)
        except FileNotFoundError:
            exit(1)
    elif len(sys.argv) == 2:
        if not os.path.exists(sys.argv[1]):
            Log.write_log_message("Specified file does not exist, exiting...",
                                  True)
        btags = open(sys.argv[1], "r")
        for btag in btags:
            battletag_from_cli.append(btag.strip())

    # get the API request parameters
    request_parameters = get_request_parameters()

    # get the current season ID
    season_id = -1
    try:
        season_id = API.get_current_season_id(request_parameters)
    except RequestError as e:
        print(e)
        exit(1)
    Log.write_log_message("Current Season ID: {}".format(season_id))

    db_handle = MySQL()

    for region in REGION_CODES:
        Log.write_log_message("Starting {} Region".format(region.upper()))

        # get ladders
        ladders = API.get_all_ladders(region, MAX_LEAGUE_ID, season_id,
                                      request_parameters)
        Log.write_log_message("Total Ladders Found: {}".format(len(ladders)))

        # add all of the ladders to the database
        try:
            add_ladders_to_database(db_handle, ladders)
        except MySQLdb.IntegrityError:
            Log.write_log_message(
                "Ladders are already in database for {}".format(
                    region.upper()))

        # read in btags to a list
        if len(battletag_from_cli) == 0:
            battletags = get_battletags(region)
        else:
            battletags = battletag_from_cli
        num_battletags = len(battletags)
        Log.write_log_message("Battletags Read In: {}".format(num_battletags))

        # go through every ladder looking for one of our players
        for ladder in ladders:
            # loop through every ladder between bronze and diamond

            # get all of the players in the ladder
            players = API.get_players_in_ladder(region, ladder,
                                                request_parameters)

            for player in players:
                # loop through every player in the ladder

                if [battletag.lower() for battletag in battletags
                    ].__contains__(player.battletag.lower()):
                    # a JSL contestant was found
                    db_handle.add_player(player)

                    for team in player.ladders:
                        db_handle.add_race(player, team)

                    for team in player.ladders:
                        Log.write_log_message(
                            "Found player: {} [{} {} {}]".format(
                                player.battletag, team.league, team.divison,
                                team.race))

    # get all players in database
    Log.write_log_message("Writing valid player data to disk")
    valid_players = db_handle.get_all_valid_players()
    write_valid_players(valid_players)

    # close database
    db_handle.close()