QQ群年度报告分析器API全解析:轻松集成热词分析功能到你的项目
2026/7/18 11:17:45 网站建设 项目流程

QQ群年度报告分析器API全解析:轻松集成热词分析功能到你的项目

【免费下载链接】QQgroup-annual-report-analyzer一个用于分析QQ群聊记录并生成年度热词报告的工具。支持热词发现、趣味统计、可视化报告生成等功能。项目地址: https://gitcode.com/gh_mirrors/qq/QQgroup-annual-report-analyzer

QQ群年度报告分析器是一个功能强大的开源工具,专门用于分析QQ群聊记录并生成精美的年度报告。通过其完善的RESTful API接口,开发者可以轻松地将热词分析、数据统计和报告生成功能集成到自己的项目中。本文将深入解析该工具的API架构、核心功能和使用方法,帮助您快速上手并集成到您的应用中。

🚀 快速入门:API基础概览

QQ群年度报告分析器提供了完整的后端API服务,支持JSON格式的数据交互。API服务基于Flask框架构建,具有以下核心特性:

  • RESTful设计:遵循标准的REST API设计原则
  • 完善的认证机制:支持CSRF令牌保护
  • 智能限流策略:防止API滥用
  • 错误处理机制:详细的错误信息和状态码
  • 数据持久化:支持JSON文件和MySQL两种存储方式

API服务启动

要使用API服务,您需要先启动后端服务。项目提供了多种启动方式:

本地启动(推荐用于开发):

cd backend pip install -r requirements.txt PORT=5000 python app.py

Docker部署(适合生产环境):

docker-compose up -d --build

启动后,API服务默认运行在http://localhost:5000,前端界面运行在http://localhost:5173

📊 核心API接口详解

1. 健康检查端点

端点:GET /api/health

这是最基本的API端点,用于检查服务状态。返回信息包括数据库连接状态、限流配置和AI功能开关等。

{ "ok": true, "services": { "database": true }, "rate_limit": { "enabled": true, "scope": "per_ip", "note": "每个IP地址独立计数" }, "csrf": { "enabled": true }, "features": { "ai_comment_enabled": false, "ai_word_selection_enabled": false } }

2. 群聊报告生成API

端点:POST /api/upload

这是最核心的API接口,用于上传QQ群聊天记录并生成年度报告。支持多种参数配置:

请求参数:

  • file:聊天记录JSON文件(必需)
  • auto_select:是否自动选择热词(可选,默认false)
  • use_stopwords:是否使用停用词库(可选,默认false)
  • start_date:消息开始时间过滤(可选)
  • end_date:消息结束时间过滤(可选)

响应示例:

{ "success": true, "report_id": "550e8400-e29b-41d4-a716-446655440000", "report": { "summary": { "total_messages": 12345, "active_days": 365, "total_members": 50 }, "hot_words": [ { "word": "哈哈哈", "frequency": 123, "weight": 0.95 } ], "rankings": { "message_count": [...], "emoji_master": [...], "night_owl": [...] } }, "report_url": "/report/550e8400-e29b-41d4-a716-446655440000" }

3. 个人报告生成API

端点:POST /api/personal-report

针对特定用户生成个人年度报告,分析该用户在群聊中的行为特征。

请求参数:

  • file:聊天记录JSON文件(必需)
  • target_name:要分析的用户名称(必需)
  • use_stopwords:是否使用停用词库(可选)

响应结构:返回包含用户发言统计、个人热词、活跃时段等详细信息的个人报告。

4. 报告管理API

获取报告列表:GET /api/reports获取报告详情:GET /api/reports/{report_id}删除报告:DELETE /api/reports/{report_id}

这些接口用于管理已生成的报告,支持分页查询和条件筛选。

5. 图片生成API

端点:POST /api/reports/{report_id}/generate-image

将HTML报告转换为PNG图片格式,便于分享和展示。

请求参数:

  • width:图片宽度(可选,默认1200)
  • height:图片高度(可选,默认800)
  • quality:图片质量(可选,默认90)

响应:返回Base64编码的图片数据或图片下载链接。

