Ejemplo n.º 1
0
def secondReq(catalog, country):
    """
    Completa el requerimiento #2
    """

    new_map = mp.newMap(50000, 50007, 'PROBING', 0.80, None)
    for videos in catalog["videos"]["table"]["elements"]:
        if videos["key"] != None:
            for video in lt.iterator(videos["value"]["videos"]):
                if str(video["country"]).lower() == str(country).lower():
                    value = {
                        "title": video["title"],
                        "channel": video["channel_title"],
                        "count": "1"
                    }
                    key = video["title"]
                    exists = mp.contains(new_map, key)
                    if not exists:
                        mp.put(new_map, key, value)
                    else:
                        new_value = mp.get(new_map, key)
                        new_value["value"]["count"] = str(
                            int(new_value["value"]["count"]) + 1)
                        mp.put(new_map, key, new_value["value"])

    new_list = lt.newList('ARRAY_LIST', cmpfunction=cmpVideosByTrendingdays)
    for element in new_map["table"]["elements"]:
        if element["key"] != None:
            lt.addLast(new_list, element["value"])

    sorted_list = quick.sort(new_list, cmpVideosByTrendingdays)
    result = lt.firstElement(sorted_list)
    result["country"] = country

    return result
Ejemplo n.º 2
0
def requerimiento_3(citibike):
    lista = gr.vertices(citibike['grafo'])
    dicc1 = {}
    dicc2 = {}
    dicc3 = {}
    iterador = it.newIterator(lista)
    while it.hasNext(iterador):
        fila = it.next(iterador)
        out = gr.outdegree(citibike['grafo'], fila)
        ins = gr.indegree(citibike['grafo'], fila)
        dicc1[fila] = out
        dicc2[fila] = ins
        dicc3[fila] = out + ins
    salida = mayores(dicc1)
    llegada = mayores(dicc2)
    ambos = menores(dicc3)
    nombres_salida = encontrar(dicc1, salida)
    nombres_llegada = encontrar(dicc2, llegada)
    nombres_ambos = encontrar(dicc3, ambos)
    print("Las 3 mejores estaciones de salida son: ")
    nombresI(nombres_salida, citibike)
    print("\nLas 3 mejores estaciones de llegada son: ")
    nombresF(nombres_llegada, citibike)
    print("\nLas 3 peores estaciones de llegada/salida son: ")
    for i in range(0, 3):
        if mp.contains(citibike["namesI"], nombres_ambos[i]):
            z = m.get(citibike["namesI"], nombres_ambos[i])
            nombreX = en.getValue(z)
            nombreI = nombreX["nombre"]
            print(nombreI)
        else:
            z = m.get(citibike["namesF"], nombres_ambos[i])
            nombreX = en.getValue(z)
            nombreI = nombreX["nombre"]
            print(nombreI)
Ejemplo n.º 3
0
def contains(map, key):
    """ Retorna True si la llave key se encuentra en el map
        o False en caso contrario.
    Args:
        map: El map a donde se guarda la pareja
        key: la llave asociada a la pareja

    Returns:
        True / False
    Raises:
        Exception
    """
    return ht.contains(map, key)
Ejemplo n.º 4
0
def addMoviepais(catalog, movie):
    """
    Esta funcion adiciona un libro a la lista de libros que
    fueron publicados en un año especifico.
    Los años se guardan en un Map, donde la llave es el año
    y el valor la lista de libros de ese año.
    """
    productora = catalog['paises']
    producmo = movie["production_countries"]
    existpro = mp.contains(productora, producmo)
    if existpro:
        entry = mp.get(productora, producmo)
        pro = me.getValue(entry)
    else:
        pro = lt.newList('SINGLE_LINKED', compareMovieName)
        mp.put(productora, producmo, pro)
        if productora['size'] / productora['capacity'] > productora['loadfactor']:
                catalog["paises"] = mp.rehash(productora)
    lt.addLast(pro, movie)
Ejemplo n.º 5
0
def addMoviedirector(catalog, movie):
    """
    Esta funcion adiciona un libro a la lista de libros que
    fueron publicados en un año especifico.
    Los años se guardan en un Map, donde la llave es el año
    y el valor la lista de libros de ese año.
    """
    directores = catalog['directores']
    director = movie["director_name"]
    existpro = mp.contains(directores, director)
    if existpro:
        entry = mp.get(directores, director)
        pro = me.getValue(entry)
    else:
        pro = lt.newList('SINGLE_LINKED', compareMovieName)
        mp.put(directores, director, pro)
        if directores['size'] / directores['capacity'] > directores['loadfactor']:
                catalog['directores'] = mp.rehash(directores)
    lt.addLast(pro, movie)
