Пример #1
0
def enter_market(auth, db):
    """ Recorremos las páginas de mercado

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    db -- Objeto de conexion a la BD.
  """

    db.market.delete_many({})
    print(show("market") + " > Mercado previo eliminado")

    params = {
        "juvenil": 0,
        "tiempos": 0,
        "posiciones": -1,
        "calidad": 14,
        "edad": -1,
        "cdirecta": 0
    }

    print(show("market") + " > Analizando Mercado Seniors")
    for p_time in range(2, 5):
        params["tiempos"] = p_time
        for p_avg in range(11, 17):
            params["calidad"] = p_avg
            analyze_market_page(auth, params, db)

    print(show("market") + " > Analizando Mercado Juniors")
    params["juvenil"] = 1
    params["edad"] = 0  # 14 años
    for p_time in range(2, 5):
        params["tiempos"] = p_time
        for p_avg in range(4, 6):
            params["calidad"] = p_avg
            analyze_market_page(auth, params, db)
Пример #2
0
def analyze_team_page(auth, db, id_team):
    """ Analizamos la pagina del equipo

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    db -- Objeto de conexion a la BD.
  """
    session = login(auth)

    url = "http://es.ibasketmanager.com/equipo.php?id=" + id_team
    r = session.get(url)
    load_status = 0
    while load_status != 200:
        load_status = r.status_code

    print(show("profile") + " > Analizando perfil del equipo")

    soup = BeautifulSoup(r.content, "html.parser")

    trs2 = soup.find_all("tr", {"class": "tipo2"})

    id_user = trs2[0].find("a")["href"].split("=")[1]
    streak = trs2[2].find_all("td")[1].text
    club_seats = trs2[3].find_all("td")[1].text.replace(".", "").strip()
    ranking = trs2[4].find_all("td")[1].text.replace("Ranking", "").strip()

    trs1 = soup.find_all("tr", {"class": "tipo1"})
    fans = trs1[3].find_all("td")[1].text.replace(".", "").strip()

    return [id_user, club_seats, fans, ranking, streak]
Пример #3
0
def analyze_init(auth, db):
    """ Analizamos la pagina de inicio

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    db -- Objeto de conexion a la BD.
  """
    session = login(auth)

    url = "http://es.ibasketmanager.com/inicio.php"
    r = session.get(url)
    load_status = 0
    while load_status != 200:
        load_status = r.status_code

    print(show("profile") + " > Analizando perfil inicial")

    soup = BeautifulSoup(r.content, "html.parser")
    a = soup.find_all("a", {"class": "color_skin"})
    camisetas = soup.find_all("div", {"class": "camiseta"}, style=True)
    color_prim = camisetas[0]["style"].split(":")[1].strip()
    color_sec = camisetas[1]["style"].split(":")[1].strip()
    # print(a)
    username = a[0].text
    id_team = a[2]["href"].split("=")[1].strip()
    team_name = a[2].text.strip()
    money = a[3].text.replace('€', '').replace('.', '').strip()

    return [id_team, username, team_name, money, color_prim, color_sec]
Пример #4
0
def get_profile_data(auth, db):
    """ Obtenemos los datos del perfil del usuario actual
    Devolvemos el id del equipo

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    db -- Objeto de conexion a la BD.
  """

    id_team, user, team, money, color_prim, color_sec = analyze_init(auth, db)
    id_user, seats, fans, ranking, streak = analyze_team_page(
        auth, db, id_team)

    v_profile = profile.Profile(id_user, user, id_team, team, money,
                                color_prim, color_sec, seats, fans, ranking,
                                streak)

    if (db.profile.find_one({"id": int(id_team)}) is not None):
        db.profile.replace_one({"id": int(id_team)},
                               v_profile.to_db_collection())
    else:
        db.profile.insert_one(v_profile.to_db_collection())

    print(show("profile") + " > Perfil actualizado")

    return id_team
