PID USER %MEM COMMAND
208 root 7.4 /lib/systemd/systemd-journald
26339 root 4.7 python3 aiogram_version.py
26319 root 4.7 python3 aiogram_version.py
26380 root 32.4 python3 aiogram_version.py
311 root 1.9 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
43910 root 16.8 python3 aiogram_version.py
async def analytic(spreadsheet_id):
service = build('sheets', 'v4', credentials=credentials)
req1 = []
req1.append({'addSheet': {'properties': {'title': 'Аналитика'}}})
body1 = {'requests': req1}
try:
service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body1).execute()
except HttpError:
pass
body_values = []
body_values.append(['Месяц записи', ' ', 'Раздел'])
deletsheet(spreadsheet_id)
r = await read_new('Категории и разделы', spreadsheet_id)
buttons = [' ']
total = dict()
for el in r:
if el[0] not in buttons and el[0] != 'Раздел':
buttons.append(el[0])
total[el[0]] = 0
buttons.append('Итого')
body_values.append(buttons)
sheet = await read('Записи бота', spreadsheet_id, 'ROWS')
ms = {'1': 'январь', "2": "февраль", "3": "март", "4": "апрель", "5": "май", "6": "июнь", "7": "июль", "8": "август",
"9": "сентябрь", "10": "октябрь", "11": "ноябрь", "12": "декабрь"}
my_ms = []
my_keys = {}
for i in range(1, len(sheet)):
try:
if ms[str(int(sheet[i][0].split('-')[1]))] not in my_ms:
my_ms.append(ms[str(int(sheet[i][0].split('-')[1]))])
my_keys[sheet[i][0].split('-')[1]] = {el: 0 for el in buttons[:-1] if el not in " Раздел"}
except KeyError:
print('Дурак, ты, наерное, отредактировал дату записи, поэтому бот ее не понимает')
my_ms.append('Всего')
for el in sheet[1:]:
total[el[2]] += int(el[4])
for el in sheet[1:]:
my_keys[el[0].split('-')[1]][el[2]] += int(el[4])
for i in range(len(my_ms) - 1):
body_values.append([my_ms[i], *list(my_keys[f'0{i + 1}'].values()), sum(list(my_keys[f'0{i + 1}'].values()))])
body_values.append(['Всего', *list(total.values())])
print(sys.getsizeof(body_values) + sys.getsizeof(my_keys) + sys.getsizeof(my_ms) + sys.getsizeof(sheet) + sys.getsizeof(buttons))
body = {'values': body_values}
range_ = f'{"Аналитика"}!A1'
service.spreadsheets().values().update(spreadsheetId=spreadsheet_id, range=range_, valueInputOption='USER_ENTERED',
body=body).execute()
del body, body1, body_values, service, my_ms, my_keys, total, r, sheet, buttons, ms, req1, range_
@dp.message_handler(commands=['analytics'])
async def analytics(message):
try:
if db.get_id_sheets(message.from_user.id) != 'none': # Проверка, что юзер указал ссыклу на GOOGLE SHEETS
tb_name = await table(db.get_id_sheets(message.from_user.id)) # Получение ссылки на таблицу
await send(message.from_user.id, message.from_user.first_name + ", аналитика ваших записей может занять много времени. Когда аналитика окончится, "
" бот пришлет вам сообщение об этом. Результаты появятся в вашей таблице на листе <b>Аналитика</b>. ")
id_sh = db.get_id_sheets(message.from_user.id) # Получение id google sheets юзера
await analytic(id_sh) # Проводим аналитику
await send(message.from_user.id, "Аналитика завершена. ЕЕ вы можете найти <a href='" + tb_name[1] + "'>в своей google sheets таблице</a> на листе <b>Аналитика</b>")
else:
await send(message.from_user.id, message.from_user.first_name + ', Вы не указали таблицу google sheets.\n'
'Чтобы указать таблицу для записей введите команду /set_table')
except Exception as e:
print('Error analytic: ', e)