Ejemplo n.º 1
0
def conocer_actor(details, casting, actorName) -> dict:
    # Este es el requerimiento opcional.
    lista = [
        node["id"]
        for node in h.travel(casting)
        if node["actor1_name"] == actorName
        or node["actor2_name"] == actorName
        or node["actor3_name"] == actorName
        or node["actor4_name"] == actorName
        or node["actor5_name"] == actorName
    ]
    actInf = []
    for node in h.travel(details):
        if node["id"] in lista:
            ac = {
                "num": {node["id"]},
                "avg": {node["vote_average"]},
                "title": node["title"],
                "director_name": node["director_name"],
            }
            ac["numPeliculas"] = len(ac["num"])
            ac["vote_average"] = ac["avg"] / len(ac["avg"])
            actInf.append(ac)

    return actInf
Ejemplo n.º 2
0
def entender_genero(map_genero, genero):
    lst = mp.get(map_genero, genero)["value"]
    length = lt.size(lst)
    avg_vote_lst = [int(i["vote_count"]) for i in h.travel(lst)]
    avg_vote = sum(avg_vote_lst) / len(avg_vote_lst)

    return lst, length, avg_vote
Ejemplo n.º 3
0
def descubrir_productoras(map_productoras, prod):
    lst = mp.get(map_productoras, prod)["value"]
    length = lt.size(lst)
    avg_vote_lst = [int(i["vote_count"]) for i in h.travel(lst)]
    avg_vote = sum(avg_vote_lst) / len(avg_vote_lst)

    return lst, length, avg_vote
def entender_genero(details, genero):
    lista_genero = h.filter(details, "genres", genero, impl="ARRAY_LIST")
    length = lt.size(lista_genero)

    avg_vote_lst = [int(i["vote_count"]) for i in h.travel(lista_genero)]
    avg_vote = sum(avg_vote_lst) / len(avg_vote_lst)

    return lista_genero, length, avg_vote
def crear_ranking_peli(details, x=10, ascendent=True):
    if ascendent:
        sort.quickSort(details, h.comp_count_avg_asc)
    else:
        sort.quickSort(details, h.comp_count_avg_desc)

    ranking = [item for item in itert.islice(h.travel(details), 0, x)]

    return ranking
Ejemplo n.º 6
0
def buenasPeliculas(director_name, casting, details) -> tuple:

    lst1 = [
        node["id"]
        for node in h.travel(casting)
        if node["director_name"] == director_name
    ]

    lst2 = [
        float(node["vote_average"])
        for node in h.travel(details)
        if node["id"] in lst1 and float(node["vote_average"]) >= 6
    ]

    if len(lst2) <= 0:
        return (0, 0)
    else:
        return (len(lst2), (sum(lst2)) / len(lst2))
Ejemplo n.º 7
0
def pel_countrie(m_pais, m_id_cast, pais):
    lst = mp.get(m_pais, pais)["value"]

    dir = [
        mp.get(m_id_cast, i)["value"]["first"]["info"]["director_name"]
        for i in h.travel(lst, "id")
    ]

    return lst, dir
def conocer_director(details, casting, director_name) -> dict:

    lst = [
        node["id"]
        for node in h.travel(casting)
        if node["director_name"] == director_name
    ]

    info = []
    for node in h.travel(details):
        if node["id"] in lst:
            d = {
                "id": node["id"],
                "title": node["title"],
                "vote_average": node["vote_average"],
            }
            info.append(d)

    return info
def crear_ranking_genero(details, genero, retrieve=10, ascendent=True):

    dgend = h.filter(details, "genres", genero, impl="ARRAY_LIST")

    if ascendent:
        sort.quickSort(dgend, h.comp_count_avg_asc)
    else:
        sort.quickSort(dgend, h.comp_count_avg_desc)

    raw = [item for item in itert.islice(h.travel(dgend), 0, retrieve)]

    ranking = [peli["title"] for peli in raw]

    avg_vote_lst = [int(i["vote_count"]) for i in raw]
    avg_vote = sum(avg_vote_lst) / len(avg_vote_lst)

    return ranking, avg_vote