Пример #5
0
def enter_team(auth, db, own_team_id):
    """ Recorremos las páginas de plantilla y cantera del equipo
    y registra los atributos de los jugadores para
    la posterior comprobación de la progresión

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    db -- Objeto de conexion a la BD.
    own_team_id -- Id del equipo
  """
    session = login(auth)

    # Analizo el progreso del equipo
    print(
        show("team_info") + "   > Analizando Equipo propio: " +
        str(own_team_id))

    # Seniors
    print(show("roster") + "   -> Plantilla: " + str(own_team_id))
    players_ids = roster_page.enter_senior_roster(own_team_id, auth)
    for player_id in players_ids:
        player = player_page.get_player_data(player_id, auth)

        player_page.insert_player(player, player_id, db)

        db.players_progression.insert_one(player[1].to_db_collection())

    # Juniors
    print(show("juniors") + "   -> Cantera:   " + str(own_team_id))
    juniors_ids = roster_page.enter_junior_roster(own_team_id, auth)
    for junior_id in juniors_ids:
        junior = player_page.get_player_data(junior_id, auth)

        player_page.insert_player(junior, junior_id, db)

        db.players_progression.insert_one(player[1].to_db_collection())
Пример #6
0
def analyze_market_page(auth, params, db):
    """ Accede a la página del mercado obtenida de los parametros

  Keyword arguments:
    auth -- Cadena de autenticacion a la web.
    params -- Parametros para construir la url del mercado.
    db -- Objeto de conexion a la BD.
  """

    session = login(auth)

    market_url = "http://es.ibasketmanager.com/mercado.php"
    market_url = market_url + "?juvenil=" + str(params["juvenil"])
    market_url = market_url + "&tiempos=" + str(params["tiempos"])
    market_url = market_url + "&posiciones=" + str(params["posiciones"])
    market_url = market_url + "&calidad=" + str(params["calidad"])
    market_url = market_url + "&edad" + str(params["edad"])
    market_url = market_url + "&cdirecta=" + str(params["cdirecta"])
    print(show("market") + ">{ " + market_url + " }")

    r = session.get(market_url)
    load_status = 0
    while load_status != 200:
        load_status = r.status_code
    auctions = get_auctions(r.content)

    for v_auction in auctions:
        # print("\t{}".format(auction))
        # Realizamos un analisis profundo de cada jugador
        player = player_page.get_player_data(v_auction.id_player, auth)
        # Esto es una tupla
        similars = player_page.get_similar_data(v_auction.id_player, auth)
        # print(similars)
        # Insertamos la subasta
        db.market.insert_one(v_auction.to_db_collection())

        player_page.insert_player(player, v_auction.id_player, db)
        player_page.insert_similars(similars, db)
