bruh moments number 1
This commit is contained in:
135
main.py
Normal file
135
main.py
Normal file
@@ -0,0 +1,135 @@
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil import parser
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
import glob, os
|
||||
|
||||
|
||||
#consts
|
||||
valo = 'user452708124'
|
||||
starttime = datetime(2018, 9, 16)
|
||||
endtime = datetime(2024, 11, 4)
|
||||
colors = ['red', 'orange', 'yellow', 'blue', 'black', 'green', 'purple', 'pink', 'cyan', 'grey', 'magenta', 'brown']
|
||||
|
||||
with open('/home/valoka/Downloads/Telegram Desktop/nsfw/result.json', 'r') as file:
|
||||
json_file = json.load(file)
|
||||
|
||||
def get_by_date(json_file, date):
|
||||
table = []
|
||||
|
||||
for i in json_file["messages"]:
|
||||
if i["date"].find(date) != -1:
|
||||
table.append(i["text"])
|
||||
|
||||
return table
|
||||
|
||||
def process(input_file):
|
||||
count0 = 0; count11 = 0
|
||||
count1 = 0; count01 = 0
|
||||
|
||||
main_dict = {}
|
||||
|
||||
#get partner name
|
||||
#"name": "Анастэйша"
|
||||
partner_name = input_file["name"]
|
||||
partner_id = "user" + str(input_file["id"])
|
||||
|
||||
for i in input_file["messages"]:
|
||||
#count messages
|
||||
if i['type'] == 'message':
|
||||
if i['from_id'] == valo:
|
||||
count0 += 1
|
||||
else:
|
||||
count1 += 1
|
||||
|
||||
main_dict.update(mes0 = count0, mes1 = count1)
|
||||
|
||||
#count emoji
|
||||
try:
|
||||
for o in i["reactions"]:
|
||||
if o['type'] == "emoji" and o["emoji"] == "❤":
|
||||
for p in o['recent']:
|
||||
#print(p['from_id'])
|
||||
if p['from_id'] == valo:
|
||||
count01 += 1
|
||||
if p['from_id'] == partner_id:
|
||||
count11 += 1
|
||||
except:
|
||||
pass
|
||||
|
||||
main_dict.update(emj0 = count01, emj1 = count11)
|
||||
|
||||
return partner_name, main_dict
|
||||
|
||||
def dateF(oldDate, days):
|
||||
dateBefore = parser.parse(str(oldDate))
|
||||
return dateBefore + timedelta(days)
|
||||
|
||||
def get_partner_name(filepath: str) -> str:
|
||||
with open(filepath, 'r') as name:
|
||||
json_file = json.load(name)
|
||||
try:
|
||||
return "Liza" if str(json_file["name"]) == "🍭" else str(json_file["name"])
|
||||
except:
|
||||
return str("Saved messages")
|
||||
|
||||
# print(process(json_file))
|
||||
name_list = [glob.glob(f'{os.getcwd()}/chats/*')]
|
||||
nicknames = []
|
||||
sums = [0 for _ in name_list[0]]
|
||||
|
||||
print(process(json_file))
|
||||
|
||||
for i in range(0,73):
|
||||
print(dateF(datetime(2024,9,11), i).strftime("%Y-%m-%d"), len(get_by_date(json_file, dateF(datetime(2024,9,11), i).strftime("%Y-%m-%d"))))
|
||||
|
||||
|
||||
exit(0)
|
||||
|
||||
for i in name_list[0]:
|
||||
nicknames.append(get_partner_name(i))
|
||||
print(nicknames)
|
||||
|
||||
for i in range((endtime - starttime).days):
|
||||
for o in range(len(name_list[0])):
|
||||
with open(name_list[0][o], 'r') as file:
|
||||
json_file = json.load(file)
|
||||
|
||||
sums[o] += len(get_by_date(json_file, dateF(starttime, i).strftime("%Y-%m-%d")))
|
||||
|
||||
data = {'Чаты' : nicknames,
|
||||
'Количество' : sums,
|
||||
'Colors': colors}
|
||||
|
||||
dataFrame = pd.DataFrame(data=data)
|
||||
dataFrame.sort_values(by='Количество', inplace=True)
|
||||
|
||||
#df = pd.DataFrame({'Чаты' : nicknames, 'Количество' : sums})
|
||||
#df_sorted = df.sort_values('Количество')
|
||||
dataFrame.plot.barh(x = 'Чаты', y = 'Количество', color = dataFrame['Colors'],
|
||||
title="Chat Statistics", ylabel="Nickname",
|
||||
xlabel = "Amount of messages (number)", figsize=(16,9),
|
||||
label=f"Total: {sum(sums)}\nDate: {dateF(starttime, i).strftime("%Y-%m-%d")}")
|
||||
#dataFrame.plot(title="Chat Statistics", ylabel="Chat name (nickname)",
|
||||
# xlabel = "Amount of messages (number)", figsize=(16,9))
|
||||
#dataFrame.plot.figure(figsize=(16,9), dpi=100)
|
||||
# plt.title("Chat Statistics")
|
||||
# plt.xlabel("Amount of messages (number)")
|
||||
# plt.ylabel("Chat name (nickname)")
|
||||
# plt.plot([], [], ' ', label=f"Total: {sum(sums)}")
|
||||
# plt.legend(loc="upper right")
|
||||
#plt.yticks(ticks=[i for i in range(12)], labels=nicknames)
|
||||
|
||||
|
||||
#plt.show()
|
||||
#plt.barh(df_sorted['Чаты'], df_sorted['Количество'], data=df_sorted, color=colors)
|
||||
|
||||
plt.savefig(f'/home/valoka/SomeCode/pethon/figs/{i:05}-{dateF(starttime, i).strftime("%Y-%m-%d")}.png')
|
||||
plt.close()
|
||||
|
||||
print(dateF(starttime, i))
|
||||
print(sums)
|
||||
|
||||
file.close()
|
||||
|
||||
Reference in New Issue
Block a user