Greasy Fork

视频相关

进入视频后,自动开始,自动静音,移除自动暂停,倍速播放

// ==UserScript==
// @name         视频相关
// @include      *://*
// @version      1.1.2
// @description  进入视频后,自动开始,自动静音,移除自动暂停,倍速播放
// @author       sndcyp
// @match        *://*
// @grant        none
// @namespace    
// ==/UserScript==
$(document).ready(function () {
    // (function () {
    // 'use strict';
    window.onfocus = function () { console.log('原始事件已被替换') };
    window.onblur = function () { console.log('原始事件已被替换') };
    var tmp = setInterval(function () {
        if (player) {
            player.addListener('loadedmetadata', function () {
                player.videoPlay();
                player.videoMute();
                clearInterval(tmp);
            });
        }
    }, 500);
});
(function () {
  'use strict';
  let rate = 1
  let selectors = []
  if (/bilibili/.test(location.hostname)) {
    selectors = [
      'div.bilibili-player-video-top-title',
      'span.tit'
    ]
  } else if (/netflix/.test(location.hostname)) {
    selectors = ['.ellipsize-text h4']
  } else if (/youtube/.test(location.hostname)) {
    selectors = [
      '.ytp-title-link.yt-uix-sessionlink.ytp-title-fullerscreen-link',
      'h1 > yt-formatted-string.style-scope.ytd-video-primary-info-renderer'
    ]
  }
 
  window.addEventListener('keydown', (e) => {
    if (e.key === '`') {
      rate = 0.5
    } else {
      if ((/youtube/.test(location.hostname))) {
        if (e.key === ']' && rate < 16) {
          rate += 0.5
        } else if (e.key === '[' && rate > 0.25) {
          rate -= 0.5
        } else {
          return
        }
      } else {
        if (e.key === ']' && rate < 16) {
          rate += 0.25
        } else if (e.key === '[' && rate > 0.25) {
          rate -= 0.25
        } else if (e.key === '=' && rate < 16) {
          rate += 0.5
        } else if (e.key === '-' && rate > 0.5) {
          rate -= 0.5
        } else if (e.key === '1') {
          rate = 1
        } else if (e.key === '2') {
          rate = 2
        } else if (e.key === '3') {
          rate = 3
        } else if (e.key === '4') {
          rate = 4
        } else {
          return
        }
      }
    }
    setVideoRate()
    setVideoTitle()
  })
 
  function getTitle() {
    return selectors
             .map(selector => document.querySelector(selector))
             .filter(el => el && el.innerText)
             .map(el => el.innerText)[0]
  }
 
  function setVideoRate() {
    console.debug(`rate: ${rate}x`)
    document.querySelector('video').playbackRate = rate
  }
 
  function setVideoTitle() {
    const title = (getTitle() || '').replace(/^\[.*\] /, '')
    for (const selector of selectors) {
      const el = document.querySelector(selector)
      if (el) {
        el.innerHTML = `[${rate}x] ${title}`
      }
    }
  }
})();