Greasy Fork

Greasy Fork is available in English.

bili高能条

通过解析高能跳,实现自动跳过片头

当前为 2020-11-04 提交的版本,查看 最新版本

// ==UserScript==
// @name         bili高能条
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  通过解析高能跳,实现自动跳过片头
// @author       kakasearch
// @include      *://www.bilibili.com/video/av*
// @include      *://www.bilibili.com/video/BV*
// @include      *://www.bilibili.com/bangumi/play/ep*
// @include      *://www.bilibili.com/bangumi/play/ss*
// @include      *://m.bilibili.com/bangumi/play/ep*
// @include      *://m.bilibili.com/bangumi/play/ss*
// @include      *://bangumi.bilibili.com/anime/*
// @include      *://bangumi.bilibili.com/movie/*
// @include      *://www.bilibili.com/bangumi/media/md*
// @include      *://www.bilibili.com/blackboard/html5player.html*
// @connect      comment.bilibili.com
// @run-at       document-end
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @license      MIT
// ==/UserScript==
/////////////////////////////////////////////bili_pass --- 一步到高能//////////////////////////////////////////////////////
(function() {
    const bili_pass_gnt={
        setting:{//脚本设置
            max_time:300,//单位秒,最大跳过时长,此时长之外的将视为不可信,0为不限制
            min_time:10,//单位秒,最小跳过时长,此时长之外的将视为不可信,0为不限制
            react_time:1,//弹幕发送的反应时间
            cid:'',//控制切p
            debug : 0,//开发模式
            pass_op : 1,//记录次剧集是否跳过,不要修改
        },
        info(){//输出信息
            const arg = Array.from(arguments);
            arg.unshift(`color: #030303; background-color:#D3D3D3`);
            arg.unshift('%c bili高能条:');
            console["info"].apply(console, arg);
        },
        initfun:(gnt)=>{
            //document.querySelector("#pbp-curve-path > path").getAttribute('d')//高能条识别码
            if(/动态漫/.test(document.querySelector("#media_module > div > a.media-title").innerText)){
                let height = / 0.0 C (\d+\.\d*)/.exec(gnt.getAttribute('d'))[1] //获取高能条最高点
                let video = document.getElementsByTagName('video')[0]
                video.currentTime=video.duration*(parseFloat(height)-11.3)/1000//跳转到高能条最高点
                video.play()
                bili_pass_gnt.info('已经跳转至最高能')
            }

        },
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    let ci = 0//防止observe导致的2次运行
    let obser = setInterval(
    function(){
    let video= document.querySelector("#bilibili-player video")
    let gnt = document.querySelector("#pbp-curve-path > path")//高能条加载完毕
    if(gnt && video){
        clearInterval(obser)
          bili_pass_gnt.initfun(gnt)
        let observer = new MutationObserver(()=>{if(ci == 0){ci =1;bili_pass_gnt.initfun()}else{ci =0 }})
    observer.observe(video, { attributes: true });//检测video变化,防止中途切p失效
    }

    },200
    )
})();