Ejemplo n.º 6
0
def thirdReq(catalog, category):
    """
    Completa el requerimiento #3
    """
    for cate in catalog["categories"]["table"]["elements"]:
        try:
            if int(cate["key"]) == int(category):
                info = cate["value"]["videos"]
                break
        except:
            pass
    new_map = mp.newMap(50000, 50007, 'PROBING', 0.80, None)
    i = 1
    t = lt.size(info)
    x = 0
    while i <= t:
        elem = lt.getElement(info, i)
        value = {
            "title": elem["title"],
            "channel": elem["channel_title"],
            "count": 1
        }
        key = elem["title"]
        exists = mp.contains(new_map, key)
        if not exists:
            mp.put(new_map, key, value)
        else:
            new_value = mp.get(new_map, key)
            key = elem["title"]
            new_value["value"]["count"] += 1
            mp.put(new_map, key, new_value["value"])
        i += 1
    new_list = lt.newList()
    for element in new_map["table"]["elements"]:
        if element["key"] != None:
            lt.addLast(new_list, element["value"])
    sorted_list = quick.sort(new_list, cmpVideosByTrendingdays)
    result = lt.firstElement(sorted_list)
    result["cat"] = category

    return result
Ejemplo n.º 7
0
def addGeneres(catalog, movie):
    """
    Esta funcion adiciona un libro a la lista de libros que
    fueron publicados en un año especifico.
    Los años se guardan en un Map, donde la llave es el año
    y el valor la lista de libros de ese año.
    """

    c_generes = catalog['genres']
    str_generes = movie["genres"]
    genres = str_generes.split("|")

    for genre in genres:
        existpro = mp.contains(c_generes, genre)
        if existpro:
            entry = mp.get(c_generes, genre)
            gen = me.getValue(entry)
        else:
            gen = lt.newList('SINGLE_LINKED', compareMovieName)
            mp.put(c_generes, genre, gen)
            if c_generes['size'] / c_generes['capacity'] > c_generes['loadfactor']:
                catalog['genres'] = mp.rehash(c_generes)
        lt.addLast(gen, movie)
Ejemplo n.º 8
0
def addActor(catalog, movie):
    """
    Esta funcion adiciona un libro a la lista de libros que
    fueron publicados en un año especifico.
    Los años se guardan en un Map, donde la llave es el año
    y el valor la lista de libros de ese año.
    """

    c_actors = catalog['actors']
    keys = ["actor1_name", "actor2_name", "actor3_name", "actor4_name", "actor5_name"]
    actors = [movie[key] for key in keys]

    for actor in actors:
        existpro = mp.contains(c_actors, actor)
        if existpro:
            entry = mp.get(c_actors, actor)
            act = me.getValue(entry)
        else:
            act = lt.newList('SINGLE_LINKED', compareMovieName)
            mp.put(c_actors, actor, act)
            if c_actors['size'] / c_actors['capacity'] > c_actors['loadfactor']:
                catalog['actors'] = mp.rehash(c_actors)

        lt.addLast(act, movie)
Ejemplo n.º 9
0
def addVideo(catalog, video):
    """
    Esta funcion adiciona un video a la lista de videos teniendo como llave su video_id,
    adicionalmente lo guarda en un Map usando como llave su número de categoría.
    """
    cont = mp.contains(catalog["videos"], video["video_id"])
    if not cont:
        structure = newVideo()
        lt.addLast(structure["videos"], video)
        mp.put(catalog["videos"], video["video_id"], structure)
    else:
        pareja = mp.get(catalog["videos"], video["video_id"])
        llave = pareja["key"]
        valor = pareja["value"]
        lt.addLast(valor["videos"], video)
        mp.put(catalog["videos"], llave, valor)

    for cate in catalog["categories"]["table"]["elements"]:
        if cate["key"] == video["category_id"]:
            try:
                space = cate["value"]["videos"]
                lt.addLast(space, video)
            except:
                pass