B站 自动播放 & 网页宽屏

Bilibili Autoplay & WideScreen

  1. // ==UserScript==
  2. // @name B站 自动播放 & 网页宽屏
  3. // @namespace https://greasyfork.org/users/91873
  4. // @version 1.0.0.3
  5. // @description Bilibili Autoplay & WideScreen
  6. // @author wujixian
  7. // @include http*://*bilibili.com/video/*
  8. // @include https*//*bilibili.com/bangumi/play/*
  9. // @grant none
  10. // @run-at document-end
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15. const SN = '[B站 自动播放 & 网页宽屏]' // script name
  16. console.log(SN, '油猴脚本开始')
  17.  
  18. // 监听页面跳转事件
  19. let _wr = function(type) {
  20. let orig = history[type + SN]
  21. return function() {
  22. let rv = orig.apply(this, arguments),
  23. e = new Event(type + SN)
  24. e.arguments = arguments
  25. window.dispatchEvent(e)
  26. return rv
  27. }
  28. }
  29. history.pushState = _wr('pushState')
  30. history.replaceState = _wr('replaceState')
  31.  
  32. let widescreen_and_autoplay = function() {
  33. let playing = 0
  34. let play_count_limit = 3
  35. let widescreen = false
  36. let main = setInterval(function() {
  37. if (!widescreen) {
  38. let wideScreenBtn = document.querySelector('.bilibili-player-video-btn-widescreen')
  39. console.debug(SN, 'Wide Screen Button:', wideScreenBtn)
  40. if (wideScreenBtn) {
  41. let closed = wideScreenBtn.className.includes('closed')
  42. console.debug(SN, 'Closed:', closed)
  43. if (closed) {
  44. console.log(SN, 'widescreen OK')
  45. widescreen = true
  46. } else {
  47. wideScreenBtn.click()
  48. }
  49. }
  50. }
  51. if (playing < play_count_limit) {
  52. let playBtn = document.querySelector('.bilibili-player-video-btn-start');
  53. console.debug(SN, 'Play Button:', playBtn)
  54. if (playBtn) {
  55. let check = playBtn.className.includes('video-state-pause')
  56. console.debug(SN, 'Playing check:', check)
  57. if (!check) {
  58. playing++
  59. console.log(SN, 'Playing:', playing)
  60. } else {
  61. playBtn.click()
  62. }
  63. }
  64. }
  65. if (playing >= play_count_limit && widescreen) {
  66. console.log(SN, 'Finish')
  67. clearInterval(main)
  68. }
  69. }, 200);
  70. }
  71. // 初次进入页面时运行
  72. widescreen_and_autoplay()
  73. })();