Files
dc-docs/scripts/read_all_feishu.py
T
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

116 lines
3.6 KiB
Python

#!/usr/bin/env python3
"""读取所有飞书链接并生成汇总报告"""
import json
import requests
from bs4 import BeautifulSoup
import time
from datetime import datetime
def extract_content(url):
"""从飞书链接提取内容"""
try:
resp = requests.get(url, timeout=10, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(resp.text, 'html.parser')
# 获取标题
title = soup.find('title')
title_text = title.text.strip() if title else ''
# 移除脚本和样式
for script in soup(['script', 'style']):
script.decompose()
# 获取文本内容
text = soup.get_text(strip=True)
# 提取关键信息
# 查找日报内容(通常在特定区域)
content_start = text.find('日报')
if content_start == -1:
content_start = text.find('工作')
if content_start == -1:
content_start = 0
content = text[content_start:content_start + 800]
return {
'title': title_text,
'content': content,
'success': True
}
except Exception as e:
return {
'title': '',
'content': str(e),
'success': False
}
def main():
# 读取链接
with open('D:/desktop/feishu_docs_summary/all_feishu_links.json', 'r', encoding='utf-8') as f:
data = json.load(f)
links = data.get('links', [])
print(f'{len(links)} 个链接')
# 按组分类
groups = {}
for link in links:
group = link['group']
if group not in groups:
groups[group] = []
groups[group].append(link)
# 读取每个组的文档
all_docs = []
for group_name, group_links in groups.items():
print(f'\n=== {group_name} ({len(group_links)} 个链接) ===')
for i, link in enumerate(group_links[:5], 1): # 每个组读取前5个
print(f' [{i}/5] {link["sender"]} - {link["url"][:50]}...')
result = extract_content(link['url'])
result['sender'] = link['sender']
result['time'] = link['time']
result['group'] = group_name
result['url'] = link['url']
all_docs.append(result)
time.sleep(0.3)
# 保存结果
output = {
'date': datetime.now().strftime('%Y-%m-%d'),
'total_links': len(links),
'docs_read': len(all_docs),
'documents': all_docs
}
with open('D:/desktop/feishu_docs_summary/feishu_docs_content.json', 'w', encoding='utf-8') as f:
json.dump(output, f, ensure_ascii=False, indent=2)
# 生成 Markdown 报告
report = f'# 飞书文档汇总报告\n\n'
report += f'**日期**: {datetime.now().strftime("%Y-%m-%d")}\n'
report += f'**链接总数**: {len(links)}\n'
report += f'**已读取**: {len(all_docs)}\n\n'
for group_name in groups.keys():
group_docs = [d for d in all_docs if d['group'] == group_name]
if group_docs:
report += f'## {group_name}\n\n'
for doc in group_docs:
report += f'### {doc["sender"]} ({doc["time"]})\n'
report += f'**链接**: {doc["url"]}\n\n'
report += f'{doc["content"][:300]}\n\n'
report += '---\n\n'
with open('D:/desktop/feishu_docs_summary/feishu_summary_report.md', 'w', encoding='utf-8') as f:
f.write(report)
print(f'\n已保存到:')
print(f' - feishu_docs_content.json')
print(f' - feishu_summary_report.md')
if __name__ == '__main__':
main()