Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- 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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement