🏠 返回首頁 

Greasy Fork is available in English.

跳过b站充电鸣谢

隐藏b站充电鸣谢,并且在视频结束时自动跳过。加入渐变,防止结束时闪屏

  1. // ==UserScript==
  2. // @name 跳过b站充电鸣谢
  3. // @namespace voeoc
  4. // @version 1.2
  5. // @description 隐藏b站充电鸣谢,并且在视频结束时自动跳过。加入渐变,防止结束时闪屏
  6. // @author voeoc
  7. // @match https://www.bilibili.com/video/*
  8. // @icon https://www.bilibili.com/favicon.ico
  9. // @grant GM_addStyle
  10. // @run-at document-idle
  11. // @license MIT License
  12. // ==/UserScript==
  13. (function () {
  14. 'use strict';
  15. // 防止闪屏
  16. // @ts-ignore
  17. GM_addStyle(`
  18. .bilibili-player-electric-panel,
  19. .bpx-player-electric-panel {
  20. visibility: hidden;
  21. }
  22. .bilibili-player-ending-panel,
  23. .bpx-player-ending-panel {
  24. opacity: 0;
  25. transition: opacity 0.3s ease;
  26. }
  27. .bilibili-player-ending-panel.visible,
  28. .bpx-player-ending-panel.visible {
  29. opacity: 1;
  30. }`);
  31. function waitElementLoaded(selector, func, millisecond) {
  32. const TIME_OUT = 100; // 找100次没有找到就放弃
  33. let findTimeNum = 0; // 记录查找的次数
  34. let timer = setInterval(() => {
  35. let element = document.querySelector(selector);
  36. if (element != null) {
  37. // 清除定时器
  38. clearInterval(timer);
  39. func(element);
  40. } else {
  41. findTimeNum++;
  42. if (TIME_OUT < findTimeNum) {
  43. // 清除定时器
  44. clearInterval(timer);
  45. }
  46. }
  47. }, millisecond);
  48. }
  49. waitElementLoaded(".bilibili-player-video, .bpx-player-video-wrap", (videoObjParent) => {
  50. let electricPanelSelector = ".bilibili-player-electric-panel";
  51. let endingPanelSelector = ".bilibili-player-ending-panel";
  52. let jumpBtnSelector = ".bilibili-player-electric-panel-jump-content";
  53. if (videoObjParent.classList.contains("bpx-player-video-wrap")) { // 兼容新版页面
  54. electricPanelSelector = ".bpx-player-electric-panel";
  55. endingPanelSelector = ".bpx-player-ending-panel";
  56. jumpBtnSelector = ".bpx-player-electric-jump";
  57. }
  58. let videoObj = videoObjParent.querySelector("video");
  59. if (!videoObj) {
  60. videoObj = videoObjParent.querySelector("bwp-video");
  61. }
  62. videoObj.addEventListener('play', function () {
  63. try {
  64. // @ts-ignore
  65. document.querySelector(endingPanelSelector).classList.remove("visible");
  66. } catch (e) { console.error(e);}
  67. }, false);
  68. videoObj.addEventListener('ended', function () {
  69. // 渐变显示结束屏
  70. waitElementLoaded(endingPanelSelector, (endingPanel) => {
  71. endingPanel.classList.add("visible");
  72. }, 100)
  73. waitElementLoaded(electricPanelSelector, (electricPanel) => {
  74. if (electricPanel.style.display != 'none') {
  75. // 自动点击跳过按钮
  76. electricPanel.querySelector(jumpBtnSelector).click();
  77. }
  78. }, 1)
  79. }, false);
  80. }, 200)
  81. })();