Пример #1
0
def cargarArchivosUnificados(details,casting, cmpfunction=None):
    lst=iniciarCatalogo()
    dialect = csv.excel()
    dialect.delimiter=";"
    i = 0
    p = 0
    print("Cargando archivos...")
    with open(cf.data_dir + details, encoding="utf-8-sig") as csvfile1:
        row = csv.DictReader(csvfile1, dialect=dialect)
        for elemento in row:
            if i%3290 == 0:
                print (" " + str(p) + "%" + " completado", end="\r")
                p+=1
            model.agregarFinal(lst,elemento)
            i+=1
    print (" 100%" +" completado\n")
    print("Uniendo datos...")
    with open(cf.data_dir + casting, encoding="utf-8-sig") as csvfile2: #Cambiamos el encoding ya que generaba
        row = csv.DictReader(csvfile2,dialect=dialect)                  #un error con los archivos grandes
        i = 1
        p = 0
        for elemento in row:
            if i%3290 == 0:
                print (" " + str(p) + "%" + " completado", end="\r")
                p+=1
            if elemento["id"] == model.buscarPeliculas(lst,i)["id"]:
                for column in elemento:
                    if column != "id":
                        model.buscarPeliculas(lst,i)[column] = elemento[column]
            i += 1
    print (" 100%" +" completado\n")
    return lst
Пример #2
0
def conocerDirector(catalogo, director):
    a=getParejaKV(catalogo, director)
    numero=0
    promedio=0
    lst=model.crearCatalogo()
    for i in a['value']['elements']:
        numero+=1
        promedio=promedio+float(i['vote_average'])
        model.agregarFinal(lst,(i['title']))
    return lst, round(promedio/numero,2), numero
Пример #3
0
def limpiarGeneros(mapa,key):
    peliculas = getParejaKV(mapa,key)
    peliculas_lista = model.crearCatalogo()
    suma = 0
    for pelicula in peliculas['value']['elements']:
        model.agregarFinal(peliculas_lista,(pelicula['title'],pelicula['vote_count'],pelicula['genres']))
        suma += float(pelicula['vote_count'])
    size = model.tamanio(peliculas_lista)
    if size != 0:
        return (peliculas_lista,size, suma/size)
    return (peliculas_lista,0,0)
Пример #4
0
def cargarByCriteria(moviesCatalog,criteria,data,cmpfunction=getKeyFunction,hashType='PROBING',loadfactor=0.5,numelements=17):
    moviesCatalog[criteria] = crearHash(hashType,loadfactor,numelements)
    print("Mapa vacío creado exitosamente")
    productoras = {}
    #Este ciclo ingresa cada uno de los datos
    i = 0
    p = 0
    print("Organizando Archivos...")
    for element in data['elements']:
        if i%3290 == 0:
            print (" " + str(p) + "%" + " completado", end="\r")
            p+=1
    #Caso en el que solo se necesite una columna
        if criteria == 'genres':
            generos = element[criteria].split('|')
            for genero in generos:
                if genero not in productoras:
                    value = model.crearCatalogo('ARRAY_LIST')
                    model.agregarFinal(value,(element))
                    productoras[genero] = value
                else:
                    model.agregarFinal(productoras[genero],element)
        else:        
            if element[criteria] not in productoras:
                value = model.crearCatalogo('ARRAY_LIST')
                model.agregarFinal(value,(element))
                productoras[element[criteria]] = value


                #Condición para separar los géneros por '|' en caso de que el criterio no sea géneros, lo visto en el video sigue funcionando
                

            else:
                model.agregarFinal(productoras[element[criteria]],element)
        i+=1

    #Agregar a la tabla de hash 
    print(" 100%" +" completado\n")
    print("Creando y organizando un mapa...")
    i = 0
    p = 0
    for productora in productoras:
        if len(productoras) < 100:
            if i%(len(productoras)/100) == 0:
                print (" " + str(p) + "%" + " completado", end="\r")
                p+=1
        else:
            if i%(round(len(productoras)/100)) == 0:
                print (" " + str(p) + "%" + " completado", end="\r")
                p+=1
        model.agregarAlMap(moviesCatalog[criteria],productora,productoras[productora])
        i+=1
    print (" 100%" +" completado\n")
Пример #5
0
def cargarByPerson(moviesCatalog,criteria,data,person,cmpfunction=getKeyFunction,hashType='PROBING',loadfactor=0.5,numelements=16453):
    moviesCatalog[criteria] = crearHash(hashType,loadfactor,numelements)
    print("Mapa vacío creado exitosamente")
    movies_person = model.crearCatalogo('ARRAY_LIST')
            
    #Este ciclo ingresa cada uno de los datos
    i = 0
    p = 0
    print("Creando y organizando un mapa...") 
    for element in data['elements']:
        if i%3290 == 0:
            print (" " + str(p) + "%" + " completado", end="\r")
            p+=1
    #Caso en el que solo se necesite una columna
        actores_movie = [element["actor1_name"],element["actor2_name"],element["actor3_name"],element["actor4_name"],element["actor5_name"]]
        if person in actores_movie:
            model.agregarFinal(movies_person,element)
        i+=1
    #Agregar a la tabla de hash
    model.agregarAlMap(moviesCatalog[criteria],person, movies_person)
    print("100%" +" completado\n")
Пример #6
0
def limpiarPersona(mapa,key):
    peliculas = getParejaKV(mapa,key)
    peliculas_lista = model.crearCatalogo()
    dir = {}
    suma = 0
    for pelicula in peliculas['value']['elements']:
        model.agregarFinal(peliculas_lista,(pelicula['title'],pelicula['vote_average'],pelicula['director_name']))
        suma += float(pelicula['vote_average'])
    size = model.tamanio(peliculas_lista)

    for director in peliculas['value']['elements']:
        if director['director_name'] != 'none':
            if director['director_name'] not in dir:
                dir[director["director_name"]] = 1
            else:
                dir[director["director_name"]] += 1
    dirColaboraciones = None
    dir_num =list(dir.values())
    dir_name =list(dir.keys())
    if len(dir) > 0 and sum(dir_num) != len(dir_num):
        maxNum = max(dir_num)
        dirColaboraciones = dir_name[dir_num.index(max(dir_num))]
        found = False
        while not found:
            dir.pop(dir_name[dir_num.index(max(dir_num))])
            dir_num = list(dir.values())
            dir_name = list(dir.keys())
            mxNew = 0
            if len(dir_num) > 0:
                maxNew = max(dir_num)
            if maxNew == maxNum:
                dirColaboraciones += ", " + dir_name[dir_num.index(max(dir_num))]
            else:
                found = True
    if size != 0:
        return (peliculas_lista,size,suma/size,dirColaboraciones)
    return (peliculas_lista,0,0,dirColaboraciones)
Пример #7
0
def peliculasPais(catalogo, pais):
    a=getParejaKV(catalogo, pais)
    lst=model.crearCatalogo()
    for i in a['value']['elements']:
        model.agregarFinal(lst,[i['title'],i['director_name'],i['release_date']])
    return lst