Greasy Fork 支持简体中文。

百度网盘倍速(自用)

百度网盘倍速

// ==UserScript==
// @name         百度网盘倍速(自用)
// @namespace    URL
// @version      0.1
// @description  百度网盘倍速
// @author       flypig
// @include      https://pan.baidu.com/pfile/video*
// @grant        none
// @run-at       document-end
// ==/UserScript==

;(function () {
  'use strict'

  let video

  // 等待视频元素加载完成
  function waitForVideo() {
    video = document.getElementsByTagName('video')[0]
    if (!video) {
      setTimeout(waitForVideo, 100) // 每隔100毫秒检查一次
      return
    }

    // 初始化倍速
    let playbackRate = 1

    // 更新倍速并显示提示
    function updatePlaybackRate(newRate) {
      playbackRate = newRate
      document.getElementsByTagName('video')[0].playbackRate = playbackRate
      showPlaybackRate()
    }

    // 在页面上显示当前倍速
    function showPlaybackRate() {
      const rateElement = document.createElement('div')
      rateElement.style.position = 'absolute'
      rateElement.style.top = '10px'
      rateElement.style.right = '10px'
      rateElement.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'
      rateElement.style.color = 'white'
      rateElement.style.padding = '5px'
      rateElement.style.borderRadius = '5px'
      rateElement.style.zIndex = '9999'
      rateElement.textContent = `当前倍速: ${playbackRate}x`
      document.body.appendChild(rateElement)
      setTimeout(() => {
        rateElement.remove()
      }, 2000) // 2秒后自动隐藏提示
    }

    // 监听按键事件
    document.addEventListener('keydown', function (event) {
      switch (event.key) {
        case 'z':
          updatePlaybackRate(playbackRate - 0.5)
          break
        case 'x':
          updatePlaybackRate(playbackRate + 0.5)
          break
        case 'c':
          updatePlaybackRate(1)
          break
      }
    })
  }

  // 定期检查 URL 参数变化
  let previousUrl = window.location.href
  setInterval(() => {
    if (window.location.href !== previousUrl) {
      previousUrl = window.location.href
      waitForVideo()
    }
  }, 1000) // 每隔1秒检查一次

  window.addEventListener('load', waitForVideo)
})()