115播放器功能增强,优化快进快退功能。
// ==UserScript==
// @name 115网盘播放器增强
// @version 1.0.2
// @description 115播放器功能增强,优化快进快退功能。
// @author Xiaowu
// @license GPL3
// @match http*://115.com/*
// @match http*://anxia.com/*
// @match http*://*.anxia.com/*
// @namespace https://greasyfork.org/users/859588
// ==/UserScript==
var defaultOpeningDuration = 10;
var fieldDefs = {
'OpeningDuration': {
'label': 'OP 时长',
'type': 'unsigned int',
'default': defaultOpeningDuration
}
};
GM_config.init({
id: 'GM_config',
title: '115播放器增强',
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);
registerHotkey('2', skipOp);
var configButton = createButton(configration, '设置');
configButton.innerHTML = '<i class="icon-operate iop-setting"></i>';
currentButton = appendElement(currentButton, configButton);
//替换默认的快进,快退,使用OP设计的值进行快进快退
var skipLeftOp = function () {
console.log(video.currentTime);
if ((video.currentTime - GM_config.get('OpeningDuration')) <= 0) {
video.currentTime = 0;
} else {
video.currentTime -= GM_config.get('OpeningDuration');
}
};
//registerHotkey('ArrowLeft', skipLeftOp);
registerHotkey('1', skipLeftOp);
registerHotkey('ArrowRight', skipLeftOp);
registerHotkey('PageDown', function () {
document.getElementById('js-video_next').click();
console.log('click');
});
return true;
}
function inject() {
var video = getPlayer();
if (video) {
video.addEventListener('playing', main, {once: true});
return true;
}
}
retry(inject, 500, 10);
})();