Greasy Fork

Greasy Fork is available in English.

视频外挂西悬浮可点复制翻译字幕-floating-plug-in-for-clickable-subtitle-copying

视频外挂西悬浮可点复制翻译字幕,floating plug-in for clickable subtitle copying

当前为 2023-12-15 提交的版本,查看 最新版本

// ==UserScript==
// @name         视频外挂西悬浮可点复制翻译字幕-floating-plug-in-for-clickable-subtitle-copying

// @namespace    http://tampermonkey.net/
// @version      2023.12.15.11.01.35
// @description  视频外挂西悬浮可点复制翻译字幕,floating plug-in for clickable subtitle copying
// @author       You

// @match        *://*/*

// @icon         https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org
// @grant        none

// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @include      *

// @license      MIT

// ==/UserScript==

(function () {
  'use strict';

  // Your code here...

  // 报错油猴脚本使用jquery报错eslint:no-undef-‘$‘ is not defined
  /* globals jQuery, $, waitForKeyElements */

  // 彩色打印
  console.clog = (content) => {
    console.log(
      `%c${content}`,
      "background-color: #811f21; color: white;line-height:1.5rem; padding:0 0.5rem;"
    );
  }

  // 全屏封装
  function goFullScreen(element) {

    console.clog('全屏视频');
    // var element = document.getElementById("fullscreenElement");
    if (element.requestFullscreen) {
      element.requestFullscreen();
    } else if (element.mozRequestFullScreen) {
      element.mozRequestFullScreen();
    } else if (element.webkitRequestFullscreen) {
      element.webkitRequestFullscreen();
    } else if (element.msRequestFullscreen) {
      element.msRequestFullscreen();
    }
  }

  function exitFullScreen() {
    console.clog('退出全屏视频');
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
    } else if (document.webkitExitFullscreen) {
      document.webkitExitFullscreen();
    } else if (document.msExitFullscreen) {
      document.msExitFullscreen();
    }
  }
  function checkFullScreen(element) {
    // var element = document.getElementById("fullscreenElement");

    if (document.fullscreenElement ||
      document.mozFullScreenElement ||
      document.webkitFullscreenElement ||
      document.msFullscreenElement) {
      if (element === document.fullscreenElement ||
        element === document.mozFullScreenElement ||
        element === document.webkitFullscreenElement ||
        element === document.msFullscreenElement) {
        console.log("元素处于全屏状态");
        return true
      } else {
        console.log("元素不处于全屏状态");
        return false
      }
    } else {
      console.log("不处于全屏状态");
      return false
    }
  }
  function autoFullScreen(el) {
    // var el = document,
    //   cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullScreen,
    //   wscript;
    // if (typeof cfs != "undefined" && cfs) {
    //   cfs.call(el);
    //   return;
    // }
    if (!checkFullScreen(el)) {
      goFullScreen(el)
    } else {
      exitFullScreen()
      return
    }
    if (typeof window.ActiveXObject != "undefined") {
      wscript = new ActiveXObject("WScript.Shell");
      if (wscript != null) {
        wscript.SendKeys("{F11}");
      }
    }
  }

  // 等待网页完成加载
  window.addEventListener('load', function () {
    // 加载完成后执行的代码
    console.clog('视频外挂西悬浮可点复制翻译字幕-floating-plug-in-for-clickable-subtitle-copying');

    // 视频外层
    $('video').parent().attr("class", "videoWrapper");
    // $('video').wrapAll('<div class="videoWrapper" style="position: relative;"/>');

    // 全屏开关元素
    const clickable_subtitle_switch_button = $("<div class='switchButton'>全屏</div>")
    // 全屏开关事件
    clickable_subtitle_switch_button.click(function (event) {
      console.clog('全屏开关点击');
      autoFullScreen(document.querySelector('.videoWrapper'));
      // 阻止冒泡
      event.stopPropagation();
    });
    // 全屏开关样式
    clickable_subtitle_switch_button.css({
      'line-height': '1.5em',
      'padding': '0 0.5rem',
      'font-size': '1em',
      'top': '50%',
      'left': '95%',
      'transform': 'translate(-50%,-50%)',
      'z-index': '2147483647',
      'color': '#fff',
      'background-color': '#888',
      'position': 'absolute',
      'cursor': 'pointer',
      'user-select': 'none !important',
    });

    // 网页外挂字幕元素
    const clickable_subtitle_wapper = $("<p class='floating_plug_in_for_clickable_subtitle_copying'>可点击字幕</p>")

    // 网页外挂字幕事件
    clickable_subtitle_wapper.click(function (event) {
      console.clog('字幕外层点击');

      // 阻止冒泡
      event.stopPropagation();
    });
    // 网页外挂字幕样式
    clickable_subtitle_wapper.css({
      'user-select': 'auto !important',
      'with': '50vw',
      'line-height': '1.5em',
      'padding': '0 0.5rem',
      'font-size': '1em',
      'bottom': '10%',
      'left': '50%',
      'transform': 'translate(-50%,-50%)',
      'z-index': '2147483647',
      'color': '#fff',
      'background-color': '#444',
      'position': 'absolute',
    });

    // 网页外挂字幕文件
    const clickable_subtitle_input_file = $("<input class='clickable_subtitle_input_file' type='file' accept='.srt/.vtt' >上传文件(.srt/.vtt)</input>")

    // 射手字幕网找字幕
    const clickable_subtitle_find_subtitle_webSite = $("<a class='clickable_subtitle_find_subtitle_webSite' href='https://assrt.net/' target='字幕网'>找英文字幕</a>")
    clickable_subtitle_find_subtitle_webSite.css({
      display: 'block',
      color: '#fff',
    })

    // 找字幕外层
    const clickable_subtitle_find_subtitle_wapper = $("<div class='clickable_subtitle_find_subtitle_wapper'></div>")

    clickable_subtitle_find_subtitle_wapper.append(clickable_subtitle_find_subtitle_webSite)
    clickable_subtitle_find_subtitle_wapper.append(clickable_subtitle_input_file)
    clickable_subtitle_wapper.append(clickable_subtitle_find_subtitle_wapper);

    // 准备改成父级嵌套
    // 挂载开关
    const videoWrapper = $('.videoWrapper')
    videoWrapper.append(clickable_subtitle_switch_button);
    videoWrapper.append(clickable_subtitle_wapper);
  }, false);

})();