Después de resolver la tarea 3, usted será capaz de:
En esta tarea usted deberá implementar de manera básica una red social similar a twitter en un entorno web. La red social la llamaremos tuitón. Las funcionalidades que deberá realizar esta red social son:
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.
¿Qué es una mención en twitter?: Cuando el mensaje de un usuario incluye el nombre de otro usuario precedido del arroba (@nombredeusuario) se entiende que es una mención. Ejemplo:
@pepito escribio:
hoy estudie con @dani programacion.
¿Qué es un hashtag en twitter?: son etiquetas que se colocan en los tweets con el símbolo # y sirve para ver otros tweets relacionados con un mismo tema. De esta manera, se pueden encontrar otras personas que estén opinando sobre un tema específico. Ejemplo:
@pepito escribio:
me fue bien en #c2 de programacion.
¿Qué es trending topic (TT)?: Son temas frecuentes, es un hashtag que esta siendo utilizado por mucha gente al mismo tiempo.
Para esta tarea no es necesario aprender el lenguaje HTML pero hay algunas funciones que requieren textos en formato HTML. Para que no esté tan perdido, acá adjuntamos una breve ayuda del lenguaje HTML que puede ser de su interés.
Los archivos que se le entregarán los puede descargar acá y cada uno de ellos se describe a continuación:
bottle.py, este archivo sirve para hacer correr un servicio web (para poder ver página web) de manera local en su computador. No modificar.
definiciones.py, archivo que contiene definiciones de encabezados, pie de página y otros en formato HTML.
t3.py, este archivo contiene en la parte inicial algunas funciones ya implementadas, luego más abajo están las funciones que usted debe implementar (en el mismo archivo está comentado).
tuiteos.txt, archivo de texto contiene los tuits con el formato:
[2010-10-23 10:50:45.4353234]:@usuario: mensaje del usuario
El formato de la fecha y hora es: [año-mes-día hora:min:segs]. Note los paréntesis cuadrados y el espacio entre la fecha y la hora. Además hay un espacio después de los dos puntos ”:”. Este formato es importante de considerar, y no lo puede cambiar.
Nota
Todos estos archivos deben estar en el mismo directorio de trabajo.
Una vez descargado el archivo para comenzar la tarea, descomprímalo y ejecute el archivo python t3.py. Se mostrará algo como lo que sigue:
Bottle v0.11.dev server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
Esto significa que el servidor web está funcionando de manera local. Abra su navegador preferido (chrome, internet explorer, safari u otro) y escriba la dirección http://localhost:8080/, se debería mostrar la página web que aparece en el video.
En el archivo t3.py hay varias funciones al comienzo. Esas funciones lo que hacen es responder a ciertas páginas web como por ejemplo (vaya mirando el código para que se entienda mejor):
Hay varias otras funciones en t3.py que usted puede emplear.
Note que en las funciones index(), publicado(), hashtag(htag) y tuiteos(u) se realiza la siguiente implementación. Se crea una lista contenido y se agrega a la lista la cabeza de la página (definida en definiciones.py), luego todo el contenido de la página en lenguaje HTML (el cuerpo principal de la página) y finalmente una cola. Al final se retorna toda la lista aplicando la función join para juntar todo el código HTML. De esta manera se retorna un string muy largo con todo el contenido en lenguaje HTML para ser deplegado por el navegador.
Las funciones que usted debe implementar con su equipo de trabajo son las siguientes:
obtener_tuiteos(): esta función debe capturar todos los registros del archivo tuiteos.txt y retornar una lista de tuplas con todos los tuits. Cada tupla debe tener el siguiente formato:
('aperez', 'este es mi primer tuit', '2012-10-23 12:33')
Note que no es necesario utilizar los segundos.
cantidad_de_menciones(usuario): esta función debe retornar la cantidad de menciones que tiene el usuario @usuario.
cantidad_de_tuits(usuario): esta función debe retornar la cantidad de tuits que ha realizado el usuario @usuario.
agregar_tuit(usuario, mensaje): esta función debe agregar un nuevo registro al final del archivo tuiteos.txt con el usuario, el mensaje y la fecha actual. Recuerde mantener el formato del archivo. Esta función no debe retornar nada, simplemente realizar la operación de inserción del registro dentro del archivo.
poner_hipervinculos(mensaje): esta función deberá retornar el mensaje de un tuit con los hipervínculos de menciones o hashdag. Apóyese de las funciones hipervinculo_usuario() e hipervinculo_hashtag(). Por ejemplo, un texto extraído del archivo: @jmunoz, este es el primer tuit que hago en #progra, debería crear un hipervínculo en jmunoz y en #progra. Si no sabe lo que es un hipervínculo, es porque probablemente no ha leído la ayuda con HTML que hemos dispuesto.
momento_del_tuit(fecha_tuit): esta función retorna uno de los siguientes mensajes que dependen de cuando fue escrito el tuit:
Apóyese con la función fecha_hora_actual().
Nota
Usted puede implementar más funciones o más funcionalidades a la tarea. Lo importante es que cumpla con lo básico que se pide en el enunciado.
Dentro del mensaje de un tuit pueden existir sólo los siguientes caracteres: letras, números, ":", ".", ";", "()", "-". Por ejemplo:
@pepito escribio:
Gano chile a argentina: 3-1 ;) .
Por simplicidad en el formato no utilice acentos ni eñes (ñ) en los mensajes.
Dentro de un mensaje puede haber más de un hashtag y/o más de una mención. Por ejemplo:
@pepito escribio: Hoy #chile gano el partido por las #clasificatorias, pero #argentina jugo mejor, saludos a @jperez.
Cuando el usuario agregue una mención o hashtag dentro de un mensaje, no agregue los hipervínculos al archivo. Recuerde que el archivo debe ser siempre de sólo texto, sin código HTML.
[Agregado el 3 nov] Asuma que los nombres de usuario de tuitón están escritos con minúsculas. Por ejemplo: @pepito, @asegovia, etc.
Se otorgará puntaje adicional si el equipo de trabajo implementa correctamente las funciones de arriba y además la siguiente funcionalidad.
Usted debe mostrar las 5 palabras más repetidas de todos los tuits al final de la página web con la cantidad de veces que aparece. La palabra más repetida también puede ser un hashtag. Por ejemplo:
Los temas del momento son:
* justin (12) * #BotonDePanico (10) * chile (8) * elecciones (5) * huracan (5)
Usted puede hacerse miembro del grupo facebook Tarea 3: la red social tuitón. Ahí habrá ayudantes y profesores que podrían ayudarlo con dudas o consultas de la tarea.
La fecha de entrega es el domingo 18 de noviembre a las 23:00.
La tarea debe ser resuelta en equipos de dos o tres personas. De lo contrario habrá penalización en la nota.
Sólo uno de los integrantes del equipo debe subir la tarea en la sección Aula Virtual de la plataforma Moodle, ingresando al campus que corresponda. ¡No la suba a la sección de su paralelo!
Se debe entregar un archivo comprimido (.zip) con todos los archivos para hacer funcionar la tarea con el nombre tarea-3-RUT.zip, reemplazando RUT por 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 t3.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.
No se recibirá tareas fuera de plazo, ni por correo electrónico.
Recuerde que para que todos los miembros del equipo sean evaluados, deben estar matriculados en “Alumnos de CAMPUS” (donde CAMPUS es el campus al cual usted pertenece).
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, consulte a su profesor o asista a las ayudantías.