{"contents":"# -*- coding: utf-8 -*-#\n# -------------------------------------------------------------------------------\n# Name: exportCSV.py\n# Description: \n# Author: xaoyaoo\n# Date: 2024/04/20\n# -------------------------------------------------------------------------------\nimport csv\nimport json\nimport os\nfrom wxdump_linux.db import DBHandler\n\n\ndef export_csv(wxid, outpath, db_config, my_wxid=\"我\", page_size=5000):\n if not os.path.exists(outpath):\n outpath = os.path.join(os.getcwd(), \"export\" + os.sep + wxid)\n if not os.path.exists(outpath):\n os.makedirs(outpath)\n\n db = DBHandler(db_config, my_wxid)\n\n count = db.get_msgs_count(wxid)\n chatCount = count.get(wxid, 0)\n if chatCount == 0:\n return False, \"没有聊天记录\"\n\n if page_size \u003e chatCount:\n page_size = chatCount + 1\n\n users = {}\n for i in range(0, chatCount, page_size):\n start_index = i\n data, users_t = db.get_msgs(wxid, start_index, page_size)\n print(users, users_t)\n users.update(users_t)\n\n if len(data) == 0:\n return False, \"没有聊天记录\"\n\n save_path = os.path.join(outpath, f\"{wxid}_{i}_{i + page_size}.csv\")\n\n with open(save_path, \"w\", encoding=\"utf-8\", newline='') as f:\n csv_writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL)\n\n csv_writer.writerow([\"id\", \"MsgSvrID\", \"type_name\", \"is_sender\", \"talker\", \"room_name\", \"msg\", \"src\",\n \"CreateTime\"])\n for row in data:\n id = row.get(\"id\", \"\")\n MsgSvrID = row.get(\"MsgSvrID\", \"\")\n type_name = row.get(\"type_name\", \"\")\n is_sender = row.get(\"is_sender\", \"\")\n talker = row.get(\"talker\", \"\")\n room_name = row.get(\"room_name\", \"\")\n msg = row.get(\"msg\", \"\")\n src = row.get(\"src\", \"\")\n CreateTime = row.get(\"CreateTime\", \"\")\n csv_writer.writerow([id, MsgSvrID, type_name, is_sender, talker, room_name, msg, src, CreateTime])\n with open(os.path.join(outpath, \"users.json\"), \"w\", encoding=\"utf-8\") as f:\n json.dump(users, f, ensure_ascii=False, indent=4)\n return True, f\"导出成功: {outpath}\"\n\n\nif __name__ == '__main__':\n pass\n","is_binary":false,"path":"wxdump_linux/api/export/export_csv.py","ref":""}