您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
steam隐藏黑名单评测
// ==UserScript== // @name Steam Hide Blacklist Comments // @namespace // @version 0.3.1 // @description steam隐藏黑名单评测 // @license MIT // @author lyzlyslyc // @match http*://store.steampowered.com/app/* // @match http*://steamcommunity.com/app/* // @enable true // @grant GM_getValue // @grant GM_setValue // @run-at document-end // ==/UserScript== //是否默认勾选隐藏评测 var checked = true; //默认的关键字或正则表达式(正则表达式使用/包围,例如/abc/) var default_blacklist=[ "我是傻逼", "口了", "明逼", "⣿⣿⣿⣿⣿⣿⣹⡋⠘⠷⣦⣀⣠⡶⠁⠈⠁⠄⣿⣿⣿⣿⣿⣿⣿", "需要中文", "产品已退款", /伞兵/ ]; var blacklist=[]; var blocked_comments_list = []; var isStore = true; var tMsg = 0; var isSteamClient = navigator.userAgent.search(/Valve Steam Client/)!=-1; (function(){ 'use strict'; //获取关键字 let str = GM_getValue("steam_blacklist",getBlacklistText(default_blacklist)); blacklist = parseBlacklist(str); //steam客户端 if(isSteamClient){ window.addEventListener("message",(e)=>{ try{ let data = JSON.parse(e.data); if(data.steam_blacklist!=null){ GM_setValue("steam_blacklist",data.steam_blacklist); console.log(data.steam_blacklist); e.source.postMessage(JSON.stringify({"steam_blacklist_feedback":true}),e.origin); alert("关键词同步成功"); window.close(); } else if(data.steam_blacklist_feedback!=null){ clearInterval(tMsg); } } catch(ex){ alert(ex); e.source.postMessage(JSON.stringify({"steam_blacklist_feedback":false}),e.origin); window.close(); console.log(ex); } }); } //设置对话框 let dlg_settings = document.createElement("div"); dlg_settings.className = "blacklist_hover"; dlg_settings.style = "width: 400px; height: 500px; position: fixed; margin-left: auto; left: 0px; right: 0px; margin-right: auto; top: 25%; background: rgb(27, 40, 56); border-radius: 25px; z-index: 999; text-align: center;"; dlg_settings.innerHTML= '<div style="position: relative;top: 2%;font-size: 18px;color: #4a86ad;">关键词列表(按行分隔)</div>'+ '<textarea type="text" id="blacklist_text" style="width: 90%;height: 80%;position: absolute;left: 4%;top: 8%;resize: none;background: #316282;color: #fffff1;font-family: Arial, Helvetica, sans-serif;border-radius: 3px;padding: 3px;font-size: 16px;" draggable="false"></textarea>'+ '<a class="btnv6_blue_hoverfade btn_medium" style="position: absolute;bottom: 1%;left: 8%;width: 24%;" id="save_blacklist"><span>保存</span></a>'+ '<a class="btnv6_blue_hoverfade btn_medium" style="position: absolute;bottom: 1%;left: 38%;width: 24%;" id="reset_blacklist"><span>默认</span></a>'+ '<a class="btnv6_blue_hoverfade btn_medium" style="position: absolute;bottom: 1%;right: 8%;width: 24%;" id="cancel_blacklist"><span>取消</span></a>'; document.body.appendChild(dlg_settings); document.querySelector(".blacklist_hover").style.display="none"; //取消按钮 document.querySelector("#cancel_blacklist").addEventListener("click",()=>{ document.querySelector(".blacklist_hover").style.display="none"; }); //保存按钮 document.querySelector("#save_blacklist").addEventListener("click",()=>{ try{ //更新黑名单 blacklist = parseBlacklist(document.getElementById("blacklist_text").value); //保存黑名单至本地 GM_setValue("steam_blacklist",document.getElementById("blacklist_text").value); //steam客户端 if(isSteamClient){ let baseUrl = ""; if(isStore)baseUrl = "https://steamcommunity.com"; else baseUrl = "https://store.steampowered.com"; baseUrl+=location.href.match(/\/app\/\d*/)[0]; let win = window.open(baseUrl); tMsg = setInterval(()=>{ if(!win.closed)win.postMessage(JSON.stringify({"steam_blacklist":document.getElementById("blacklist_text").value}),baseUrl); else clearInterval(tMsg); },1000); } //更新隐藏评论 blocked_comments_list = []; if(isStore){ let count = 0; document.querySelectorAll(".review_ctn .review_box").forEach((item)=>{ item.showComment(); if(checkForBlacklist(item,item))count++; }); document.getElementById("blacklist_comments_count").innerText=`(共${count}条)`; } else { document.querySelectorAll(".apphub_UserReviewCardContent").forEach((item)=>{ let parent = item.parentNode; parent.showComment(); checkForBlacklist(item,parent); }); } hideComments(); //关闭对话框 document.querySelector(".blacklist_hover").style.display="none"; } catch(ex){ alert(ex); } }); //重置按钮 document.querySelector("#reset_blacklist").addEventListener("click",()=>{ document.getElementById("blacklist_text").value = getBlacklistText(default_blacklist); }); //分页面初始化 if(location.href.search(/steampowered.com/)!=-1){ isStore = true; let check = document.createElement("input"); check.type="checkbox"; check.id="check_hide"; check.checked = checked; check.addEventListener("click", hideComments); let count = document.createElement("span"); count.id="blacklist_comments_count"; //打开设置对话框按钮 let a = document.createElement("a"); a.id="blacklist_settings"; a.innerText="设置关键词"; a.addEventListener("click", ()=>{ //获取关键字 let str = GM_getValue("steam_blacklist",getBlacklistText(default_blacklist)); blacklist = parseBlacklist(str); //显示文本 document.getElementById("blacklist_text").value=getBlacklistText(blacklist); document.querySelector(".blacklist_hover").style.display="block"; }); a.href = "javascript:void(0);"; let span = document.createElement("span"); span.className="hide_blacklist_comments"; span.appendChild(check); span.append("隐藏黑名单评论"); span.append(count); span.append(a); document.querySelector(".user_reviews_summary_bar").appendChild(span); initAppView(); //监控是否更新评论列表 var observer = new MutationObserver(function (mutations, observer) { mutations.forEach(function(mutation) { if(mutation.target.style.display!="none")return; initAppView(); }); }); //开始监控 observer.observe(document.querySelector("#Reviews_loading"),{"attributes":true}); } else{ isStore = false; let check = document.createElement("input"); check.type="checkbox"; check.id="check_hide"; check.checked = checked; check.addEventListener("click", hideComments); check.style = "vertical-align: top;"; //打开设置对话框按钮 let a = document.createElement("a"); a.id="blacklist_settings"; a.innerText="设置关键词"; a.addEventListener("click", ()=>{ //获取关键字 let str = GM_getValue("steam_blacklist",getBlacklistText(default_blacklist)); blacklist = parseBlacklist(str); //显示文本 document.getElementById("blacklist_text").value=getBlacklistText(blacklist); document.querySelector(".blacklist_hover").style.display="block"; }); a.href = "javascript:void(0);"; a.style="color: #67c1f5;"; let span = document.createElement("span"); span.className="hide_blacklist_comments"; span.style = "float: right;color: #ffffff;"; span.appendChild(check); span.append("隐藏黑名单评论"); span.append(a); document.querySelector(".apphub_sectionTabs > div").before(span); initCommunityView(); } })(); //商店页面 function initAppView(){ if(document.querySelector("#Reviews_loading").style.display!='none'){ setTimeout(initAppView,500); return; } //黑名单总数 let count = 0; blocked_comments_list = []; document.querySelectorAll(".review_ctn .review_box").forEach((item)=>{ //右侧小评测 if(item.classList.contains('short')){ //添加显示和隐藏函数 item.hideComment = function(){ this.querySelector(".shortcol").hidden = true; if(this.querySelector(".hide_comment")!=null)this.querySelector(".hide_comment").innerText = "展开评测"; }; item.showComment = function(){ this.querySelector(".shortcol").hidden = false; if(this.querySelector(".hide_comment")!=null)this.querySelector(".hide_comment").innerText = "折叠评测"; }; item.hasHidden = function(){ return item.querySelector(".shortcol").hidden; } //添加按钮 addFoldButton(item.querySelector(".short_header"),item); } //左侧大评测 else if(item.querySelector(".rightcol")!=null){ //添加显示和隐藏函数 item.hideComment = function(){ this.querySelector(".rightcol").hidden = true; if(this.querySelector(".hide_comment")!=null)this.querySelector(".hide_comment").innerText = "展开评测"; }; item.showComment = function(){ this.querySelector(".rightcol").hidden = false; if(this.querySelector(".hide_comment")!=null)this.querySelector(".hide_comment").innerText = "折叠评测"; }; item.hasHidden = function(){ return item.querySelector(".rightcol").hidden; } //添加按钮 addFoldButton(item.querySelector(".num_reviews"),item); } //检查是否加入黑名单 if(checkForBlacklist(item,item))count++; }); document.getElementById("blacklist_comments_count").innerText=`(共${count}条)`; hideComments(); } function initCommunityView(){ var observer = new MutationObserver(function (mutations, observer) { mutations.forEach(function(mutation) { if(mutation.type!="childList")return; mutation.addedNodes.forEach((node)=>{ if(!(/page\d+/).test(node.id))return; if(node.id=="page1")return; checkNewPage(node); hideComments(); }) }); }); //开始监控 observer.observe(document.querySelector("#AppHubCards"),{"childList":true}); checkNewPage(document.getElementById("page1")); hideComments(); } //点击隐藏按钮 function hideComments(){ if(document.getElementById("check_hide").checked){ blocked_comments_list.forEach((item)=>{ item.hideComment(); }); } else{ blocked_comments_list.forEach((item)=>{ item.showComment(); }); } } //添加折叠按钮 function addFoldButton(neighborDiv, targetDiv){ if(neighborDiv==null||targetDiv==null)return; if(targetDiv.querySelector(".hide_comment")!=null)return; let a = document.createElement("a"); a.style = "float: right;color: #66c0f4;"; a.href = "javascript:void(0);"; a.className = "hide_comment"; a.addEventListener("click",()=>{ if(targetDiv.hasHidden()){ targetDiv.showComment(); } else{ targetDiv.hideComment(); } }) if(targetDiv.hasHidden())a.innerText="展开评测"; else a.innerText="折叠评测"; neighborDiv.after(a); return a; } function checkNewPage(page){ //新页面,寻找所有测评文字块 if(page==null)return; page.querySelectorAll(".apphub_UserReviewCardContent").forEach((item)=>{ let commentString = item.querySelector(".apphub_CardTextContent").innerHTML.replace(/\t/g,"").replace(/\n/g,"").replace(/(<div[^>]*>[^<>]*<\/div>)|(<[^<]*>)/g,""); commentString = commentString.replace(/[^\u4e00-\u9fa5_a-zA-Z0-9]*/g,""); item.commentLength = commentString.length; //测评父节点 let parent = item.parentNode; //隐藏消息div if(parent.querySelector(".hidden_message")==null){ let div = document.createElement("div"); div.className = "hidden_message"; div.style = "text-align: center;color: yellow;font-size: 20px;transform: translateY(-200%);"; div.innerText = `测评已隐藏,共${item.commentLength}字`; div.hidden = true; parent.querySelector(".UserReviewCardContent_Footer").prepend(div); } parent.hideComment = function(){ this.querySelector(".apphub_UserReviewCardContent").hidden = true; this.querySelector(".hidden_message").hidden = false; }; parent.showComment = function(){ this.querySelector(".apphub_UserReviewCardContent").hidden = false; this.querySelector(".hidden_message").hidden = true; } //检查是否加入黑名单 checkForBlacklist(item,parent); }); } //黑名单列表转换为字符串 function getBlacklistText(blacklist){ let str=""; blacklist.forEach((item)=>{str+=item.toString()+"\n";}) return str; } //字符串转换为黑名单列表 function parseBlacklist(blacklistString){ let str_list = blacklistString.split("\n"); let obj_list = []; str_list.forEach((item)=>{ item = item.trim(); if(item=="")return; if(/^\/.*\/$/.test(item)){ obj_list.push(new RegExp(item.replace(/^\/(.*)\/$/,"$1"))); } else obj_list.push(item); }); return obj_list; } //检查是否加入黑名单 function checkForBlacklist(checkItem,pushItem){ for(let i=0;i<blacklist.length;i++){ if(checkItem.innerHTML.search(blacklist[i])!=-1){ blocked_comments_list.push(pushItem); return true; } } return false; }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址