🔧 高级功能配置

AI智能分析功能

项目集成了OpenAI API,支持AI智能点评和热词选择功能。要启用AI功能,需要在环境变量中配置:

OPENAI_API_KEY=sk-your-api-key-here OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-3.5-turbo AI_COMMENT_ENABLED=true AI_WORD_SELECTION_ENABLED=true

数据存储配置

支持两种存储模式,通过环境变量配置:

JSON文件存储(默认):

STORAGE_MODE=json

MySQL数据库存储:

STORAGE_MODE=mysql MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=your_password MYSQL_DATABASE=qq_reports

安全配置

API服务提供了多层次的安全保护:

SECURITY_ENABLED=true RATE_LIMIT_DEFAULT=200 per day, 50 per hour RATE_LIMIT_UPLOAD=10 per hour FILE_SECURITY_CHECK=true ALLOWED_FILE_EXTENSIONS=json

🛠️ 集成示例代码

Python客户端示例

import requests import json class QQReportClient: def __init__(self, base_url="http://localhost:5000"): self.base_url = base_url self.session = requests.Session() def upload_chat_log(self, file_path, auto_select=False): """上传聊天记录并生成报告""" with open(file_path, 'rb') as f: files = {'file': f} data = { 'auto_select': str(auto_select).lower(), 'use_stopwords': 'true' } response = self.session.post( f"{self.base_url}/api/upload", files=files, data=data ) return response.json() def get_report(self, report_id): """获取报告详情""" response = self.session.get(f"{self.base_url}/api/reports/{report_id}") return response.json() def generate_personal_report(self, file_path, target_name): """生成个人报告""" with open(file_path, 'rb') as f: files = {'file': f} data = {'target_name': target_name} response = self.session.post( f"{self.base_url}/api/personal-report", files=files, data=data ) return response.json() # 使用示例 client = QQReportClient() result = client.upload_chat_log("chat.json", auto_select=True) print(f"报告ID: {result['report_id']}") print(f"报告URL: {result['report_url']}")

JavaScript/TypeScript客户端示例

class QQReportAPI { constructor(baseUrl = 'http://localhost:5000') { this.baseUrl = baseUrl; } async uploadChatLog(file, options = {}) { const formData = new FormData(); formData.append('file', file); formData.append('auto_select', options.autoSelect || 'false'); formData.append('use_stopwords', options.useStopwords || 'true'); const response = await fetch(`${this.baseUrl}/api/upload`, { method: 'POST', body: formData }); return await response.json(); } async getReport(reportId) { const response = await fetch(`${this.baseUrl}/api/reports/${reportId}`); return await response.json(); } async generateImage(reportId, options = {}) { const response = await fetch(`${this.baseUrl}/api/reports/${reportId}/generate-image`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ width: options.width || 1200, height: options.height || 800, quality: options.quality || 90 }) }); return await response.json(); } } // 使用示例 const api = new QQReportAPI(); const fileInput = document.getElementById('chatFile'); fileInput.addEventListener('change', async (event) => { const file = event.target.files[0]; const result = await api.uploadChatLog(file, { autoSelect: true, useStopwords: true }); if (result.success) { console.log('报告生成成功:', result.report_id); // 显示报告 const report = await api.getReport(result.report_id); displayReport(report); } });

📈 数据分析功能详解

热词分析算法

QQ群年度报告分析器使用jieba分词库进行中文分词,结合TF-IDF算法和自定义权重计算,能够准确识别群聊中的热门词汇。核心算法位于analyzer.py文件中:

# 核心分析流程 1. 数据预处理:清洗聊天记录,过滤无效消息 2. 分词处理:使用jieba进行中文分词 3. 词频统计:计算每个词汇的出现频率 4. 权重计算:结合词频、词性、上下文等因素 5. 热词筛选:按权重排序,选择Top N热词 6. 新词发现:识别群聊特有的新词汇

多维度排行榜

