fe5505343e
- 通过悟空(dws CLI)拉取dc战略问题研究院+创新组两个群的消息(377条) - 提取190个飞书链接、18个文件附件 - 下载HTML/MD/XLSX等报告文件到output/downloaded-files/ - 构建知识图谱(JSON+HTML可视化) - 生成Obsidian知识库(28个页面,7大主题) - 生成花园世界全量汇总报告 - 所有脚本路径改为相对路径,便于迁移
116 lines
3.6 KiB
Python
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()
|