From e793fa00737317fe7a27240e5d42b4e4fa893712 Mon Sep 17 00:00:00 2001 From: DzhiWang <2429634486@qq.com> Date: Thu, 7 Dec 2023 19:26:37 +0800 Subject: [PATCH 1/2] add month_count in analysis --- app/DataBase/msg.py | 22 ++++++++++++++++++++++ app/analysis/analysis.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/app/DataBase/msg.py b/app/DataBase/msg.py index dbf529e..9afc005 100644 --- a/app/DataBase/msg.py +++ b/app/DataBase/msg.py @@ -205,6 +205,28 @@ class Msg: finally: lock.release() return result + + def get_messages_by_month(self, username_, year_='2023'): + sql = ''' + SELECT strftime('%Y-%m',CreateTime,'unixepoch','localtime') as days,count(MsgSvrID) + from MSG + where StrTalker = ? and strftime('%Y',CreateTime,'unixepoch','localtime') = ? + group by days + ''' + result = None + if not self.open_flag: + return None + try: + lock.acquire(True) + self.cursor.execute(sql, [username_, year_]) + result = self.cursor.fetchall() + except sqlite3.DatabaseError: + logger.error(f'{traceback.format_exc()}\n数据库损坏请删除msg文件夹重试') + finally: + lock.release() + # result.sort(key=lambda x: x[5]) + return result + def get_first_time_of_message(self, username_): if not self.open_flag: diff --git a/app/analysis/analysis.py b/app/analysis/analysis.py index fa56a30..03e917a 100644 --- a/app/analysis/analysis.py +++ b/app/analysis/analysis.py @@ -113,6 +113,41 @@ def calendar_chart(wxid, year): } +def month_count(wxid, year): + """ + 每月聊天条数 + """ + msg_data = msg_db.get_messages_by_month(wxid, year) + y_data = list(map(lambda x: x[1], msg_data)) + x_axis = list(map(lambda x: x[0], msg_data)) + c = ( + Bar(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px")) + .add_xaxis(x_axis) + .add_yaxis("消息数量", y_data, + label_opts=opts.LabelOpts(is_show=False), + itemstyle_opts=opts.ItemStyleOpts(color="skyblue"), + ) + .set_global_opts( + title_opts=opts.TitleOpts(title="逐月统计", subtitle=None), + datazoom_opts=opts.DataZoomOpts(), + toolbox_opts=opts.ToolboxOpts(), + visualmap_opts=opts.VisualMapOpts( + min_=min(y_data), + max_=max(y_data), + dimension=1, # 根据第2个维度(y 轴)进行映射 + is_piecewise=False, # 是否分段显示 + range_color=["#66ccff", "#003366"], # 设置颜色范围 + type_="color", + pos_right="0%", + ), + ) + ) + + return { + 'chart_data': c + } + + class Analysis: pass @@ -123,3 +158,5 @@ if __name__ == '__main__': c = calendar_chart('wxid_27hqbq7vx5hf22', '2023') c['chart_data'].render("./data/聊天统计/calendar.html") print('c:::', c) + m = month_count('wxid_27hqbq7vx5hf22', '2023') + m['chart_data'].render("./data/聊天统计/month_num.html") From 816b7ccaa0f8850518b2e462f2b1796a7f37df3c Mon Sep 17 00:00:00 2001 From: DzhiWang <2429634486@qq.com> Date: Thu, 7 Dec 2023 19:28:47 +0800 Subject: [PATCH 2/2] add month_count in analysis --- app/analysis/analysis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/analysis/analysis.py b/app/analysis/analysis.py index 03e917a..c96b209 100644 --- a/app/analysis/analysis.py +++ b/app/analysis/analysis.py @@ -120,7 +120,7 @@ def month_count(wxid, year): msg_data = msg_db.get_messages_by_month(wxid, year) y_data = list(map(lambda x: x[1], msg_data)) x_axis = list(map(lambda x: x[0], msg_data)) - c = ( + m = ( Bar(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px")) .add_xaxis(x_axis) .add_yaxis("消息数量", y_data, @@ -144,7 +144,7 @@ def month_count(wxid, year): ) return { - 'chart_data': c + 'chart_data': m }