Greasy Fork

(失效)百度云盘视频连续播放减少等待

试图减少加载时间,目前已实现基本功能,偶尔报bug

目前为 2021-05-16 提交的版本。查看 最新版本

// ==UserScript==
// @name         (失效)百度云盘视频连续播放减少等待
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  试图减少加载时间,目前已实现基本功能,偶尔报bug
// @author       kakasearch
// @match        https://pan.baidu.com/play/video
// @icon         https://www.google.com/s2/favicons?domain=baidu.com
// @grant        GM_openInTab
// @grant        GM_getTab
// @grant        GM_saveTab
// @grant        unsafeWindow
// @grant        GM_getValue
// @grant        GM_setValue

// ==/UserScript==
//消除interval
(function() {
    'use strict';
    let window=unsafeWindow

    let main = ()=>{

        //abort open next url in background tab

        if(GM_getValue('next')== window.location.href){
            GM_setValue('next','')
            let play = setInterval(function(){
                try{
                    let werbung = document.querySelector("#video-root").shadowRoot.querySelector("#werbung-info-container > div.werbung-progress-bar-wrapper > div.werbung-progress-text")
                    if(window.videojs&&werbung&&Number(/\d+/.exec(werbung.innerText)[0])>=99){
                        //load done
                        clearInterval(play)
                        let canPlay = GM_getValue('pan_play')
                        if(! canPlay){
                            window.videojs.getPlayers("video-player").html5player.on('play', window.videojs.getPlayers("video-player").html5player.pause())
                            let pause =setInterval(()=>{
                                if(! window.videojs.getPlayers("video-player").html5player.paused()){
                                    window.videojs.getPlayers("video-player").html5player.el_.onload = ()=>{console.log('load')}
                                    console.log('pause')
                                    window.videojs.getPlayers("video-player").html5player.pause()
                                    window.videojs.getPlayers("video-player").html5player.on('play', window.videojs.getPlayers("video-player").html5player.pause())
                                }
                            },1000)
                            setTimeout(()=>{clearInterval(pause)},10000)
                            window.addEventListener('keydown',clearInterval(pause))
                            window.addEventListener('click',clearInterval(pause))
                        }
                        //wait closed
                        let play_listener = setInterval(()=>{
                            canPlay = GM_getValue('pan_play')
                            if(canPlay){
                                if(window.videojs.getPlayers("video-player").html5player.paused()){
                                    console.log('play')
                                    window.videojs.getPlayers("video-player").html5player.play()
                                }else{
                                    GM_setValue('pan_play',false)
                                    clearInterval(play_listener)
                                    main()
                                }
                            }
                        },1000)

                        }
                }catch{
                    // click retry button
                    let retry = setInterval(function(){
                        if(document.querySelector("#video-wrap > div > span > a")){
                            document.querySelector("#video-wrap > div > span > a").click()
                        }
                    },1000)
                    setTimeout(()=>{clearInterval(retry)},10000)
                }

                // if('重试'in ''){}///////////////////////////////
            },1000)

            }else{
                // open nexturl in background
                let url =window.location.href.split('%2')
                let next_name = document.querySelector(".video-item.currentplay").nextElementSibling.children[0].children[1].innerText
                url =url.slice(0,url.length-1)
                url.push('F'+encodeURI(next_name) + '&t=-1')
                let next_url =url.join('%2')
                GM_setValue('pan_play',false)
                GM_setValue('next',next_url)
                setTimeout(GM_openInTab(next_url,true),2000)

                //close tab when video end
                let tiao= 1
                setInterval(function(){
                    if(window.videojs&&window.videojs.getPlayers("video-player").html5player){


                        let duration = window.videojs.getPlayers("video-player").html5player.el_.firstElementChild.duration
                        let currentTime= window.videojs.getPlayers("video-player").html5player.el_.firstElementChild.currentTime
                        if(currentTime >(duration-1) && tiao){
                            GM_setValue('pan_play',true)
                            if(window.videojs.getPlayers("video-player").html5player){
                                window.videojs.getPlayers("video-player").html5player.pause()
                            }
                            window.close()
                            tiao= 0
                        }
                    }else{tiao=1}
                },1000)
            }



    }

    setTimeout(function(){
        main()
    },3000)


    // Your code here...
})();