Пример #7
0
def config():
    """ Obtenemos la configuración de la app desde el fichero solicitado. 
    En caso de que no exista, solictamos los datos necesarios y lo creamos."""

    settings = {}
    if os.path.isfile('./ibm_auto_manager/config/settings.json'):
        print(show("config") + "Encontrado fichero configuración")

        with open("./ibm_auto_manager/config/settings.json",
                  "r") as settings_file:
            settings = json.load(settings_file)
        settings_file.close

        print(show("config") + "Configuración cargada con éxito")
    else:
        print(show("config") + "! No se encuentra fichero de configuración")
        print(show("config") + "! Se va a proceder a generar el fichero")
        print(show("config") + "! Se realizaran múltiples preguntas")

        print("\n" + show("config") + "Configuración de conexión")
        settings["mongodb"] = ""
        while settings["mongodb"] == "":
            settings["mongodb"] = input(
                " Introduce la cadena de conexión a la BD: ")
        settings["proxy"] = input(
            " Introduce la cadena del proxy (opcional): ")

        print("\n" + show("config") + "Configuración de usuario")
        settings["user"] = {}
        settings["user"]["alias"] = ""
        while settings["user"]["alias"] == "":
            settings["user"]["alias"] = input(
                " Introduce tu Alias del juego: ")
        settings["user"]["password"] = ""
        while settings["user"]["password"] == "":
            settings["user"]["password"] = getpass.getpass(
                " Introduce tu Password: "******"\n" + show("config") +
              "Configuración de automatización (Tienda)")
        settings["shop"] = {}
        settings["shop"]["llaveros"] = input(
            " Introduce cantidad de Llaveros (6400): ") or "6400"
        settings["shop"]["banderolas"] = input(
            " Introduce cantidad de Banderolas (6400): ") or "6400"
        settings["shop"]["balones"] = input(
            " Introduce cantidad de Balones (6400): ") or "6400"
        settings["shop"]["camisetas"] = input(
            " Introduce cantidad de Camisetas (6400): ") or "6400"
        settings["shop"]["zapatillas"] = input(
            " Introduce cantidad de Zapatillas (6400): ") or "6400"

        print("\n" + show("config") +
              "Configuración de automatización (Catering)")
        settings["catering"] = {}
        settings["catering"]["refrescos"] = input(
            " Introduce cantidad de Refrescos (2000): ") or "2000"
        settings["catering"]["frankfurts"] = input(
            " Introduce cantidad de Frankfurts (1000): ") or "1000"
        settings["catering"]["pipas"] = input(
            " Introduce cantidad de Pipas (1000): ") or "1000"
        settings["catering"]["bocadillo"] = input(
            " Introduce cantidad de Bocadillos (1000): ") or "1000"
        settings["catering"]["cerveza"] = input(
            " Introduce cantidad de Cerveza (1250): ") or "1250"
        settings["catering"]["patatas"] = input(
            " Introduce cantidad de Bolsa de Patatas (1000): ") or "1000"
        settings["catering"]["berberechos"] = input(
            " Introduce cantidad de Berberechos (1000): ") or "1000"
        settings["catering"]["canapes"] = input(
            " Introduce cantidad de Canapés (1250): ") or "1250"
        settings["catering"]["arroz"] = input(
            " Introduce cantidad de Arroz Frito (1000): ") or "1000"
        settings["catering"]["vino"] = input(
            " Introduce cantidad de Vino (2000): ") or "2000"
        settings["catering"]["spaguetti"] = input(
            " Introduce cantidad de Spaguetti (1250): ") or "120"
        settings["catering"]["ensalada"] = input(
            " Introduce cantidad de Ensalada (1000): ") or "1000"
        settings["catering"]["cava"] = input(
            " Introduce cantidad de Cava (1000): ") or "1000"
        settings["catering"]["gnocchi"] = input(
            " Introduce cantidad de Gnocci (1250): ") or "1250"
        settings["catering"]["sushi"] = input(
            " Introduce cantidad de Sushi (1000): ") or "1000"
        settings["catering"]["bistec"] = input(
            " Introduce cantidad de Bistec (1250): ") or "1250"
        settings["catering"]["risotto"] = input(
            " Introduce cantidad de Risotto (1250): ") or "1250"
        settings["catering"]["rodaballo"] = input(
            " Introduce cantidad de Rodaballo (1750): ") or "1750"
        settings["catering"]["solomillo"] = input(
            " Introduce cantidad de Solomillo (1000): ") or "1000"
        settings["catering"]["caviar"] = input(
            " Introduce cantidad de Caviar (1000): ") or "1000"

        # Creamos el fichero de configuración
        print(show("config") + "Fichero de configuración creado con éxito")

        with open("./ibm_auto_manager/config/settings.json",
                  "w") as settings_file:
            json.dump(settings, settings_file, indent=4, ensure_ascii=False)
        settings_file.close

        print(show("config") + "Configuración cargada con éxito")

    # Aplicamos la configuración
    if settings["proxy"] != "":
        os.environ["http_proxy"] = settings["proxy"]
        os.environ["HTTP_PROXY"] = settings["proxy"]
        os.environ["https_proxy"] = settings["proxy"]
        os.environ["HTTPS_PROXY"] = settings["proxy"]

    print(show("config") + "Configuración aplicada con éxito")

    return settings