If you want more of my pastes visit: https://randompaste.000webhostapp.com/index.html
--------------------------------------------------------------------------------------
view my last post at: https://bitbin.it/ztEax9r6/
--------------------------------------------------------------------------------------
# -*- coding: cp1252 -*-
from Tkinter import *
from tkFileDialog import askopenfilename
import unicodedata
def invia():
lines=[line.rstrip('\n') for line in open(filetxt,'r')]
nome_filetxt=unicodedata.normalize('NFKD', (filetxt.split('/')[-1]).split('.')[0]).encode('ascii','ignore')
pass
if nome_filetxt[0:18]=='Chat WhatsApp con ':
nome_gruppo=nome_filetxt[18:]
else:
nome_gruppo=nome_filetxt #vgruppo.get()
while nome_gruppo[-1]==' ':
nome_gruppo=nome_gruppo[:-1]
data1=vdata1.get()
inizio=(int(data1.split('/')[2]),int(data1.split('/')[1]),int(data1.split('/')[0])) #(AAAA,MM,GG)
data2=vdata2.get()
fine=(int(data2.split('/')[2]),int(data2.split('/')[1]),int(data2.split('/')[0])) #(AAAA,MM,GG)
data_inizio=max(inizio,(2000+int(lines[0][6:8]),int(lines[0][3:5]),int(lines[0][0:2])))
data_inizio=date(data_inizio[0],data_inizio[1],data_inizio[2])
data_fine=min(fine,(2000+int(lines[-1][6:8]),int(lines[-1][3:5]),int(lines[-1][0:2])))
data_fine=date(data_fine[0],data_fine[1],data_fine[2])
totgiorni=(data_fine-data_inizio).days+1
msg=[]
lista=[]
num=''
for line in lines:
line=line.translate(None,'‪¬')
num=(find_between(line,'- ',':'))
nick=num_nick(num).title()
line=line.replace(num,nick)
if (line[0:2]+line[3:5]+line[6:8]+line[10:12]+line[13:15]).isdigit() and nick!='':
if data((2000+int(line[6:8]),int(line[3:5]),int(line[0:2])),inizio,fine):
msg.append(nick)
autori=set(msg)
totmsg=0
for autore in autori:
n=msg.count(autore)
lista.append([n,autore])
totmsg+=n
for i in range(len(lines)):
lines[i]=lines[i].replace(autore,'')
lista.sort(reverse=True)
text=''
text += 'Messaggi dal '+data_inizio.strftime('%d %b %Y')+' al '+data_fine.strftime('%d %b %Y')+'\n'
text += 'nel gruppo '+nome_gruppo.upper()+':\n'
text += 'AUTORE MSG % MSG/D\n'
for [x,y] in lista:
y=y.replace('ã²','o`')
y=num_nick(y).title()
if len(y)>21:
y=y[0:18]+'...'
text += y
text += (22-len(y))*' '
text += str(x)
text += (9-len(str(x)))*' '
text += str(int(round(100.0*x/totmsg,0)))+'%\t'
text += str(int(round(1.0*x/totgiorni,0)))+' '*(5-len(str(int(round(1.0*x/totgiorni,0)))))+'\n'
text += 'Totale messaggi: '+str(totmsg)+' ('+str(int(round(1.0*totmsg/totgiorni,0)))+' messaggi al giorno)'
ltext.config(text=text)
# esci=raw_input('Premi un tasto qualunque per uscire.')
from datetime import date
def find_between(s,first,last):
try:
start=s.index(first)+len(first)
end=s.index(last,start)
return s[start:end]
except ValueError:
return ""
def num_nick(numero):
switcher = {
'Numero1': 'Nick1',
'Numero2': 'Nick2',
#etc
}
return switcher.get(numero,numero)
def data(data,inizio,fine):
if inizio<=data<=fine:
return True
else:
return False
def parole(parola):
return len([lines[i] for i in range(len(lines)) if parola.lower() in lines[i].lower()])
def seleziona():
global filetxt
filetxt=askopenfilename(filetypes=[("File di testo","*.txt")])
root=Tk()
root.title('Premiooooo TU TU RUUU')
root.configure(bg='white')
icona = PhotoImage(file='wa.gif')
root.tk.call('wm','iconphoto',root._w,icona)
# filetxt=askopenfilename()
# vgruppo=StringVar(value='')
vdata1=StringVar(value='')
vdata2=StringVar(value='')
vtext=StringVar(value='')
# lgruppo=Label(root,text='Inserisci il nome della chat: ', bg='white')
lgruppo=Label(root,text="Seleziona un'altra chat da analizzare:", bg='white')
ldata1=Label(root,text='Inserisci la data di inizio (GG/MM/AAAA):', bg='white')
ldata2=Label(root,text='Inserisci la data di fine (GG/MM/AAAA):', bg='white')
ltext=Label(root,text='',bg='white',font='Courier')
# egruppo=Entry(root,textvariable=vgruppo,bg='white')
edata1=Entry(root,textvariable=vdata1,bg='white')
edata2=Entry(root,textvariable=vdata2,bg='white')
binvia=Button(root,text='OK!',command=invia)
bgruppo=Button(root,text='Sfoglia...',command=seleziona)
# lgruppo.grid(row=0,column=0,padx=10,pady=10)
# egruppo.grid(row=0,column=1,padx=10,pady=10)
lgruppo.grid(row=0,column=0,padx=10,pady=10)
bgruppo.grid(row=0,column=1,padx=10,pady=10)
ldata1.grid(row=1,column=0,padx=10,pady=10)
edata1.grid(row=1,column=1,padx=10,pady=10)
ldata2.grid(row=2,column=0,padx=10,pady=10)
edata2.grid(row=2,column=1,padx=10,pady=10)
binvia.grid(row=3,column=0,columnspan=2,padx=10,pady=10)
ltext.grid(row=4,column=0,columnspan=2,padx=10,pady=10)
root.mainloop()