系统支持生成多个维度的排行榜,全面分析群聊活跃度:

  1. 发言量排行榜:统计每个成员的消息数量
  2. 表情包达人:分析表情包使用频率最高的成员
  3. 夜猫子排行:统计深夜活跃的成员
  4. 早起人排行:统计早晨活跃的成员
  5. 图片分享达人:统计图片分享最多的成员

时间分布分析

通过分析消息的时间分布,可以了解群聊的活跃时段规律:

  • 小时分布:24小时活跃度曲线
  • 星期分布:一周内各天的活跃度
  • 月份分布:全年活跃度趋势

🔍 API错误处理

API服务提供了完善的错误处理机制,所有错误都遵循统一的响应格式:

{ "error": "错误描述信息", "code": "错误代码(可选)", "details": "详细错误信息(可选)" }

常见错误码:

  • 400:请求参数错误
  • 401:认证失败
  • 403:权限不足
  • 404:资源不存在
  • 429:请求频率超限
  • 500:服务器内部错误

🚀 性能优化建议

1. 文件处理优化

对于大型聊天记录文件,建议采取以下优化措施:

# 使用流式处理大文件 import ijson def process_large_file(file_path): with open(file_path, 'r', encoding='utf-8') as f: parser = ijson.items(f, 'item') for item in parser: # 逐条处理消息 process_message(item)

2. 缓存策略

对于频繁访问的报告数据,可以实施缓存策略:

from functools import lru_cache @lru_cache(maxsize=100) def get_cached_report(report_id): return db_service.get_report(report_id)

3. 异步处理

对于耗时的报告生成任务,可以使用异步处理:

from concurrent.futures import ThreadPoolExecutor def generate_report_async(file_data): with ThreadPoolExecutor() as executor: future = executor.submit(generate_report_sync, file_data) return future.result()

📋 最佳实践指南

1. 文件格式要求

聊天记录文件必须是标准的JSON格式,通常由qq-chat-exporter工具导出。文件结构示例:

[ { "time": "2024-01-01 12:00:00", "sender": "用户A", "message": "大家好!", "type": "text" }, { "time": "2024-01-01 12:01:00", "sender": "用户B", "message": "欢迎!", "type": "text" } ]

2. 内存管理

处理大型聊天记录时,注意内存使用:

  • 使用生成器处理数据流
  • 分批处理消息记录
  • 及时清理临时文件

3. 错误恢复

实现完善的错误恢复机制:

try: result = api_client.upload_chat_log(file_path) except requests.exceptions.ConnectionError: # 网络连接错误,重试机制 retry_upload(file_path) except ValueError as e: # 数据格式错误,提示用户 show_error_message(f"文件格式错误: {str(e)}") except Exception as e: # 其他未知错误 logger.error(f"上传失败: {e}")

🎯 应用场景示例

1. 社交媒体分析平台

将QQ群年度报告分析器API集成到社交媒体分析平台中,为用户提供群聊活跃度分析服务:

# 集成到Django应用中 from django.views import View from django.http import JsonResponse import requests class QQGroupAnalysisView(View): def post(self, request): file = request.FILES['chat_file'] # 调用QQ报告API api_result = qq_report_api.upload(file) # 将结果保存到数据库 analysis = GroupAnalysis.objects.create( user=request.user, report_id=api_result['report_id'], raw_data=api_result['report'] ) return JsonResponse({ 'analysis_id': analysis.id, 'report_url': f'/analysis/{analysis.id}' })

2. 企业协作分析工具

为企业内部的QQ工作群提供数据分析服务:

// 企业版集成示例 class EnterpriseQQAnalyzer { constructor(apiKey) { this.apiKey = apiKey; this.baseUrl = 'https://enterprise.qqreport.example.com'; } async analyzeDepartmentChat(departmentId, period) { // 获取部门聊天记录 const chatLogs = await this.fetchDepartmentLogs(departmentId, period); // 调用分析API const analysis = await this.qqReportAPI.uploadChatLog(chatLogs, { autoSelect: true, useStopwords: true }); // 生成部门报告 return this.generateDepartmentReport(analysis); } }

3. 教育机构应用

为学校班级群提供学习交流分析:

