# qustiion_tools **Repository Path**: jack1995/qustiion_tools ## Basic Information - **Project Name**: qustiion_tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-19 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 直播间问题采集工具 一个轻量级的直播间问题采集工具,实时监听评论并识别问题,通过队列机制和webhook回调进行处理。 ## 🚀 功能特性 - **实时评论监听**: 连接抖音直播间获取实时评论数据 - **智能问题识别**: 自动识别以"??"结尾的评论作为问题 - **队列管理**: 将识别到的问题放入处理队列 - **Webhook回调**: 支持将问题数据发送到指定的回调地址 - **Web管理界面**: 提供直观的Vue.js管理界面 - **Docker支持**: 支持容器化部署 ## 📋 系统要求 - Python 3.11+ - Google Chrome浏览器(用于无头模式采集) - Docker & Docker Compose(用于容器化部署) - 现代浏览器(支持ES6+) ## 🛠️ 技术栈 ### 后端 - **Flask**: Web框架 - **Selenium**: 无头浏览器自动化 - **Python asyncio**: 异步编程 - **Requests**: HTTP客户端 - **BeautifulSoup**: HTML解析 ### 前端 - **Vue.js 3**: 前端框架 - **Element Plus**: UI组件库 - **Axios**: HTTP客户端 ### 部署 - **Docker**: 容器化 - **Nginx**: 反向代理和静态文件服务 - **Redis**: 队列持久化(可选) ## 📦 快速开始 ### 方式一:Docker Compose 部署(推荐) 1. **克隆项目** ```bash git clone <项目地址> cd qustions_tools ``` 2. **创建必要目录** ```bash mkdir -p logs config ``` 3. **启动服务** ```bash docker-compose up -d ``` 4. **访问应用** - Web界面: http://localhost - API文档: http://localhost/health ### 方式二:本地开发部署 1. **安装依赖** ```bash pip install -r requirements.txt ``` 2. **启动后端服务** ```bash python app.py ``` 3. **启动前端服务** ```bash # 使用Python的简单HTTP服务器 python -m http.server 8080 ``` 4. **访问应用** - Web界面: http://localhost:8080 - API服务: http://localhost:5000 ## 💡 使用指南 ### 1. 配置直播间 1. 打开Web界面 2. 在"连接配置"区域输入抖音直播间ID或完整URL - 示例ID: `123456789` - 示例URL: `https://live.douyin.com/123456789` 3. 点击"保存配置"按钮保存配置到文件 4. 点击"开始监听"按钮开始监听 **支持的URL格式:** - 完整URL: `https://live.douyin.com/282622938056` - 房间ID: `282622938056`(自动转换为完整URL) - 备用URL: `https://webcast.amemv.com/webcast/reflow/282622938056` **配置特性:** - 自动格式验证和转换 - 配置持久化存储(保存到config.json文件) - 实时配置更新 - 配置状态显示 ### 2. 配置Webhook(可选) 1. 在"Webhook配置"区域启用Webhook开关 2. 输入回调地址,例如: `https://your-domain.com/webhook` 3. 点击"测试连接"验证配置 4. 系统会自动将识别到的问题发送到该地址 ### 3. 监控问题 - 在"实时问题列表"区域查看识别到的问题 - 系统会自动识别以"??"结尾的评论作为问题 - 问题数据包含:内容、用户、时间戳等信息 ## 🔧 配置说明 ### 环境变量 | 变量名 | 说明 | 默认值 | |--------|------|--------| | `FLASK_ENV` | Flask运行环境 | `production` | | `FLASK_DEBUG` | 调试模式 | `false` | | `LOG_LEVEL` | 日志级别 | `INFO` | ### Webhook数据格式 系统发送的问题数据格式: ```json { "question": "这个产品什么时候上架??", "user": "用户昵称", "user_id": "用户ID", "timestamp": "2024-01-01 12:00:00", "room_id": "直播间ID", "extracted_at": "2024-01-01 12:00:01" } ``` ## 📡 API接口 ### 核心接口 | 方法 | 路径 | 说明 | |------|------|------| | `POST` | `/api/start` | 开始监听直播间 | | `POST` | `/api/stop` | 停止监听 | | `GET` | `/api/status` | 获取系统状态 | | `GET/POST` | `/api/config` | 配置管理 | | `GET` | `/api/questions` | 获取问题列表 | | `POST` | `/api/test-webhook` | 测试Webhook连接 | | `GET/POST` | `/api/room-url` | 直播间URL配置管理 | | `GET` | `/health` | 健康检查 | ### 请求示例 **开始监听** ```bash curl -X POST http://localhost:5000/api/start \ -H "Content-Type: application/json" \ -d '{"room_id": "123456789"}' ``` **获取问题列表** ```bash curl http://localhost:5000/api/questions ``` **配置直播间URL** ```bash # 设置直播间URL curl -X POST http://localhost:5000/api/room-url \ -H "Content-Type: application/json" \ -d '{"room_url": "https://live.douyin.com/282622938056"}' # 获取当前配置 curl http://localhost:5000/api/room-url ``` ## 🗂️ 项目结构 ``` qustions_tools/ ├── app.py # Flask后端主程序 ├── selenium_live_monitor.py # Selenium无头浏览器监听器 ├── douyin_live_monitor.py # 原WebSocket监听器(已弃用) ├── index.html # Vue.js前端界面 ├── requirements.txt # Python依赖 ├── test_selenium_monitor.py # 测试脚本 ├── SELENIUM_USAGE.md # Selenium使用说明 ├── Dockerfile # Docker镜像配置 ├── docker-compose.yml # Docker Compose配置 ├── nginx.conf # Nginx配置 ├── README.md # 项目说明 ├── CLAUDE.md # Claude开发指南 ├── start.sh & stop.sh # 启动停止脚本 └── logs/ # 日志目录(运行时创建) ``` ## 🔍 问题识别规则 系统使用以下规则识别问题: 1. **双问号结尾**: 评论必须以"??"结尾 2. **内容过滤**: 去除首尾空白字符后进行判断 3. **实时处理**: 识别后立即加入处理队列 ### 问题示例 ✅ **会被识别的问题**: - `这个产品什么时候上架??` - `价格多少??` - `有链接吗??` - `质量怎么样??` ❌ **不会被识别的内容**: - `666666` - `主播好棒!` - `这个产品什么时候上架?` (单问号) ## 📊 监控和日志 ### 日志文件 - `logs/live_monitor.log`: 应用主日志 - Docker容器日志: `docker-compose logs -f` ### 监控指标 Web界面提供以下监控信息: - 连接状态 - 队列问题数 - Webhook发送统计 - 直播间基本信息 ## 🚨 故障排除 ### 常见问题 1. **无法连接直播间** - 检查直播间ID是否正确 - 确认直播间是否正在直播 - 查看后端日志了解详细错误 2. **Webhook发送失败** - 检查回调地址是否可访问 - 确认回调服务器是否正常运行 - 查看Webhook发送统计 3. **Docker启动失败** - 检查端口是否被占用 - 确认Docker和Docker Compose版本 - 查看容器日志: `docker-compose logs` ### 调试模式 本地开发时可启用调试模式: ```bash export FLASK_DEBUG=true python app.py ``` ## 🔮 扩展功能 ### 平台扩展 项目采用模块化设计,支持扩展其他直播平台: ```python class LivePlatformInterface: def connect(self, room_id): pass def get_comments(self): pass def disconnect(self): pass ``` ### 预留功能 - B站直播支持 - 快手直播支持 - 更复杂的问题识别规则 - 数据持久化存储 - 批量Webhook发送 ## 📄 许可证 本项目仅供学习和研究使用。 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进项目。 ## 📞 支持 如有问题,请查看: 1. 项目文档 2. API接口说明 3. 故障排除指南