Después de resolver la tarea 3, usted será capaz de:
Retemue, el sabio de la tribu Pythomun ha visto como su pueblo se ha reducido en número. Los jóvenes han migrado a la ciudad y no se sabe nada de ellos. Retemue ha contactado a cada uno de los jóvenes para saber que hacen y no perder el contacto. Sin embargo, sus aceleradas vidas en la ciudad no les permiten responder con toda la información que Retemue quisiera.
En conocimiento de estos problemas, Retemue recurre a los alumnos de IWI-131 para que creen un programa que obtenga información del Facebook. Este programa se lo enviará a cada uno de los jóvenes de la tribu para que obtengan su información y luego se la envíen. Para seguridad de los jóvenes, esta información debe ir encriptada.
En esta tarea usted deberá crear un programa que, a partir de una cuenta de Facebook, entregue varias estadísticas asociadas a su interacción social. Para ello su programa deberá implementar las siguientes funcionalidades:
Además, la interacción con el usuario será a través de una interfaz gráfica.
Para desarrollar las funciones anteriores se les entregará un conjunto de archivos que les proveerá de algunas funciones ya implementadas y otras que deben implementar con su equipo de trabajo.
Los archivos que se le entregarán los puede descargar acá. La explicación de qué función tiene cada uno de ellos, se encuentra en la documentación que hemos escrito para que sepas como interactuar con Facebook a través de Python.
Una vez descargado el archivo para comenzar la tarea, descomprímalo y ejecute el archivo main.py. Se abrirá una ventana con la interfaz gráfica (GUI) que permitirá la interacción con las funciones que usted desarrolle.
La aplicación cuenta con los siguientes menús y botones:
Dentro de su programa usted creará un archivo backup.dat que almacene la información leída desde Facebook, en distintas secciones. La primera sección almacena la información del usuario y posee la siguiente estructura
# id_usuario;Nombre_usuario;genero;link;[otros]
El elemento otros es por si usted quiere extender el alcance de su programa y necesita almacenar más información que la aquí indicada. Este campo es opcional y puede quedar vacío.
Tras la línea con información del usuario, sigue un salto de línea (línea vacía). Luego una serie de líneas con los post (que tengan mensaje) realizados por el usuario, las cuales poseen la siguiente estructura
# id_post||mensaje||fecha||cant_likes||cant_comentarios||[otros]
Nuevamente puede almacenar más información por línea en la sección otros, donde el separador debe ser distinto del establecido en la estructura obligatoria. Terminada las líneas de post, se ingresa una nueva línea vacía, para ingresar una nueva serie de líneas con los datos de los likes realizados
# id_like#fecha#categoria_pagina#nombre_pagina#[otros]
Las funciones que usted debe implementar con su equipo de trabajo son las siguientes:
Nota
Para encriptar considere todos los caracteres entre la ‘A’ y la ‘z’. Cada caracter tiene un valor en escala decimal entre 0 y 255, este valor es conocido como el código ASCII de cada letra. En python puede ayudarse de las funciones ord(letra) y chr(valor) para transformar una letra a su código ASCII y vice-versa.
Ayuda: Al momento de escribir los datos extraídos de Facebook al archivo, algunos pueden tener caracteres no válidos para este último. Para solucionar eso puede ayudarse de la función limpiar_text del archivo utilidades.py.
- Un diccionario con la información del usuario almacenada. Las llaves deben ser las mismas que se obtienen al hacer el llamado desde Facebook (id, name, gender, link) y por valor los valores correspondientes a cada tópico.
- Una lista de diccionarios, donde cada diccionario almacena la información guardada del post. Las llaves también deben mantener el nombre de Facebook (id, message, created_time), en el caso de las cantidades de like y comentarios, poner por llave cant_likes y cant_comment respectivamente.
- Una lista de diccionarios, donde cada diccionario almacena la información de una página guardada. Las llaves deben mantener el nombre en Facebook (id, created_time, category, name).
Ayuda: No considere signos de puntuación y trabaje con todas las palabras en minúscula.
- Cantidad de likes conseguidos: de los post publicados, la cantidad de likes que se obtuvieron.
- Cantidad de posts: la cantidad de publicaciones en el muro.
- Cantidad de páginas que le gustan.
- El mensaje publicado que más likes recibió.
- Palabras Top-10: indicar las palabras, de más de 5 caracteres, más usadas en sus posts.
La fecha de entrega es el Viernes 21 de Noviembre a las 23:00.
La tarea debe ser resuelta en equipos de dos o tres personas.
Sólo uno de los integrantes del equipo debe subir la tarea en la sección Tareas de la plataforma Aula, en el ramo de Programación IWI131.
Se debe entregar un archivo comprimido (.zip) que debe contener todos los archivos para hacer funcionar la tarea con el nombre tarea-3-RUT.zip, reemplazando RUT con el RUT del integrante que subirá la tarea. Sólo debe ir la parte del RUT hasta antes de la raya. Por ejemplo: tarea-3-18000123.zip.
Al principio del archivo funciones.py se debe poner un comentario indicando los RUT de los integrantes del equipo como en el siguiente ejemplo:
# Integrantes:
# 18000123-0 Perico Los Palotes
# 18000456-7 Fulanita de Tal
# 18000890-k Federico Santa Maria
No se puede subir ningún archivo adicional.
Evite dejar para última hora la entrega de la tarea. Cerca del plazo final, la plataforma seguramente estará sobrecargada.
Las tareas atrasadas (máximo un día de retraso) tendrán el descuento especificado en la rúbrica de corrección. NO se recibirán tareas por por correo electrónico.
Los equipos de trabajo pueden ser los mismos de la tarea anterior, pero recuerde que deben ser de 2 ó 3 personas.
Usted puede discutir la tarea con compañeros de otros grupos, pero bajo ningún motivo puede compartir o copiar el código de su tarea. Cada equipo debe escribir su propio código.
Las políticas de copia de la asignatura rigen para la tarea.
En caso de tener problemas con el desarrollo de la tarea, asista a las ayudantías o consulte en el grupo de facebook.