BDWM PLUS

BDWM_PLUS by motaguoke

  1. // ==UserScript==
  2. // @name BDWM PLUS
  3. // @version 1.3
  4. // @description BDWM_PLUS by motaguoke
  5. // @include http://bbs.pku.edu.cn/*
  6. // @include https://bbs.pku.edu.cn/*
  7. // @include https://*.bdwm.net/*
  8. // @include http://*.bdwm.net/*
  9. // @grant GM.getValue
  10. // @grant GM.setValue
  11. // @namespace https://gf.qytechs.cn/users/284856
  12. // ==/UserScript==
  13. //设置
  14. var GLOBAL_VERSION = "1.3"
  15.  
  16. //全局变量
  17. var GLOBAL_SEEME_STATUS = false //当前只看某一作者状态
  18. var GLOBAL_SEEME_AUTHOR = "" //当前只看某一作者的作者ID
  19.  
  20. console.log(`BDWM_PLUS by motaguoke Version: ${GLOBAL_VERSION}`)
  21. window.onload = BDWM_ADDON_MAIN()
  22.  
  23.  
  24. async function BDWM_ADDON_MAIN(){
  25. //初始化插件
  26. var observe = new MutationObserver(async function (mutations){
  27. //初始化渲染插件
  28. BDWM_ADDON_SEEME_RENDER() //只看作者插件
  29. BDWM_ADDON_SETTINGINFO() //插件信息插件
  30. bool_GODMODE = await GM.getValue("启用娱乐模式",false)
  31. if (bool_GODMODE == true){ //娱乐模式
  32. BDWM_ADDON_GODMODE()
  33. }
  34. })
  35. observe.observe(document.documentElement,{childList:true,subtree:true})
  36. }
  37.  
  38.  
  39. document.addEventListener('click',async function(event){
  40. //点击事件钩子
  41. //console.log(event.target.className+" "+event.target.id)
  42.  
  43. if (event.target.className == "only-seeme"){ // BDWM_ADDON_SEEME插件,只看某一作者
  44. if (event.target.innerText == "只看TA"){
  45. //进入只看作者状态
  46. event.target.innerText = "取消只看TA"
  47. GLOBAL_SEEME_AUTHOR = event.target.id
  48. GLOBAL_SEEME_STATUS = true
  49.  
  50. obj_onlyseeme = document.getElementsByClassName("only-seeme")
  51. for (i=0;i<obj_onlyseeme.length;i++){
  52. obj_onlyseeme[i].innerText = "取消只看TA"
  53. }
  54.  
  55. } else {
  56. //退出只看作者状态
  57. event.target.innerText = "只看TA"
  58. GLOBAL_SEEME_AUTHOR = ""
  59. GLOBAL_SEEME_STATUS = false
  60.  
  61. obj_onlyseeme = document.getElementsByClassName("only-seeme")
  62. for (i=0;i<obj_onlyseeme.length;i++){
  63. obj_onlyseeme[i].innerText = "只看TA"
  64. }
  65. }
  66. BDWM_ADDON_SEEME_RENDER() //点击后立刻重新渲染
  67. }else{
  68. if (event.target.id == "settings_GODMODE"){
  69. //娱乐模式选项
  70. bool_GODMODE = await GM.getValue("启用娱乐模式",false)
  71. console.log(bool_GODMODE)
  72. console.log(!bool_GODMODE)
  73. await GM.setValue("启用娱乐模式",!bool_GODMODE)
  74. if (!bool_GODMODE == true){
  75. BDWM_ADDON_GODMODE() //点击开始后立刻重新渲染
  76. }
  77. }
  78.  
  79. }
  80.  
  81. },true);
  82.  
  83.  
  84.  
  85. async function BDWM_ADDON_SEEME_RENDER(){
  86.  
  87. if (window.location.href.indexOf("post-read.php")<0){
  88. //当切换到非读贴内容时,立刻重新刷新状态,避免上次查看主楼的延续
  89. GLOBAL_SEEME_AUTHOR = ""
  90. GLOBAL_SEEME_STATUS = false
  91. }
  92.  
  93. obj_found = document.getElementsByClassName("only-seeme")
  94. if (obj_found.length==0){ //本页面第一次加载时,给每个帖子加按钮
  95. obj_functions = document.getElementsByClassName("functions")
  96.  
  97. for (i = 0;i < obj_functions.length; i++){
  98. obj_widebtn = obj_functions[i].getElementsByClassName("line wide-btn")[0]
  99. obj_newobj = document.createElement("a")
  100. obj_newobj.className = "only-seeme"
  101. if (GLOBAL_SEEME_STATUS == false){
  102. obj_newobj.innerText = "只看TA"} else
  103. {obj_newobj.innerText = "取消只看TA"}
  104.  
  105. if (obj_widebtn){
  106. //存在关注按钮,在关注按钮旁边添加即可
  107. str_username = obj_widebtn.getElementsByClassName("add-friend")[0].getAttribute("data-username")
  108. obj_newobj.id = str_username
  109. obj_widebtn.appendChild(obj_newobj)
  110. } else {
  111. //不存在关注按钮,需要首先获取的user-name,再新建一个widebtn类插入
  112. //得到username
  113. str_username = obj_functions[i].parentNode.getElementsByClassName("username")[0].getElementsByTagName("a")[0].innerText
  114. obj_newobj.id = str_username
  115. //插入widebtn
  116. obj_widebtn = document.createElement("div")
  117. obj_widebtn.className = "line wide-btn"
  118. obj_functions[i].appendChild(obj_widebtn)
  119. //重新获得插入的widebtn DOM
  120. obj_functions[i].lastChild.appendChild(obj_newobj)
  121.  
  122. }
  123.  
  124.  
  125. }
  126. }
  127.  
  128. if (GLOBAL_SEEME_STATUS==true){
  129. //只看作者状态
  130. obj_postcard = document.getElementsByClassName("post-card")
  131. for (i = 0;i < obj_postcard.length; i++){
  132. str_username = obj_postcard[i].getElementsByClassName("username")[0].getElementsByTagName("a")[0].innerText //关注后“关注”按钮将被隐藏
  133. if (str_username!=GLOBAL_SEEME_AUTHOR){
  134. obj_postcard[i].style.display = "none"
  135. }else{
  136. obj_postcard[i].style.display = "block"
  137. }
  138. }
  139.  
  140. }else{
  141. //非只看作者状态
  142. obj_postcard = document.getElementsByClassName("post-card")
  143. for (i = 0;i< obj_postcard.length; i++){
  144. obj_postcard[i].style.display = "block"
  145. }
  146. }
  147.  
  148. }
  149.  
  150.  
  151.  
  152.  
  153. async function BDWM_ADDON_SETTINGINFO(){
  154. //增加插件信息
  155. obj_footer = document.getElementById("footer")
  156. if (document.getElementById("footer").innerHTML.indexOf("BDWM_PLUS")<0) {
  157. obj_newobj = document.createElement("a")
  158. obj_newobj.style.color = "blue"
  159. obj_newobj.innerText = `BDWM_PLUS 版本 ${GLOBAL_VERSION} 作者 motaguoke 点击查看更新`
  160. obj_newobj.href = "https://gf.qytechs.cn/zh-CN/scripts/381264-bdwm-plus"
  161. obj_newobj.target = "_blank"
  162. obj_footer.appendChild(obj_newobj)
  163.  
  164. obj_footer.appendChild(document.createElement("br"))
  165.  
  166. obj_newobj = document.createElement("input")
  167. obj_newobj.type = "checkbox"
  168. obj_newobj.id = "settings_GODMODE"
  169. obj_newobj.checked = await GM.getValue("启用娱乐模式",false)
  170. obj_footer.appendChild(obj_newobj)
  171. obj_newobj = document.createElement("span")
  172. obj_newobj.innerText = "启用娱乐模式"
  173. obj_footer.appendChild(obj_newobj)
  174. obj_footer.appendChild(document.createElement("br"))
  175.  
  176.  
  177. obj_newobj = document.createElement("a")
  178. obj_newobj.style.color = "blue"
  179. obj_newobj.innerText = `查看该脚本的github页面`
  180. obj_newobj.href = "https://github.com/wangjunyi2008/BDWM_PLUS"
  181. obj_newobj.target = "_blank"
  182.  
  183. obj_footer.appendChild(obj_newobj)
  184. }
  185. }
  186.  
  187. async function BDWM_ADDON_GODMODE(){
  188. //娱乐模式,让你变成大佬
  189. str_username = document.getElementsByClassName("user-list-trigger")[0].nextSibling.nextSibling.innerText
  190. lst_postowner = document.getElementsByClassName("post-owner")
  191. for (i=0;i<lst_postowner.length;i++){
  192. str_thisuser = lst_postowner[i].getElementsByClassName("username")[0].firstChild.innerText
  193. if (str_thisuser == str_username){
  194. //回帖名称匹配
  195. obj_port = lst_postowner[i].getElementsByClassName("portrait-container")[0]
  196. if (obj_port.getElementsByClassName("vip").length <= 0){ //如果没有被日过
  197. //给头像加大V
  198. obj_new = document.createElement("img")
  199. obj_new.className = "vip"
  200. obj_new.src = "images/user/verified-border-0.png"
  201.  
  202. obj_port.appendChild(obj_new)
  203.  
  204. //修改昵称
  205. lst_postowner[i].getElementsByClassName("nickname text-line-limit")[0].innerText = "本站站长"
  206. lst_postowner[i].getElementsByClassName("nickname text-line-limit")[0].style.color = "red"
  207. //修改等级和积分
  208. lst_postowner[i].getElementsByClassName("score")[0].innerText = "10.0"
  209. lst_postowner[i].getElementsByClassName("level")[0].innerText = "唯我独尊"
  210. //修改帖子数和原创分
  211. int_postnum = parseInt(lst_postowner[i].getElementsByClassName("label")[0].nextSibling.data)
  212. lst_postowner[i].getElementsByClassName("label")[0].nextSibling.data = String(int_postnum * 30)
  213.  
  214. int_postnum = parseInt(lst_postowner[i].getElementsByClassName("label")[1].nextSibling.data)
  215. lst_postowner[i].getElementsByClassName("label")[1].nextSibling.data = String((int_postnum + 1)* 99)
  216.  
  217. }
  218. }
  219. }
  220. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址