🏠 Home 

bimibimi_next_episode

bimibimi auto next episode

// ==UserScript==
// @name           bimibimi_next_episode
// @name:zh-CN        bimibimi自动下集
// @name:zh-TW        bimibimi自動下集
// @namespace      bimibimi_next_episode
// @description    bimibimi auto next episode
// @description:zh-CN bimibimi自动播放下集
// @description:zh-TW bimibimi自動播放下集
// @include        http://49.234.56.246/danmu/play.php?url=*
// @include        http://www.bimiacg.com/bangumi/*
// @run-at      document-end
// @grant         GM_registerMenuCommand
// @grant         GM_setValue
// @grant         GM_getValue
// @author      zhuzemin
// @version     1.00
// @supportURL  https://github.com/zhuzemin
// ==/UserScript==
//config
let config = {
'debug': false,
'skip': GM_getValue('skip') || 0.0
}
config.skip = parseFloat(config.skip);
let debug = config.debug ? console.log.bind(console) : function () {
};
// prepare UserPrefs
setUserPref(
'skip',
config.skip,
'Skip ending',
`Skip ending, input ending seconds. *effect after reload`,
);
let init = function () {
if (window.self === window.top) {
debug('main');
window.addEventListener('message', function (e) {
debug(e.data);
if (e.data == 'end') {
let current = parseInt(window.location.href.match(/\/(\d+)\/?$/)[1]);
let list = document.querySelector('ul.player_list');
if (current < list.childNodes.length) {
let next = current + 1;
window.location.href = window.location.href.replace(/\/(\d+)\/?$/, '/' + next + '/');
}
}
});
}
else {
debug('iframe');
let interval = setInterval(() => {
let video = document.querySelector('#video');
if (video != null) {
debug('suc');
clearInterval(interval);
let timer = setInterval(() => {
debug(video.currentTime);
debug(video.currentTime + config.skip);
if (video.currentTime + config.skip >= video.duration) {
debug('end');
clearInterval(timer);
parent.postMessage('end', "*");
}
}, 1000);
}
}, 1000);
}
}
window.addEventListener('DOMContentLoaded', init);
/**
* Create a user setting prompt
* @param {string} varName
* @param {any} defaultVal
* @param {string} menuText
* @param {string} promtText
* @param {function} func
*/
function setUserPref(varName, defaultVal, menuText, promtText, func = null) {
GM_registerMenuCommand(menuText, function () {
var val = prompt(promtText, GM_getValue(varName, defaultVal));
if (val === null) { return; }  // end execution if clicked CANCEL
GM_setValue(varName, val);
if (func != null) {
func(val);
}
});
}