Files
dc-docs/scripts/fetch_all.py
T
2026-06-08 10:04:12 +08:00

77 lines
2.7 KiB
Python

import sys, io, json, subprocess, os
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(SCRIPT_DIR)
from config import DWS
def fetch(group_id, time_str, forward="true"):
cmd = [DWS, "chat", "message", "list", "--group", group_id, "--time", time_str, "--forward", forward, "--format", "json", "--limit", "200"]
result = subprocess.run(cmd, capture_output=True, timeout=60)
output = result.stdout.decode("utf-8", errors="replace")
json_start = output.find("{")
if json_start < 0: return [], False
data = json.loads(output[json_start:])
msgs = data.get("result", {}).get("messages", [])
has_more = data.get("result", {}).get("hasMore", False)
return msgs, has_more
dc_id = "cidoUneRB4Db8TAXaTrKxkQAw=="
# Fetch dc 05-24+
msgs, hm = fetch(dc_id, "2026-05-24 00:00:00", "true")
print("dc 05-24+: %d msgs, hasMore=%s" % (len(msgs), hm), flush=True)
if msgs:
t0 = msgs[-1]["createTime"]
t1 = msgs[0]["createTime"]
print(" Range: %s ~ %s" % (t0, t1), flush=True)
# Fetch backwards from 06-03
msgs2, hm2 = fetch(dc_id, "2026-06-03 00:00:00", "false")
print("dc before 06-03: %d msgs, hasMore=%s" % (len(msgs2), hm2), flush=True)
if msgs2:
t0 = msgs2[-1]["createTime"]
t1 = msgs2[0]["createTime"]
print(" Range: %s ~ %s" % (t0, t1), flush=True)
# Now combine ALL dc messages with dedup
all_dc = {}
# Segment 1: 05-01 forward
msgs1, _ = fetch(dc_id, "2026-05-01 00:00:00", "true")
for m in msgs1: all_dc[m["openMessageId"]] = m
# Segment 2: 05-19 forward
msgs2, _ = fetch(dc_id, "2026-05-19 00:00:00", "true")
for m in msgs2: all_dc[m["openMessageId"]] = m
# Segment 3: 05-24 forward
msgs3, _ = fetch(dc_id, "2026-05-24 00:00:00", "true")
for m in msgs3: all_dc[m["openMessageId"]] = m
# Segment 4: backwards from 06-03
msgs4, _ = fetch(dc_id, "2026-06-03 00:00:00", "false")
for m in msgs4: all_dc[m["openMessageId"]] = m
print("\nTotal unique dc messages: %d" % len(all_dc), flush=True)
all_msgs = list(all_dc.values())
if all_msgs:
times = sorted([m["createTime"] for m in all_msgs])
print("Full range: %s ~ %s" % (times[0], times[-1]), flush=True)
# Also get cx
cx_id = "cidMuM+itt5PeY7xNSWsv3M0g=="
all_cx = {}
msgs, _ = fetch(cx_id, "2026-05-01 00:00:00", "true")
for m in msgs: all_cx[m["openMessageId"]] = m
print("Total unique cx messages: %d" % len(all_cx), flush=True)
# Save
output = {"dc": list(all_dc.values()), "cx": list(all_cx.values())}
with open(os.path.join(PROJECT_ROOT, "data", "raw-messages", "all_messages_combined.json"), "w", encoding="utf-8") as f:
json.dump(output, f, ensure_ascii=False, indent=2)
print("Saved!")