Ejemplo n.º 10
0
def main():
    """
    Método principal del programa, se encarga de manejar todos los metodos adicionales creados

    Instancia una lista vacia en la cual se guardarán los datos cargados desde el archivo
    Args: None
    Return: None
    """

    while True:
        printMenu()  # imprimir el menu de opciones en consola
        # leer opción ingresada
        inputs = input("Seleccione una opción para continuar\n")
        if len(inputs) > 0:

            if int(inputs[0]) == 1:  # opcion 1
                lista_details = h.loadCSVFile(
                    details, impl="ARRAY_LIST", cmpfunction=None
                )
                lista_casting = h.loadCSVFile(
                    casting, impl="ARRAY_LIST", cmpfunction=None
                )

            elif int(inputs[0]) == 2:  # opcion 2
                director = input("Ingrese el nombre del director\n")
                buenaspelis = req.buenasPeliculas(
                    director, lista_casting, lista_details
                )
                print(
                    f"Se encontraron {buenaspelis[0]} buenas películas con los parámetros dados."
                )
                print(
                    f"El promedio de la votación por dichas películas es de {buenaspelis[1]}."
                )

            elif int(inputs[0]) == 3:  # opcion 3
                num = int(input("Cuántas entradas quiere para el ranking? \n"))
                asc = bool(
                    int(
                        input(
                            "Digite:\n"
                            + "1 si desea se muestren las peliculas mejor calificadas\n"
                            + "0 si desea que se muestren las peor calificadas\n"
                        )
                    )
                )
                try:
                    ranking = req.crear_ranking_peli(lista_details, num, asc)
                    print("El ranking de películas es:\n")
                    cont = 0
                    pal = "ascendentemente" if asc else "descendentemente"
                    print(f"Ranking ordenado por votos {pal}:\n")
                    for i in ranking:
                        cont += 1
                        spc = 25 - len(i["title"])
                        print(
                            f"{cont}. {i['title']}{' '*spc} - vote count: {i['vote_count']} - vote average: {i['vote_average']}"
                        )
                    print()
                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")

            elif int(inputs[0]) == 5:  # opcion 5
                director = input("Ingrese el nombre del director\n")
                try:
                    information = req.conocer_director(
                        lista_details, lista_casting, director
                    )
                    for d in information:
                        print(
                            "id:",
                            d["id"],
                            " - " "title:",
                            d["title"],
                            " - ",
                            "vote average:",
                            d["vote_average"],
                        )
                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")

            elif int(inputs[0]) == 4:  # opcion 4
                name = input("Ingrese el nombre del actor\n")
                try:
                    inf = req.conocer_actor(lista_details, lista_casting, name)
                    for ac in inf:
                        print(
                            (ac["title"])
                            + ","
                            + (ac["numPeliculas"])
                            + ","
                            + (ac["vote_average"])
                            + ","
                            + (ac["director_name"])
                        )
                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")

            elif int(inputs[0]) == 6:  # opcion 6
                genero = input("Digite el género sobre el cuál desea trabajar:\n")
                try:
                    lista, longitud, promedio = req.entender_genero(
                        lista_details, genero
                    )
                    cont = 0
                    print("Las películas que tienen dicho género son\n")
                    for i in h.travel(lista, parameter="title"):
                        cont += 1
                        print(f"{cont}. {i}")
                    print(f"En total son {longitud} películas.")
                    print(
                        f"El voto promedio para las películas de género {genero} es {promedio}"
                    )
                    print()

                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")

            elif int(inputs[0]) == 6:  # opcion 7
                print("Que genero quiere para crear el ranking? ")
                g = input()
                print("cuantas entradas quiere? ")
                e = int(input())
                print("De peor a mejor (1) - De mejor a peor (2) ? ")
                s = int(input())

                if s == 1:
                    s = True
                else:
                    s = False

                try:
                    ranking, avg_v = req.crear_ranking_genero(lista_details, g, e, s)

                    if s == 1:
                        st = "mejores"
                    else:
                        st = "peores"

                    print(f"Las {e} {st} peliculas del genero {g} son:")
                    for c, i in enumerate(ranking):
                        print(f"N{c+1}. {i}")

                    print(f"Con promedio de votos {avg_v}")
                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")
            elif int(inputs[0]) == 0:  # opcion 0, salir
                sys.exit(0)
