news 2026/4/16 13:56:04

dy直播间评论保存插件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
dy直播间评论保存插件


实时检测dy直播间所有用户评论内容,支持转发到服务器

server.py

importuvicornfromfastapiimportFastAPIfromfastapi.middleware.corsimportCORSMiddlewarefrompydanticimportBaseModelfromtypingimportList,Optionalfromdatetimeimportdatetime# 初始化应用app=FastAPI(title="抖音弹幕接收服务")# === 1. 配置跨域 (CORS) ===# 必须配置,否则油猴脚本跨域请求会被拦截app.add_middleware(CORSMiddleware,allow_origins=["*"],# 允许所有来源allow_credentials=True,allow_methods=["*"],allow_headers=["*"],)# === 2. 定义数据模型 (Dict结构) ===# 对应油猴脚本发送的单条数据结构: { "username": "xxx", "content": "xxx" }classCommentSchema(BaseModel):username:strcontent:strts:Optional[int]=None# 接收时间戳(可选)# === 3. 接收接口 ===@app.post("/api/receive_comments")asyncdefreceive_comments(comments:List[CommentSchema]):""" 接收评论列表,FastAPI 会自动将 JSON 解析为对象列表 """now=datetime.now().strftime("%H:%M:%S")ifnotcomments:return{"status":"empty","count":0}print(f"\n[{now}] 收到{len(comments)}条新弹幕:")# 遍历打印,这里已经自动解析为对象了foritemincomments:# 这里实现了你要的“分开处理用户名和内容”print(f" 用户: [{item.username}] 说:{item.content}")return{"status":"success","received_count":len(comments),"timestamp":now}# === 4. 启动入口 ===if__name__=="__main__":# 端口设置为 5000,与脚本对应uvicorn.run(app,host="192.168.2.114",port=8000)

油候脚本

//==UserScript==//@name 抖音直播弹幕采集(Class定位修复版)//@namespace http://tampermonkey.net///@version5.0//@description 使用CSS Class精准定位用户名和内容,彻底修复用户名为空的问题//@author You//@match https://live.douyin.com/*//@grant GM_xmlhttpRequest//@connect*//==/UserScript==(function(){'use strict';//===配置区域===//确保这里的 IP 和端口与你的 Python 服务端一致 const API_URL="http://192.168.2.114:8000/api/receive_comments";//抖音弹幕容器的class(最外层)const CONTAINER_SELECTOR='.NkS2Invn';//===关键修改:根据 HTML 源码提取的精准 Class===//用户名所在的 spanclassconstUSER_NAME_SELECTOR='.v8LY0gZF';//评论内容所在的 spanclassconstCONTENT_SELECTOR='.cL385mHb';//去重缓存池 const dedupCache=new Map();console.log(`%c[系统]采集脚本启动(Class定位模式)...`,"color: green; font-weight: bold");setInterval(()=>{const batchData=[];const now=Date.now();//1.获取所有弹幕行(使用 querySelectorAll 更快)let messageDivs=document.querySelectorAll(CONTAINER_SELECTOR);//2.遍历处理 messageDivs.forEach(div=>{//DOM级去重:如果该行已经发送过,直接跳过if(div.getAttribute('data-sent'))return;try{//===核心修复逻辑===//直接通过class查找用户名和内容,不再依赖位置顺序 let nameEl=div.querySelector(USER_NAME_SELECTOR);let contentEl=div.querySelector(CONTENT_SELECTOR);if(nameEl&&contentEl){let uName=nameEl.innerText.trim();let uContent=contentEl.innerText.trim();//===数据清洗===//1.去除用户名末尾的中文冒号":"或英文冒号":"uName=uName.replace(/[:]$/,'').trim();//2.过滤掉无意义的空数据if(!uName||!uContent)return;//===去重逻辑===let key=uName+"|"+uContent;//检查缓存(30秒内重复则跳过)if(dedupCache.has(key)&&(now-dedupCache.get(key)<30000)){div.setAttribute('data-sent','true');return;}//===加入发送队列===batchData.push({"username":uName,"content":uContent,"ts":now});//更新缓存 dedupCache.set(key,now);div.setAttribute('data-sent','true');}}catch(e){console.error("解析错误:",e);}});//3.发送数据if(batchData.length>0){console.log(`%c[发送]推送 ${batchData.length}条数据`,"color: blue",batchData);GM_xmlhttpRequest({method:"POST",url:API_URL,headers:{"Content-Type":"application/json"},data:JSON.stringify(batchData),onload:(res)=>{if(res.status!==200){console.log("%c[失败] 状态码: "+res.status,"color: red");}},onerror:(err)=>{console.log("%c[网络错误] 连接被拒绝","color: red",err);}});}//定期清理过期的去重缓存for(let[k,t]of dedupCache){if(now-t>35000)dedupCache.delete(k);}},3000);//3秒轮询一次})();

本程序仅供学习参考,不涉及任何版权问题,不对任何平台构成侵权

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:08:51

别再花冤枉钱!这2个免费降AI率的工具,降AI效果也很好!

2个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/4/16 11:10:25

太香了!每天5次aigc查重和2个免费降AI工具,毕业生一定要知道!

2个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/4/16 13:55:12

基于java的SpringBoot/SSM+Vue+uniapp的课程目标达成度系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/4/16 14:40:42

大数据领域Kafka与Hadoop的协同工作模式

大数据领域Kafka与Hadoop的协同工作模式&#xff1a;从快递中转站到数据工厂的完美配合 关键词&#xff1a;Kafka、Hadoop、实时数据流、离线处理、数据管道、分布式系统、大数据协同 摘要&#xff1a;在大数据领域&#xff0c;Kafka与Hadoop是一对“黄金搭档”——前者像高效的…

作者头像 李华
网站建设 2026/4/16 14:06:17

一文吃透动态规划解题思路——以钢条切割问题为例

动态规划&#xff08;Dynamic Programming&#xff0c;简称 DP&#xff09;是算法领域的核心思想之一&#xff0c;广泛应用于解决具有重叠子问题和最优子结构特性的优化问题。相比于暴力递归的高时间复杂度&#xff0c;动态规划通过记录子问题的解&#xff0c;避免重复计算&…

作者头像 李华