您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
115播放器增强
当前为
- // ==UserScript==
- // @name 115 Player Enhancer
- // @namespace https://greasyfork.org/scripts/376536-115-player-enhancer
- // @version 0.7
- // @description 115播放器增强
- // @author zaypen
- // @license MIT
- // @match http*://115.com/*
- // @match http*://anxia.com/*
- // @match http*://*.anxia.com/*
- // @require https://openuserjs.org/src/libs/sizzle/GM_config.min.js
- // @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
- // @require https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
- /*jslint browser:true*/
- /*global GM_config, _, $ */
- var defaultOpeningDuration = 125;
- var fieldDefs = {
- 'OpeningDuration': {
- 'label': 'OP 时长',
- 'type': 'unsigned int',
- 'default': defaultOpeningDuration
- }
- };
- GM_config.init({
- id: 'GM_config',
- title: '115 Player Enhancer',
- fields: fieldDefs
- });
- function appendElement(current, next) {
- console.log('add ', next);
- return current.insertAdjacentElement('afterend', next);
- }
- function registerHotkey(key, fn) {
- document.body.addEventListener('keyup', function(e) {
- if (e.key === key) {
- fn();
- }
- });
- }
- function retry(fn, interval, times) {
- var ret = fn();
- if (!ret && times) {
- setTimeout(function () {
- retry(fn, interval, times--);
- }, interval);
- }
- }
- function createButton(onclick, alt) {
- var button = document.createElement('a');
- button.href = 'javascript:;';
- button.className = 'btn-switch';
- button.alt = alt;
- button.onclick = onclick;
- return button;
- }
- function getPlayer() {
- return $('#js-video')[0];
- }
- function getNextItem() {
- var items = Array.apply(null, document.querySelectorAll('.video-playlist .vpl-container .item-list li'));
- var remainingItems = _.dropWhile(items, function (item) {
- return item.className !== 'hover';
- });
- return _.head(_.tail(remainingItems));
- }
- (function() {
- 'use strict';
- function main() {
- var video = getPlayer();
- var configration = function() {
- GM_config.open();
- };
- var playButton = document.querySelector('.operate-bar a[btn="play"]');
- var currentButton = playButton;
- var skipOp = function() {
- video.currentTime += GM_config.get('OpeningDuration');
- };
- var skipOpButton = createButton(skipOp, '跳过OP (快捷键END)');
- skipOpButton.innerHTML = '<i class="icon-operate iop-playing" style="background-size: 240px 40px;"></i><div class="tooltip">点击跳过OP</div>';
- currentButton = appendElement(currentButton, skipOpButton);
- registerHotkey('End', skipOp);
- var configButton = createButton(configration, '设置');
- configButton.innerHTML = '<i class="icon-operate iop-setting"></i>';
- currentButton = appendElement(currentButton, configButton);
- var nextButton = document.querySelector('.operate-bar a[btn="next"]');
- nextButton.innerHTML += '<div class="tooltip">下一集(快捷键PageDown)</div>';
- registerHotkey('PageDown', function() {
- nextButton.click();
- });
- var jump = function() {
- var endTime = video.buffered.end(video.buffered.length - 1);
- var target = endTime - 5;
- if (video.currentTime < target) {
- video.currentTime = target;
- }
- };
- registerHotkey('0', jump);
- console.info('115 Enhancer loaded');
- return true;
- }
- function inject() {
- var video = getPlayer();
- if (video) {
- video.addEventListener('playing', main, { once: true });
- return true;
- }
- }
- retry(inject, 500, 10);
- })();