有趣

用来玩的。YouTube显示赞踩百分比、去除自动翻译页面的无关语言。qqe2站长傻逼,祝早日倒闭。

  1. // ==UserScript==
  2. // @name for fun
  3. // @name:zh-CN 有趣
  4. // @namespace https://gf.qytechs.cn/users/159546
  5. // @version 1.0.2
  6. // @description fun
  7. // @description:zh-CN 用来玩的。YouTube显示赞踩百分比、去除自动翻译页面的无关语言。qqe2站长傻逼,祝早日倒闭。
  8. // @author LEORChn
  9. // @include *://www.youtube.com/watch?*
  10. // @include *://qqe2.com/
  11. // @include *://www.qqe2.com/
  12. // @run-at document-start
  13. // @grant none
  14. // ==/UserScript==
  15. var ID_DIV_YOUTUBE_REVIEW_PERCENT = 'youtubereviewpercent',
  16. ID_SCRIPT_QQE2_MESSAGE_OVERRIDE = 'qqe2messageoverride';
  17. var inited=false, isDaemon=false;
  18. (function(){
  19. recheck();
  20. })();
  21. function recheck(){
  22. init();
  23. if(!isDaemon) daemon();
  24. if(load())return;
  25. setTimeout(recheck,100);
  26. }
  27. function init(){ // call once when start loading page
  28. if(inited) return;
  29. if(ft('body').length==0) return;
  30. // write code here
  31. inited=true;
  32. }
  33. function load(){ // call once when loaded page
  34. if(document.readyState.toLowerCase()=='complete'){
  35. // write code here
  36. return true;
  37. }
  38. }
  39. function daemon(){
  40. isDaemon=true;
  41. addYoutubeReviewPercent();
  42. removeYoutubeUnrelatedSubtitle();
  43. addJsonEditorMessageOverride();
  44. setTimeout(daemon,1000);
  45. }
  46. //----- YouTube
  47. function addYoutubeReviewPercent(){
  48. if(fv(ID_DIV_YOUTUBE_REVIEW_PERCENT)) return;
  49. var core = fv('watch8-sentiment-actions');
  50. if(!core) return;
  51. var inject = fv('watch7-views-info').nextElementSibling;
  52. var info = core.innerText.replace(/[\r\n,]/g,'').split(/\s+/);
  53. var viewmode = info.length==3;
  54. if(viewmode) for(var i=3;i>=0;i--) info[i]=info[i-1] || 0;
  55. var view = parseInt(info[0]), like = parseInt(info[2]), dislike = parseInt(info[3]);
  56. var newdiv = ct('span');
  57. newdiv.id = ID_DIV_YOUTUBE_REVIEW_PERCENT;
  58. newdiv.style.cssText = 'float:left;text-align:right';
  59. viewmode = viewmode? (like + dislike + ' 位'): (((like + dislike) * 100 / Math.max(view, 1)).toFixed(2) + ' % 的');
  60. newdiv.innerHTML = '%s观众参与点评<br/>'.replace('%s', viewmode) + (like * 100 / Math.max(like+dislike, 1)).toFixed(2)+' % 的好评率 ';
  61. inject.parentNode.appendChild(newdiv);
  62. }
  63. function removeYoutubeUnrelatedSubtitle(){
  64. var titleDiv = $('.ytp-panel-title');
  65. if(titleDiv && (titleDiv.innerText=='自动翻译' || titleDiv.innerText=='字幕')); else return;
  66. /** -={ 第一页面 选项保护 }=-
  67. * 自动播放:【自动】
  68. * 注释: 【注释】
  69. * 速度: 【速度】
  70. * 字幕: 【关闭】【各种语言】
  71. * 画质: 【画质】【自动】
  72. *
  73. ** -={ 已有字幕 选项保护 }=-
  74. * 关闭: 【关闭】
  75. * 英语: 【英语】
  76. * 中文(简体):【中文】
  77. * 中文(台湾):【中文】
  78. * 自动翻译: 【自动】
  79. * 添加字幕: 【添加】
  80. *
  81. ** -={ 自动翻译 选项保护 }=-
  82. * 英语: 【英语】
  83. * 中文(简体):【中文】
  84. * 中文(台湾):【中文】
  85. */
  86. var protectedLangs = ['英语', '中文', '关闭', '自动', '添加', '速度', '注释', '画质'];
  87. var langs = $$('.ytp-menuitem');
  88. nextElement:for(var i=langs.length-1; i>=0; i--){
  89. if(langs[i]){
  90. for(var i2=0; i2<protectedLangs.length; i2++) if(langs[i].innerText.includes(protectedLangs[i2])) continue nextElement;
  91. langs[i].remove();
  92. }
  93. }
  94. }
  95. //----- qqe2
  96. function addJsonEditorMessageOverride(){
  97. if(fv(ID_SCRIPT_QQE2_MESSAGE_OVERRIDE)) return;
  98. var core = fv('toTree');
  99. if(!core || core.nodeName != 'BUTTON') return;
  100. core.style.marginTop='200px'; // 傻逼站长真的把按钮往上挪了! 祝早日倒闭
  101. var inject=ct('script');
  102. inject.id=ID_SCRIPT_QQE2_MESSAGE_OVERRIDE;
  103. inject.innerText="setTimeout(regToTreeMouseDownEvent,1000);"+
  104. "function regToTreeMouseDownEvent(){var d=document.getElementById('toTree');if(d)d.addEventListener('mousedown', refreshJsonEditorMessages);else setTimeout(regToTreeMouseDownEvent,1000);}"+
  105. "function refreshJsonEditorMessages(){var d=document.querySelectorAll('body>div[style]:not([id])');if(d.length>0)d[0].innerHTML='';}";
  106. document.body.appendChild(inject);
  107. }
  108. //----- my ezjs lib
  109. function fv(id){return document.getElementById(id);}
  110. function ft(tag){return document.getElementsByTagName(tag);}
  111. function fc(cname){return document.getElementsByClassName(cname);}
  112. function $(s){return document.querySelector(s);}
  113. function $$(s){return document.querySelectorAll(s);}
  114. function ct(tag){return document.createElement(tag);}
  115. function msgbox(msg){alert(msg);}
  116. function inputbox(title,defalt){return prompt(title,defalt);}
  117. function pl(s){console.log(s);}

QingJ © 2025

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