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()