Beispiel #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
Beispiel #2
0
def frequencyInMap(entry, frequencyEntry):
    """
    Funcion Auxiliar para sacar la frecuencia de las llaves
    en un mapa visto como histagrama
    Args:
        entry: una entrada de un map
        frequencyEntry: map ADT
    """
    key = entry['key']
    num_acc = entry['value']
    try:
        mp.get(frequencyEntry, key)['value'] += num_acc
    except TypeError:
        mp.put(frequencyEntry, key, num_acc)

    return frequencyEntry
Beispiel #3
0
def getMoviesinTagbyName(catalog, tag, name):
    """
    Retorna los peliculas publicadas por una productora
    """

    pro = mp.get(catalog[tag], name)
    if pro:
        movies = me.getValue(pro)
        return {"name": me.getKey(pro), "movies": me.getValue(pro), "size": lt.size(movies)}
    return None
Beispiel #4
0
def get(map, key):
    """ Retorna la pareja llave, valor, cuya llave sea igual a key
    Args:
        map: El map a donde se guarda la pareja
        key: la llave asociada a la pareja

    Returns:
        Una pareja <llave,valor>
    Raises:
        Exception
    """
    return ht.get(map, key)
Beispiel #5
0
def updateIndex(Index, indexKey):
    """
    Actualiza el conteo del mapa Index con su indexKey
    Args:
        Index: El map
        indexKey: la llave que se quiere actualizar

    Returns:

    """
    indexEntry = mp.get(Index, indexKey)
    if indexEntry:
        indexEntry['value'] += 1
    else:
        mp.put(Index, indexKey, 1)

    return Index
Beispiel #6
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)
Beispiel #7
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)
Beispiel #8
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
Beispiel #9
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)
Beispiel #10
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)
Beispiel #11
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