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

58 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""每日收集钉钉群飞书链接 - 简化版"""
import subprocess
import json
import re
import os
from datetime import datetime, timedelta
from config import DWS, GROUPS
def run_dws(args):
try:
result = subprocess.run([DWS] + args, capture_output=True, text=True, encoding='utf-8', timeout=20)
return json.loads(result.stdout) if result.returncode == 0 else None
except:
return None
def get_messages(group_id, since_time):
data = run_dws(["chat", "message", "list", "--group", group_id, "--time", since_time, "--limit", "200", "--format", "json"])
return data.get("result", {}).get("messages", []) if data else []
def extract_feishu_links(messages):
links = []
pattern = r'https?://[a-zA-Z0-9-]+\.feishu\.cn/\S+'
seen = set()
for msg in messages:
content = msg.get("content", "")
found = re.findall(pattern, content)
for url in found:
clean_url = url.split("?")[0]
if clean_url not in seen:
seen.add(clean_url)
links.append({"url": clean_url, "sender": msg.get("sender", "unknown"), "time": msg.get("createTime", "")})
return links
def main():
yesterday = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d 00:00:00")
all_links = []
for group_name, group_id in GROUPS.items():
messages = get_messages(group_id, yesterday)
links = extract_feishu_links(messages)
for link in links:
link["group"] = group_name
all_links.extend(links)
# Save
output_file = f"feishu_links_{datetime.now().strftime('%Y%m%d')}.json"
with open(output_file, "w", encoding="utf-8") as f:
json.dump({"date": datetime.now().strftime("%Y-%m-%d"), "total": len(all_links), "links": all_links}, f, ensure_ascii=False, indent=2)
print(f"Found {len(all_links)} Feishu links")
if __name__ == "__main__":
main()