# 教育机构集成 class ClassGroupAnalyzer: def analyze_class_performance(self, class_id, semester): """分析班级群聊的学习交流情况""" # 获取学期内的聊天记录 chat_data = self.get_class_chat_logs(class_id, semester) # 生成分析报告 report = self.qq_report_client.upload_chat_log(chat_data) # 提取关键指标 metrics = self.extract_learning_metrics(report) # 生成教学建议 suggestions = self.generate_suggestions(metrics) return { 'report': report, 'metrics': metrics, 'suggestions': suggestions }

🔧 扩展开发指南

自定义分析模块

您可以通过扩展analyzer.py文件来添加自定义分析功能:

# 自定义分析器示例 class CustomAnalyzer(BaseAnalyzer): def __init__(self, data, use_stopwords=False): super().__init__(data, use_stopwords) def analyze_custom_metrics(self): """添加自定义分析指标""" # 分析消息情感倾向 sentiment_scores = self.analyze_sentiment() # 分析话题变化趋势 topic_evolution = self.analyze_topic_evolution() # 分析互动网络 interaction_network = self.build_interaction_network() return { 'sentiment': sentiment_scores, 'topics': topic_evolution, 'network': interaction_network }

插件系统集成

项目支持插件系统,可以轻松集成第三方分析工具:

# 插件接口定义 class AnalysisPlugin: def __init__(self, config): self.config = config def process(self, chat_data, context): """处理聊天数据,返回分析结果""" raise NotImplementedError def get_report_section(self, analysis_result): """生成报告片段""" raise NotImplementedError # 情感分析插件示例 class SentimentAnalysisPlugin(AnalysisPlugin): def process(self, chat_data, context): # 使用情感分析库处理消息 sentiments = [] for message in chat_data: sentiment = self.analyze_sentiment(message['content']) sentiments.append({ 'message': message['content'], 'sentiment': sentiment, 'confidence': self.get_confidence(sentiment) }) return sentiments def get_report_section(self, analysis_result): return { 'title': '情感分析', 'type': 'sentiment_chart', 'data': analysis_result }

📚 相关资源

核心代码文件

  • 后端API服务:backend/app.py - Flask应用和API路由定义
  • 分析引擎:analyzer.py - 核心分析逻辑实现
  • 报告生成器:report_generator.py - HTML报告生成
  • 图片生成器:image_generator.py - 报告图片导出
  • 个人分析器:personal_analyzer.py - 个人报告分析
  • 工具函数:utils.py - 通用工具函数
  • 数据库服务:backend/db_service.py - 数据存储服务
  • JSON存储:backend/json_storage.py - JSON文件存储

配置说明

  • 环境配置:backend/.env.example - 环境变量模板
  • 命令行配置:config.example.py - 命令行模式配置
  • Docker配置:docker-compose.yml - Docker部署配置
  • 依赖管理:requirements.txt - Python依赖包列表

🎉 总结

QQ群年度报告分析器API提供了一个完整、易用的解决方案,让开发者能够轻松地将群聊分析功能集成到自己的项目中。无论是构建社交媒体分析平台、企业协作工具,还是教育应用,这个API都能提供强大的数据支持。

通过本文的详细解析,您应该已经掌握了:

  1. API的基本使用方法:从健康检查到报告生成的完整流程
  2. 高级功能配置:AI分析、数据存储、安全设置等
  3. 客户端集成示例:Python和JavaScript的完整示例代码
  4. 性能优化建议:处理大文件、缓存策略等最佳实践
  5. 扩展开发指南:自定义分析模块和插件系统

现在,您可以开始将QQ群年度报告分析功能集成到您的项目中,为用户提供更加丰富的数据分析和可视化体验!🚀

温馨提示:在实际使用中,建议先从简单的功能开始,逐步添加复杂功能。同时,注意数据安全和用户隐私保护,确保符合相关法律法规要求。

【免费下载链接】QQgroup-annual-report-analyzer一个用于分析QQ群聊记录并生成年度热词报告的工具。支持热词发现、趣味统计、可视化报告生成等功能。项目地址: https://gitcode.com/gh_mirrors/qq/QQgroup-annual-report-analyzer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询