Python 8 /5/8/2017


SUBMITTED BY: canonical

DATE: May 8, 2017, 6:01 p.m.

FORMAT: Python

SIZE: 5.2 kB

HITS: 413

  1. If you want more of my pastes visit: https://randompaste.000webhostapp.com/index.html
  2. --------------------------------------------------------------------------------------
  3. view my last post at: https://bitbin.it/ztEax9r6/
  4. --------------------------------------------------------------------------------------
  5. # -*- coding: cp1252 -*-
  6. from Tkinter import *
  7. from tkFileDialog import askopenfilename
  8. import unicodedata
  9. def invia():
  10. lines=[line.rstrip('\n') for line in open(filetxt,'r')]
  11. nome_filetxt=unicodedata.normalize('NFKD', (filetxt.split('/')[-1]).split('.')[0]).encode('ascii','ignore')
  12. pass
  13. if nome_filetxt[0:18]=='Chat WhatsApp con ':
  14. nome_gruppo=nome_filetxt[18:]
  15. else:
  16. nome_gruppo=nome_filetxt #vgruppo.get()
  17. while nome_gruppo[-1]==' ':
  18. nome_gruppo=nome_gruppo[:-1]
  19. data1=vdata1.get()
  20. inizio=(int(data1.split('/')[2]),int(data1.split('/')[1]),int(data1.split('/')[0])) #(AAAA,MM,GG)
  21. data2=vdata2.get()
  22. fine=(int(data2.split('/')[2]),int(data2.split('/')[1]),int(data2.split('/')[0])) #(AAAA,MM,GG)
  23. data_inizio=max(inizio,(2000+int(lines[0][6:8]),int(lines[0][3:5]),int(lines[0][0:2])))
  24. data_inizio=date(data_inizio[0],data_inizio[1],data_inizio[2])
  25. data_fine=min(fine,(2000+int(lines[-1][6:8]),int(lines[-1][3:5]),int(lines[-1][0:2])))
  26. data_fine=date(data_fine[0],data_fine[1],data_fine[2])
  27. totgiorni=(data_fine-data_inizio).days+1
  28. msg=[]
  29. lista=[]
  30. num=''
  31. for line in lines:
  32. line=line.translate(None,'‪¬')
  33. num=(find_between(line,'- ',':'))
  34. nick=num_nick(num).title()
  35. line=line.replace(num,nick)
  36. if (line[0:2]+line[3:5]+line[6:8]+line[10:12]+line[13:15]).isdigit() and nick!='':
  37. if data((2000+int(line[6:8]),int(line[3:5]),int(line[0:2])),inizio,fine):
  38. msg.append(nick)
  39. autori=set(msg)
  40. totmsg=0
  41. for autore in autori:
  42. n=msg.count(autore)
  43. lista.append([n,autore])
  44. totmsg+=n
  45. for i in range(len(lines)):
  46. lines[i]=lines[i].replace(autore,'')
  47. lista.sort(reverse=True)
  48. text=''
  49. text += 'Messaggi dal '+data_inizio.strftime('%d %b %Y')+' al '+data_fine.strftime('%d %b %Y')+'\n'
  50. text += 'nel gruppo '+nome_gruppo.upper()+':\n'
  51. text += 'AUTORE MSG % MSG/D\n'
  52. for [x,y] in lista:
  53. y=y.replace('ã²','o`')
  54. y=num_nick(y).title()
  55. if len(y)>21:
  56. y=y[0:18]+'...'
  57. text += y
  58. text += (22-len(y))*' '
  59. text += str(x)
  60. text += (9-len(str(x)))*' '
  61. text += str(int(round(100.0*x/totmsg,0)))+'%\t'
  62. text += str(int(round(1.0*x/totgiorni,0)))+' '*(5-len(str(int(round(1.0*x/totgiorni,0)))))+'\n'
  63. text += 'Totale messaggi: '+str(totmsg)+' ('+str(int(round(1.0*totmsg/totgiorni,0)))+' messaggi al giorno)'
  64. ltext.config(text=text)
  65. # esci=raw_input('Premi un tasto qualunque per uscire.')
  66. from datetime import date
  67. def find_between(s,first,last):
  68. try:
  69. start=s.index(first)+len(first)
  70. end=s.index(last,start)
  71. return s[start:end]
  72. except ValueError:
  73. return ""
  74. def num_nick(numero):
  75. switcher = {
  76. 'Numero1': 'Nick1',
  77. 'Numero2': 'Nick2',
  78. #etc
  79. }
  80. return switcher.get(numero,numero)
  81. def data(data,inizio,fine):
  82. if inizio<=data<=fine:
  83. return True
  84. else:
  85. return False
  86. def parole(parola):
  87. return len([lines[i] for i in range(len(lines)) if parola.lower() in lines[i].lower()])
  88. def seleziona():
  89. global filetxt
  90. filetxt=askopenfilename(filetypes=[("File di testo","*.txt")])
  91. root=Tk()
  92. root.title('Premiooooo TU TU RUUU')
  93. root.configure(bg='white')
  94. icona = PhotoImage(file='wa.gif')
  95. root.tk.call('wm','iconphoto',root._w,icona)
  96. # filetxt=askopenfilename()
  97. # vgruppo=StringVar(value='')
  98. vdata1=StringVar(value='')
  99. vdata2=StringVar(value='')
  100. vtext=StringVar(value='')
  101. # lgruppo=Label(root,text='Inserisci il nome della chat: ', bg='white')
  102. lgruppo=Label(root,text="Seleziona un'altra chat da analizzare:", bg='white')
  103. ldata1=Label(root,text='Inserisci la data di inizio (GG/MM/AAAA):', bg='white')
  104. ldata2=Label(root,text='Inserisci la data di fine (GG/MM/AAAA):', bg='white')
  105. ltext=Label(root,text='',bg='white',font='Courier')
  106. # egruppo=Entry(root,textvariable=vgruppo,bg='white')
  107. edata1=Entry(root,textvariable=vdata1,bg='white')
  108. edata2=Entry(root,textvariable=vdata2,bg='white')
  109. binvia=Button(root,text='OK!',command=invia)
  110. bgruppo=Button(root,text='Sfoglia...',command=seleziona)
  111. # lgruppo.grid(row=0,column=0,padx=10,pady=10)
  112. # egruppo.grid(row=0,column=1,padx=10,pady=10)
  113. lgruppo.grid(row=0,column=0,padx=10,pady=10)
  114. bgruppo.grid(row=0,column=1,padx=10,pady=10)
  115. ldata1.grid(row=1,column=0,padx=10,pady=10)
  116. edata1.grid(row=1,column=1,padx=10,pady=10)
  117. ldata2.grid(row=2,column=0,padx=10,pady=10)
  118. edata2.grid(row=2,column=1,padx=10,pady=10)
  119. binvia.grid(row=3,column=0,columnspan=2,padx=10,pady=10)
  120. ltext.grid(row=4,column=0,columnspan=2,padx=10,pady=10)
  121. root.mainloop()

comments powered by Disqus