更新导出为csv的方式,字段中有因为,自动转义

This commit is contained in:
xaoyaoo 2024-01-09 22:02:11 +08:00
parent 2366baaa52
commit c3cbcc1b2c
2 changed files with 28 additions and 24 deletions

View File

@ -12,6 +12,7 @@
# Author: xaoyaoo # Author: xaoyaoo
# Date: 2023/11/10 # Date: 2023/11/10
# ------------------------------------------------------------------------------- # -------------------------------------------------------------------------------
import csv
import re import re
import sqlite3 import sqlite3
import os import os
@ -233,7 +234,9 @@ def export_csv(username, outpath, MSG_ALL_db_path, page_size=5000):
break break
save_path = os.path.join(outpath, f"{username}_{i}_{i + page_size}.csv") save_path = os.path.join(outpath, f"{username}_{i}_{i + page_size}.csv")
with open(save_path, "w", encoding="utf-8") as f: with open(save_path, "w", encoding="utf-8") as f:
f.write("id,MsgSvrID,type_name,is_sender,talker,room_name,content,CreateTime\n") csv_writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
csv_writer.writerow(["id", "MsgSvrID", "type_name", "is_sender", "talker", "room_name", "content",
"CreateTime"])
for row in data: for row in data:
id = row.get("id", "") id = row.get("id", "")
MsgSvrID = row.get("MsgSvrID", "") MsgSvrID = row.get("MsgSvrID", "")
@ -245,8 +248,8 @@ def export_csv(username, outpath, MSG_ALL_db_path, page_size=5000):
CreateTime = row.get("CreateTime", "") CreateTime = row.get("CreateTime", "")
content = json.dumps(content, ensure_ascii=False) content = json.dumps(content, ensure_ascii=False)
csv_writer.writerow([id, MsgSvrID, type_name, is_sender, talker, room_name, content, CreateTime])
f.write(f"{id},{MsgSvrID},{type_name},{is_sender},{talker},{room_name},{content},{CreateTime}\n")
return True, f"导出成功: {outpath}" return True, f"导出成功: {outpath}"

View File

@ -295,9 +295,7 @@ class MainExportChatRecords():
def run(self, args): def run(self, args):
# 从命令行参数获取值 # 从命令行参数获取值
t = args.type t = args.type
if t not in ["html", "csv"]:
print("[-] 未知的导出类型")
return
if t == "txt": if t == "txt":
try: try:
code, ret = export_csv(args.username, args.outpath, args.msg_path, page_size=10000000) code, ret = export_csv(args.username, args.outpath, args.msg_path, page_size=10000000)
@ -310,7 +308,7 @@ class MainExportChatRecords():
print(e) print(e)
print("[-] 导出失败") print("[-] 导出失败")
return return
elif t == "html":
try: try:
from flask import Flask, request, jsonify, render_template, g from flask import Flask, request, jsonify, render_template, g
import logging import logging
@ -331,6 +329,9 @@ class MainExportChatRecords():
export(args.username, args.outpath, args.msg_path, args.micro_path, args.media_path, args.filestorage_path) export(args.username, args.outpath, args.msg_path, args.micro_path, args.media_path, args.filestorage_path)
print(f"[+] 导出成功{args.outpath}") print(f"[+] 导出成功{args.outpath}")
else:
print("[-] 未知的导出类型")
return
class MainAll(): class MainAll():