巴哈貼標籤

這麼想貼標籤那就一次貼個夠

  1. // ==UserScript==
  2. // @name 巴哈貼標籤
  3. // @namespace https://home.gamer.com.tw/homeindex.php?owner=qwert535286
  4. // @version 0.0.7
  5. // @description 這麼想貼標籤那就一次貼個夠
  6. // @author You
  7. // @match https://forum.gamer.com.tw/C.php*
  8. // @match https://forum.gamer.com.tw/Co.php*
  9. // @icon https://www.google.com/s2/favicons?domain=gamer.com.tw
  10. // @grant GM_addStyle
  11. // @grant GM_setValue
  12. // @grant GM_getValue
  13. // @license MIT
  14. // ==/UserScript==
  15.  
  16. (async () => {
  17. const tags = await GM_getValue('__bahaHotTags', '')
  18. const accounts = await GM_getValue('__bahaHotAccs', '')
  19.  
  20. const styles = tags
  21. .split('\n')
  22. .map(line => line.split(','))
  23. .map(([tag, bg = '#009cac', color = '#fff']) => `.comment_hot-tag[aria-label="${tag}"] { background: ${bg}; color: ${color}; }`)
  24. .join('\n')
  25.  
  26. GM_addStyle(`
  27. ${styles}
  28.  
  29. .quicktool.__open-dialog { color: var(--quaternary-text); }
  30. .quicktool.__open-dialog:hover { color: var(--purewhite); }
  31. `)
  32.  
  33. function generate($target = document) {
  34. accounts
  35. .split('\n')
  36. .map(line => line.split(','))
  37. .forEach(([acc, ...tags]) =>
  38. $target
  39. .querySelectorAll(`.c-reply__item .reply-avatar[href="//home.gamer.com.tw/${acc}"] + .reply-content .reply-content__article`)
  40. .forEach($article => {
  41. $article
  42. .querySelectorAll('.comment_hot-tag')
  43. .forEach($tag => ($tag.innerText.trim() !== 'HOT' && $tag.remove()))
  44.  
  45. $article
  46. .querySelector('.comment_content')
  47. .insertAdjacentHTML('beforebegin', tags.map(t => `<span class="comment_hot-tag" aria-label="${t}">${t}</span>`).join('\n'))
  48. })
  49. )
  50. }
  51.  
  52. setTimeout(generate, 3000) // 等留言跟 HOT 載入完畢
  53.  
  54. document
  55. .querySelectorAll('.more-reply')
  56. .forEach($more => $more.addEventListener('click', ({ target }) => setTimeout(() => generate(target.closest('.c-post__footer')), 3000)))
  57.  
  58. document
  59. .querySelector('.baha_quicktool > .quicktool')
  60. .insertAdjacentHTML('beforebegin', '<div class="quicktool iconbtn __open-dialog">編輯<br>標籤</div>')
  61.  
  62. document.body.insertAdjacentHTML('beforeend', `
  63. <dialog id="bahaTagsConfig" class="dialogify">
  64. <div class="dialogify__content dialogify__autowidth">
  65. <div>
  66. <div class="dialogify__body">
  67. <h5 class="dialogify_title"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iJiN4NTcxNjsmI3g1QzY0O18xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEyIDEwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMiAxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxyZWN0IHk9IjEiIHN0eWxlPSJmaWxsOiM4RDhEOEQ7IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PHJlY3QgeT0iNyIgc3R5bGU9ImZpbGw6IzhEOEQ4RDsiIHdpZHRoPSIzIiBoZWlnaHQ9IjMiLz48cmVjdCB4PSIzIiB5PSI0IiBzdHlsZT0iZmlsbDojOEQ4RDhEOyIgd2lkdGg9IjMiIGhlaWdodD0iMyIvPjwvZz48L3N2Zz4=">輸入標籤</h5>
  68. <textarea class="form-control" name="__bahaHotTags" rows="5" cols="33" placeholder="標籤名稱,背景顏色,字體顏色(新標籤換下一行)">${tags}</textarea>
  69. <h5 class="dialogify_title" style="margin-top: 24px;"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iJiN4NTcxNjsmI3g1QzY0O18xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEyIDEwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMiAxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxyZWN0IHk9IjEiIHN0eWxlPSJmaWxsOiM4RDhEOEQ7IiB3aWR0aD0iMyIgaGVpZ2h0PSIzIi8+PHJlY3QgeT0iNyIgc3R5bGU9ImZpbGw6IzhEOEQ4RDsiIHdpZHRoPSIzIiBoZWlnaHQ9IjMiLz48cmVjdCB4PSIzIiB5PSI0IiBzdHlsZT0iZmlsbDojOEQ4RDhEOyIgd2lkdGg9IjMiIGhlaWdodD0iMyIvPjwvZz48L3N2Zz4=">輸入巴哈帳號及標籤名稱</h5>
  70. <textarea class="form-control" name="__bahaHotAccs" rows="5" cols="33" placeholder="巴哈帳號,標籤一,標籤二,....(新帳號換下一行)">${accounts}</textarea>
  71. </div>
  72. <div class="btn-box text-right">
  73. <span class="post__text-small float-left">按下確定後重新整理</span>
  74. <button type="button" class="btn btn-insert btn-primary __confirm">確定</button>
  75. </div>
  76. </div>
  77. </div>
  78. </dialog>
  79. `)
  80.  
  81. const $dialog = document.querySelector('#bahaTagsConfig')
  82.  
  83. document
  84. .querySelector('.quicktool.__open-dialog')
  85. .addEventListener('click', () => $dialog.showModal())
  86.  
  87. $dialog
  88. .querySelector('button')
  89. .addEventListener('click', () => {
  90. GM_setValue('__bahaHotTags', $dialog.querySelector('[name="__bahaHotTags"]').value)
  91. GM_setValue('__bahaHotAccs', $dialog.querySelector('[name="__bahaHotAccs"]').value)
  92. $dialog.close()
  93. })
  94. })()

QingJ © 2025

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