您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
偷来的,感谢小鸡甲THEUGLYLY
// ==UserScript== // @name 手掌文化 // @namespace http://tampermonkey.net/ // @version 1.1.5 // @description 偷来的,感谢小鸡甲THEUGLYLY // @author Reesedog // @match https://www.douyu.com/10639765* // @match https://www.douyu.com/topic/qhjx?rid=10639765* // @match https://www.douyu.com/6558897* // @match https://www.douyu.com/topic/qhjx?rid=6558897* // @match https://www.douyu.com/6770423* // @match https://www.douyu.com/topic/lolnewyear?rid=6770423* // @match https://www.douyu.com/316022* // @match https://www.douyu.com/topic/lolnewyear?rid=316022* // @match https://www.douyu.com/5556* // @grant none // @license MIT // ==/UserScript== (function () { "use strict"; // 弹幕模板部分 ============================================================================================================== // 定义弹幕模板 const templates = [ "你TM再🐕叫一句?老子一拳捣死你🤜🤡。你TM再🐕叫一句?老子一拳捣死你🤜🤡", "给主播拍张照📷:正面照(🤡),平面图(🃏),局部特写(🔴)", "善🐟结善⭕️ 🐊伤人❤️,愿大家都心存善良,不要对一个明显有智力问题的人恶语相向", "🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水🚽冲水", "🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵🤡🫵", "🍚🥢🐷哼哧哼哧🍚🥢🐷哼哧哼哧🍚🥢🐷哼哧哼哧🍚🥢🐷哼哧哼哧", "别╰🤡╮慌 别╰🤡╮慌 别╰🤡╮慌 别╰🤡╮慌 别╰🤡╮慌 别╰🤡╮慌", "常年看艾琳bigbaby的直播,会目光呆滞,极度自卑,智力低下,最后完全沦为艾琳。", "😎这才叫音乐!😁👍🏻爽!😎这才叫音乐!😁👍🏻爽!😎这才叫音乐!😁👍🏻爽!😎", "😎这才叫中单!😁👍🏻爽!😎这才叫中单!😁👍🏻爽!😎这才叫中单!😁👍🏻爽!😎", "在我心里委屈巴巴就是华语乐坛的半壁江山!什么?你问另一半是谁?《艾琳bigbaby》", "【队友】LGM.GXG[烈焰杀神!]:移形换位(1级)➡已就绪。", "《本直播间只能消费艾琳》《右手也行》《带果神节奏的下次注意》《哎呦bot呆》《塔宝怎么又输啦》", "🤡偷着乐吧🤡顶级小丑艺术家🤡CDC AKA 琳子NMB🤡免费给你们耍杂技🤡再别说了好吧🤡", "《指出我的问题》《我有什么问题》《你哪来这么多问题》《指nm给你脸了》", "艾琳:妈妈让我烧水,我从来都是烧到99°C。果神:为啥?艾琳:因为我家里不能有两个沸物。", "我认为受教育的目的是有正确的三观尊重他人不对陌生人评头论足,不过话说回来这主播真像头猪", "真喜欢这里的氛围,胡言乱语的水友,自说自话的主播,像极了我以前住的精神病院", "主播做好自己就OK了,不用管他人的闲言碎语,他们骂你,你就当他们骂的是🐕", "塔利亚:谁来看看我钓的鱼,艾琳:谁在打我们的船,呆妹:船要沉了,果神:她们好吵", "满屏的都是谩骂和嘲讽,对着我深爱的🐷我只能握紧👊🏻。为什么+1还在CD", "🤔💡=🤡! 🤔💡=🤡! 🤔💡=🤡! 🤔💡=🤡!", "⚡😎享受⚡😎⚡😎享受⚡😎⚡😎享受⚡😎⚡😎享受⚡😎⚡😎享受⚡😎⚡", "好🥬,看得好爽😋!好🥬,看得好爽🥳!好🥬,看得好爽😋!", // 根据需要添加更多模板 // todo: "(emoji+词语)x5", ]; const cosplayGroups = { "手掌文化": ["右手supking", "塔莉娅QAQ", "果小果是个弟弟", "艾琳bigbaby"], "女同雷达": ["呆妹小霸王", "叶知秋Vanessa", "A妹A妹", "小羊吃什么", "妮可老师", "小甜甜Fairy", "野生小谭"], "Bot门": ["黄翔Longdd", "格格酱呀丶", "野生小憨憨"], "仇人": ["三酒OuO", "南枫阿i"], "老逼们": ["yyfyyf1234", "叫我老陈就好了", "谢彬DD", "zhou陈尧"], }; // 创建浮动窗口 let floatWindow = document.createElement("div"); floatWindow.style.display = "flex"; floatWindow.style.position = "fixed"; floatWindow.style.top = "30%"; floatWindow.style.right = "0"; floatWindow.style.transform = "translateY(-50%)"; floatWindow.style.backgroundColor = "white"; floatWindow.style.border = "1px solid black"; floatWindow.style.padding = "10px"; floatWindow.style.zIndex = "10000"; floatWindow.style.flexDirection = "column"; // 添加这一行来使元素竖向排列 document.body.appendChild(floatWindow); // 创建模板下拉菜单 let templateMenu = document.createElement("select"); templateMenu.style.width = "323px"; // 添加模板占位符选项 let placeholderOption = document.createElement("option"); placeholderOption.value = ""; placeholderOption.textContent = "弹幕模板"; placeholderOption.disabled = true; placeholderOption.selected = true; templateMenu.appendChild(placeholderOption); // 添加模板选项 templates.forEach((template) => { let option = document.createElement("option"); option.value = template; option.textContent = template; templateMenu.appendChild(option); }); // 创建cosplay下拉菜单 let cosplay = document.createElement("select"); cosplay.style.width = "323px"; // 添加cosplay占位符选项 let cosplayPlaceHolder = document.createElement("option"); cosplayPlaceHolder.value = ""; cosplayPlaceHolder.textContent = "cosplay"; cosplayPlaceHolder.disabled = true; cosplayPlaceHolder.selected = true; cosplay.appendChild(cosplayPlaceHolder); // 添加分组和选项 for (let group in cosplayGroups) { let optgroup = document.createElement("optgroup"); optgroup.label = group; cosplayGroups[group].forEach((username) => { let option = document.createElement("option"); option.value = username; option.textContent = username; optgroup.appendChild(option); }); cosplay.appendChild(optgroup); } // contentContainer.appendChild(cosplay); // contentContainer.appendChild(templateMenu); // 创建输入框 let inputField = document.createElement("textarea"); inputField.rows = 4; inputField.cols = 70; inputField.style.width = "200px"; // inputField.style.marginLeft = "10px"; // contentContainer.appendChild(inputField); // 创建发送按钮 let sendButton = document.createElement("button"); sendButton.textContent = "发送"; sendButton.style.marginLeft = "10px"; sendButton.style.paddingLeft = "10px"; sendButton.style.paddingRight = "10px"; sendButton.style.border = "1px solid black"; // contentContainer.appendChild(sendButton); // 创建折叠/展开按钮 let toggleButton = document.createElement("button"); toggleButton.textContent = "🤡"; toggleButton.style.backgroundColor = "orange"; toggleButton.style.border = "none"; toggleButton.style.color = "white"; toggleButton.style.fontSize = "16px"; toggleButton.style.padding = "0px 10px 5px 10px"; toggleButton.style.cursor = "pointer"; toggleButton.style.marginLeft = "10px"; floatWindow.appendChild(toggleButton); // 定义发送弹幕的函数 function sendDanmu(content) { let textarea = document.querySelector("textarea.ChatSend-txt"); if (textarea) { textarea.value = content; textarea.focus(); let sendButton = document.querySelector(".ChatSend-button"); if (sendButton) { sendButton.click(); // 点击发送按钮提交弹幕 } } } // 发送按钮点击事件 sendButton.onclick = function () { if(cosplay.value!=""){ sendDanmu("@" + cosplay.value + ":" + inputField.value); }else{ sendDanmu(inputField.value); } }; sendButton.addEventListener("click", function() { window.scrollTo(0, 0); // 滚动到页面顶部 }); // 下拉菜单变更事件 templateMenu.onchange = function () { inputField.value = templateMenu.value; }; // 折叠/展开按钮点击事件 toggleButton.onclick = function () { if (contentContainer.style.display === "none") { contentContainer.style.display = "block"; toggleButton.textContent = "×"; } else { contentContainer.style.display = "none"; toggleButton.textContent = "🤡"; } }; // 创建浮窗容器 let contentContainer = document.createElement("div"); contentContainer.style.paddingTop = "5px"; contentContainer.style.display = "none"; floatWindow.appendChild(contentContainer); // 创建表格 let table = document.createElement("table"); contentContainer.appendChild(table); // 创建第一行:Cosplay下拉菜单 let row1 = document.createElement("tr"); let cell1_1 = document.createElement("td"); cell1_1.textContent = "Cosplay:"; row1.appendChild(cell1_1); let cell1_2 = document.createElement("td"); cell1_2.appendChild(cosplay); row1.appendChild(cell1_2); table.appendChild(row1); // 创建第二行:弹幕模板下拉菜单 let row2 = document.createElement("tr"); let cell2_1 = document.createElement("td"); cell2_1.textContent = "弹幕模板:"; row2.appendChild(cell2_1); let cell2_2 = document.createElement("td"); cell2_2.appendChild(templateMenu); row2.appendChild(cell2_2); table.appendChild(row2); // 创建第三行:输入框和发送按钮 let row3 = document.createElement("tr"); let cell3_1 = document.createElement("td"); cell3_1.textContent = "输入弹幕:"; row3.appendChild(cell3_1); let cell3_2 = document.createElement("td"); cell3_2.style.display = "flex"; cell3_2.appendChild(inputField); inputField.style.marginRight = "10px"; cell3_2.appendChild(sendButton); row3.appendChild(cell3_2); table.appendChild(row3); // 拖动逻辑 let isDragging = false; let mouseDownX, mouseDownY, initX, initY; let mouse_throttle_flag = false; let mouse_throttle; floatWindow.onmousedown = function (e) { if (contentContainer.style.display === "none") { // 如果窗口是折叠状态,允许拖动 isDragging = true; mouseDownX = e.pageX; mouseDownY = e.pageY; initX = floatWindow.offsetLeft; initY = floatWindow.offsetTop; // 禁止文本选择 document.body.style.userSelect = "none"; document.addEventListener("mousemove", onMouseMove); document.addEventListener("mouseup", onMouseUp); } }; function onMouseMove(e) { if (isDragging) { if (!mouse_throttle_flag) { mouse_throttle_flag = true; mouse_throttle = setTimeout(() => { mouse_throttle_flag = false; let mouseMoveX = e.pageX, mouseMoveY = e.pageY; floatWindow.style.right = window.innerWidth - mouseMoveX + mouseDownX - initX - 70 + "px"; floatWindow.style.top = mouseMoveY - mouseDownY + initY + "px"; floatWindow.style.transform = "none"; }, 5); } } } function onMouseUp() { isDragging = false; // 恢复文本选择 document.body.style.userSelect = ""; document.removeEventListener("mousemove", onMouseMove); document.removeEventListener("mouseup", onMouseUp); } // +1 部分 ============================================================================================================== function addButtonToContainer() { // 查找按钮容器 let container = document.querySelector(".btnscontainer-4e2ed0"); if (!container) return; // 检查容器中是否已经存在 +1 按钮 if (container.querySelector(".plus-one-button")) return; // 创建一个分隔符 let separator = document.createElement("p"); separator.className = "sugun-e3fbf6"; separator.textContent = "|"; container.appendChild(separator); // 以与现有按钮相同的样式创建 +1 按钮 let button = document.createElement("div"); button.className = "labelfisrt-407af4 plus-one-button"; // 为 +1 按钮添加一个特定的类名 button.textContent = "+1"; container.appendChild(button); // 为 +1 按钮设置点击事件 button.onclick = function () { let textContent = hoveredElement.querySelector(".text-edf4e7").textContent; sendDanmu(textContent); }; button.addEventListener("click", function() { window.scrollTo(0, 0); // 滚动到页面顶部 }); } let hoveredElement = null; // 当鼠标悬停在具有特定类的元素上时,显示 +1 按钮 document.addEventListener("mouseover", function (event) { // 检查容器中是否已经存在 +1 按钮,防止hoverElement不一致 let container = document.querySelector(".btnscontainer-4e2ed0"); if (!container) return; if (container.querySelector(".plus-one-button")) return; if (event.target.classList.contains("danmuItem-f8e204")) { hoveredElement = event.target; addButtonToContainer(); } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址