Greasy Fork

Greasy Fork is available in English.

南方医科大学爱课平台自动二倍速静音播放全部视频/Auto Aike 2x Speed Muted Video Player

Automatically play videos at 2x speed and mute on Aike;add a switch for checking specific text

当前为 2023-03-18 提交的版本,查看 最新版本

// ==UserScript==
// @name 南方医科大学爱课平台自动二倍速静音播放全部视频/Auto Aike 2x Speed Muted Video Player
// @namespace https://aike.smu.edu.cn/
// @version 1.8
// @description Automatically play videos at 2x speed and mute on Aike;add a switch for checking specific text
// @author Lily Yu
// @match https://aike.smu.edu.cn/*
// @grant none
// @license MIT
// ==/UserScript==

(function () {
  'use strict';

  // Add a switch for checking specific text
  const checkText = true;

  // Define the elements to be manipulated
  var videos, nextPageButton;

  // Wait for the window to load completely
  window.onload = function () {
    // Find all the video elements on the page
    videos = document.querySelectorAll('video');

    // Find the next page button on the page
    nextPageButton = document.querySelector('#next-activity-link');

    function processVideos() {
      // Check if there are any videos on the page
      if (videos.length === 0) {
        // No videos, just click the next page button
        nextPageButton.click();
      } else {
        // Loop through all the video elements
        for (var i = 0; i < videos.length; i++) {
          // Get the current video element
          var video = videos[i];

          // Play the video at 2x speed and mute
          video.playbackRate = 2;
          video.muted = true;
          video.play();

          // Add an event listener to the video element to detect when it ends
          video.addEventListener('ended', function () {
            // Click the next page button to load a new video
            nextPageButton.click();
          });
        }
      }
    }

    // Check if the specific text is present on the page
    if (checkText) {
      const targetText = '完成学习任务。';
      const targetElement = document.querySelector('#resourceintro .no-overflow span');
      if (targetElement && targetElement.innerText === targetText) {
        processVideos();
      } else {
        nextPageButton.click();
      }
    } else {
      processVideos();
    }
  };
})();