阿里云盘多倍速播放

阿里云视频倍速播放增加了额外倍速的选择,增加的方式是在原有的倍速播放样式基础上增加,保证使用方便及样式统一

// ==UserScript==
// @name         阿里云盘多倍速播放
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  阿里云视频倍速播放增加了额外倍速的选择,增加的方式是在原有的倍速播放样式基础上增加,保证使用方便及样式统一
// @author       wenzheng.li
// @match        *://www.aliyundrive.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=aliyundrive.com
// @license      MIT
// ==/UserScript==

(function() {
  'use strict';
  window.addEventListener('load', () => {
  const interval = setInterval(() => {
    const video = document.querySelector('video')
    const ul = document.querySelector('.drawer-list-grid--2S0tk')
    const close =
      ul.parentElement.parentElement.previousElementSibling.children.item(1)
    let firstChild = [...ul.children].find(
      (el) => el.firstChild.textContent === '1.5 倍'
    )
    const rates = ['3', '2.5', '2']
    rates.forEach((rate) => {
      const cloneNode = firstChild.cloneNode(true)
      cloneNode.firstChild.innerHTML = `${rate}倍`
      ul.insertBefore(cloneNode, firstChild)
      firstChild = cloneNode
    })
    const backRateNodes = [...ul.children]
    const changeSelectColor = (select) => {
      setTimeout(() => {
        backRateNodes.forEach((item) => {
          item.dataset.isCurrent = 'false'
        })
        if (!select.dataset.isCurrent) {
          select.parentElement.dataset.isCurrent = 'true'
        } else {
          select.dataset.isCurrent = 'true'
        }
        close.click()
      })
    }
    ul.addEventListener('click', (e) => {
      const target = e.target
      const PlaybackRate = target.textContent.replace('倍', '')
      video.playbackRate = PlaybackRate
      changeSelectColor(target)
    })

    if (video) {
      clearInterval(interval)
    }
  }, 1000)
  })
})();