Files
dc-docs/scripts/extract_links.py
Evilom fe5505343e feat: 钉钉群聊飞书文档收集与知识图谱系统初始提交
- 通过悟空(dws CLI)拉取dc战略问题研究院+创新组两个群的消息(377条)
- 提取190个飞书链接、18个文件附件
- 下载HTML/MD/XLSX等报告文件到output/downloaded-files/
- 构建知识图谱(JSON+HTML可视化)
- 生成Obsidian知识库(28个页面,7大主题)
- 生成花园世界全量汇总报告
- 所有脚本路径改为相对路径,便于迁移
2026-06-02 20:24:25 +08:00

66 lines
2.3 KiB
Python

import sys, io, json, re, os, 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)
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(SCRIPT_DIR)
with open(os.path.join(PROJECT_ROOT, "data", "raw-messages", "all_messages_raw.json"), "r", encoding="utf-8") as f:
data = json.load(f)
feishu_re = re.compile(r"https?://[a-zA-Z0-9.-]+\.feishu\.cn/(?:wiki|docx)/[A-Za-z0-9]+")
file_re = re.compile(r"\[文件\]\s+(.+?)\s+fileId:\s+(\S+)")
kimi_re = re.compile(r"https?://[a-zA-Z0-9.-]+\.ok\.kimi\.link/\S*")
all_feishu = set()
all_files = []
all_kimi = []
for group_name, msgs in data.items():
print(f"\n=== {group_name} ({len(msgs)} msgs) ===")
if msgs:
print(f"Time: {msgs[-1]['createTime']} ~ {msgs[0]['createTime']}")
senders = {}
for msg in msgs:
content = msg.get("content", "")
sender = msg.get("sender", "unknown")
senders[sender] = senders.get(sender, 0) + 1
for link in feishu_re.findall(content):
all_feishu.add(link)
fm = file_re.search(content)
if fm:
all_files.append({"name": fm.group(1), "fileId": fm.group(2), "sender": sender, "time": msg.get("createTime",""), "group": group_name})
for link in kimi_re.findall(content):
desc = content.split("https")[0].strip()[:80]
all_kimi.append({"url": link, "desc": desc, "sender": sender, "group": group_name})
print(f"Feishu links: {len([l for l in all_feishu if any(m.get('openConversationId','') == ('cidoUneRB4Db8TAXaTrKxkQAw==' if group_name=='dc' else 'cidMuM+itt5PeY7xNSWsv3M0g==') for m in msgs)])}")
print(f"Top senders: {sorted(senders.items(), key=lambda x: -x[1])[:5]}")
print(f"\n=== TOTALS ===")
print(f"Unique Feishu links: {len(all_feishu)}")
print(f"File attachments: {len(all_files)}")
print(f"Kimi links: {len(all_kimi)}")
print("\nAll Feishu links:")
for link in sorted(all_feishu):
print(f" {link}")
print("\nAll files:")
for f in all_files:
print(f" [{f['group']}] {f['name']} (by {f['sender']}, {f['time']})")
print("\nAll Kimi links:")
for k in all_kimi:
print(f" [{k['group']}] {k['desc']} -> {k['url']} (by {k['sender']})")