Asesino JSL2007
1 #!/usr/bin/python
2 """
3 Programa para la asignación de parejas y envio de respectivos correos para el juego ASESINO
4 Desarrollado inicialmente por Manuel Cerón, modificado por Sebastián Ortiz y liberado bajo licencia WTFPLv2.
5
6 DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
7 Version 2, December 2004
8
9 Copyright (C) 2004 Sam Hocevar
10 22 rue de Plaisance, 75014 Paris, France
11 Everyone is permitted to copy and distribute verbatim or modified
12 copies of this license document, and changing it is allowed as long
13 as the name is changed.
14
15 DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
16 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
17
18 0. You just DO WHAT THE FUCK YOU WANT TO.
19
20 """
21 import random
22 import sys
23 import os
24 import smtplib
25
26 def mail(smtp='',sender='', to='', subject='', text='', user='', passwd=''):
27
28 headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, to, subject)
29 message = headers + text
30 mailServer = smtplib.SMTP()
31 mailServer.connect(smtp, 25)
32 mailServer.set_debuglevel(0)
33 mailServer.login(user,passwd)
34 mailServer.sendmail(sender, to, message)
35 mailServer.quit()
36
37 def prompt(prompt):
38 return raw_input(prompt).strip()
39 """
40 La estructura del archivo es la siguiente:
41 Nombre Apellido correos@dominio.com
42 Otro Jugador otrocorreo@none.com
43 """
44 nombreArchivo = prompt('Nombre del archivo: ')
45 archivo = open(nombreArchivo)
46 asesinos = [n.split("\t")[0].strip() for n in archivo]
47 archivo.seek(0)
48 correos = {}
49 parejas = {}
50 tmp=0
51 for linea in archivo:
52 nombre = linea.split("\t")[0].strip()
53 correos[nombre] = linea.split("\t")[1].strip()
54 tmp=tmp+1
55
56 #print correos
57 random.shuffle(asesinos)
58 for i in range(0,tmp):
59 ase = asesinos[i]
60 if i == tmp-1:
61 i=-1
62 vic = asesinos[i+1]
63 parejas[ase]= vic
64
65 servidor = prompt('Servidor SMTP:')
66 envia = 'mision@asesinoJSL2007.net.co'
67 asunto = 'Su mision en Asesino JSL2007'
68 usuariosmtp = prompt ('Usuario SMTP: ')
69 passwdsmtp = prompt ('Password del SMTP: ')
70 correoJuez = prompt ('Correo del Juez: ')
71 mensaje = 'Si "asesina" a su objetivo, él o ella debe decirte el suyo, que entonces se convierte en tu siguiente meta. Cuando alguien es asesinado esa persona no debe mentir al revelar el nombre de la siguiente víctima. Si hay problemas, debe ir donde el árbitro (Offray, osea Yo).\n\nAl final, el que tenga el numero mayor de muertos gana.\n\nEl proceso de asesinamiento está regido por las siguientes normas:\n\n\t* Debes tocar a tu objetivo con una media (limpia) en la parte superior del cuerpo. La media debe estar en tus manos en el momento del contacto.\n\t* Ningún otro participan del juego puede presenciar este acto. Eso no quiere decir que no se puedar hacer en público, sino que se debe hacer "sin dejar evidencia". Si alguien lo hace y lo anuncia(o confirma la queja de la víctima) tu mision ha fallado y debes esperar 2 horas antes de poder intentarlo de nuevo(pero ahora tu objetivo sabe de quién es debe cuidarse). Las otras reglas todavía se aplican como antes, lo que significa que todavía debes atrapar a tu objetivo a solas luego de estas 24 horas así que es mejor que seas cuidadoso.\n\t* No se te permite atacar en el cuarto de la persona o en su casa\n\t* Los baños están fuera del limite\n\t* Nunca le digas a nadie acerca del juego mientras está sucediendo. Bueno, esta es una recomendacion, no una regla.Después de todo esto no es el Club de la Pelea.\n\nLas reglas completas se encuentran en http://www.el-directorio.org/JSL/Asesino'
72 listaAsesinos = ''
73 numEnvios = 0
74 for i in parejas:
75 asignacion = 'Agente: %s\n\n Su misión es asesinar a %s, un importante cabecilla del movimiento del software libre Colombiano.\n\n' %(i ,parejas[i])
76 msgFinal = asignacion + mensaje
77 mail(servidor,envia,correos[i],asunto,msgFinal,usuariosmtp, passwdsmtp)
78 listaAsesinos = listaAsesinos + i + ' tiene que matar a ' + parejas[i] + '\n'
79 numEnvios = numEnvios + 1
80
81 mail(servidor,envia,correoJuez,'Listado de Asesinos',listaAsesinos,usuariosmtp, passwdsmtp)
82 print 'Se han enviado ', numEnvios, ' correos'
83 print 'Have a lot of Fun!'