Ejemplo n.º 11
0
def main():

    while True:
        controller.printMenu()  # imprimir el menu de opciones en consola
        # leer opción ingresada
        inputs = input("Seleccione una opción para continuar\n")
        if len(inputs) > 0:

            if int(inputs[0]) == 1:  # opcion 1
                casting_key = "id"
                details_key = "id"

                mp_casting = controller.load_csv_map_byAtts(
                    casting, casting_key)
                mp_details = controller.load_csv_map_byAtts(
                    details, details_key)

                print(
                    f"Se crearon los maps:\n\tcasting, con {mp.size(mp_casting)} elementos, ordenado por la llave {casting_key}\n\tdetails, con {mp.size(mp_details)} elementos, ordenado por la llave {details_key}"
                )
            elif int(inputs[0]) == 2:  # Reto 1
                productora = input(
                    "Digite la productora sobre la cual este interesado:\n")
                p = controller.load_csv_map_byAttribute(
                    details, "production_companies")

                lista, longitud, promedio = controller.descubrir_productoras(
                    p, productora)

                cont = 0
                print("Las películas de la productora son\n")
                for i in h.travel(lista, parameter="title"):
                    cont += 1
                    print(f"{cont}. {i}")
                print(f"En total son {longitud} películas.")
                print(
                    f"El voto promedio para las películas de la productora {productora} es {promedio}"
                )
                print()
            elif int(inputs[0]) == 3:
                nombre_director = input(
                    "Digite el nombre del director que desea conocer:\n")
                controller.req2(casting, details, nombre_director)

            elif int(inputs[0]) == 4:
                nombre_actor = input(
                    "Digite el nombre del actor que desea conocer:\n")
                try:
                    respuesta = controller.req3(casting, nombre_actor,
                                                mp_details, mp_casting)
                    print(
                        f"Sobre el actor {nombre_actor}:\nParticipó en las películas:\n"
                    )
                    res_iter = it.newIterator(respuesta[0])
                    while it.hasNext(res_iter):
                        print(f'\t{it.next(res_iter)}')
                    print(f"\nEn total, son {respuesta[1]} películas.")
                    print(
                        f"Sus películas obtuvieron una calificación promedio de {respuesta[2]}"
                    )
                except:
                    print("Debe cargar los datos primero!\n")
                    continue

                pass
            elif int(inputs[0]) == 5:  # Reto 4
                genero = input(
                    "Digite el género sobre el cuál desea trabajar:\n")
                g = controller.load_csv_map_byAttribute(details, "genres")

                lista, longitud, promedio = controller.entender_genero(
                    g, genero)

                cont = 0
                print("Las películas que tienen dicho género son\n")
                for i in h.travel(lista, parameter="title"):
                    cont += 1
                    print(f"{cont}. {i}")

                print(f"En total son {longitud} películas.")
                print(
                    f"El voto promedio para las películas de género {genero} es {promedio}"
                )
                print()
            elif int(inputs[0]) == 6:
                pais = input("Digite el pais de interes:\n")
                try:
                    p = controller.load_csv_map_byAttribute(
                        details, "production_countries")

                    list, directors = controller.pel_countrie(
                        p, mp_casting, pais)
                    c = 0
                    for i in h.travel(list):
                        t = i["original_title"]
                        r = i["release_date"]
                        print(
                            f"Pelicula: {t} Año de produccion: {r} y director: {directors[c]}"
                        )
                        c += 1
                    print()
                except UnboundLocalError:
                    print("\n" * 10 + "!!!\n\nPrimero carga los datos\n\n!!!")
            elif int(inputs[0]) == 0:  # opcion 0, salir
                sys.exit(0)