feat: 钉钉群聊飞书文档收集与知识图谱系统初始提交
- 通过悟空(dws CLI)拉取dc战略问题研究院+创新组两个群的消息(377条) - 提取190个飞书链接、18个文件附件 - 下载HTML/MD/XLSX等报告文件到output/downloaded-files/ - 构建知识图谱(JSON+HTML可视化) - 生成Obsidian知识库(28个页面,7大主题) - 生成花园世界全量汇总报告 - 所有脚本路径改为相对路径,便于迁移
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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']})")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user