age动漫视频播放器扩展

替换原有播放器,新增:自上次观看位置继续播放,播放结束自动跳转下一集

目前為 2021-08-16 提交的版本,檢視 最新版本

// ==UserScript==
// @name         age动漫视频播放器扩展
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  替换原有播放器,新增:自上次观看位置继续播放,播放结束自动跳转下一集
// @author       林狗dan
// @match        http://*.agefans.*/acg/*.html
// @icon         https://www.google.com/s2/favicons?domain=agefans.top
// @grant        none

// @run-at document-end
// ==/UserScript==

(function() {
    'use strict';
    init();
    //     const Delay = 3000;
    //     setTimeout(()=>{
    //         init();
    //     },Delay);

})();

function init(){
    //获取动漫的目录列表元素
    let list = document.querySelectorAll("#stab_1_71 > ul > div > div > ul > li > a");
    console.log(list );

    for(let i=0; i< list.length; i++){
        let text = list[i].innerText;
        let url = list[i].href;

        //去除全部备用
        if(text.indexOf('备用')!=-1){
            list.splice(i,1);
        }
    }

    let test = document.querySelector("#playiframe")
    console.log(test)
    console.log(decodeURIComponent(test.src))
    let video_src = test.src
    let start = video_src.search('vid=') + 4
    let end = video_src.indexOf('&')
    let src = video_src.slice(start,end)
    src = decodeURIComponent(src)
    console.log(src)
    //注入video标签

    //引入script及css       1.9.1的最新版有问题,不断跳出错误
    let script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.src = "https://cdn.bootcdn.net/ajax/libs/dplayer/1.25.0/DPlayer.min.js";
    document.documentElement.appendChild(script);

    let link = document.createElement('link');
    link.setAttribute('rel', 'stylesheet');
    link.setAttribute('type', 'text/css');
    link.href = "https://cdn.bootcdn.net/ajax/libs/dplayer/1.25.0/DPlayer.min.css";
    document.documentElement.appendChild(link);

    let video_ele = document.createElement('div')
    video_ele.style.height = '100%'
    video_ele.style.width = 'auto'
    video_ele.id = 'lin_player'

    //视频播放器
    let player = document.querySelector("#player")
    player.appendChild(video_ele)
    test.remove()

    //注入播放器
    let dp;
    let check_player = setInterval(function(){
        if(DPlayer){
            dp = new DPlayer({
                container: document.getElementById('lin_player'),
                autoplay: true,
                video: {
                    url: src,
                },
            });
            //跳转到历史位置
            let to_time = localStorage.getItem(location.href)
            dp.seek(to_time)

            //播放结束后自动下一个
            dp.on("ended",() => {
                console.log('video end')
                let index;
                for(let i=0; i< list.length; i++){
                    //定位当前正在播放的是哪一个
                    if(location.href == list[i].href){
                        index = i;
                        break;
                    }
                }
                if(index<1){
                    return;
                }

                dp.notice('即将播放下一集',3000)
                //倒计时
                let timeout = setTimeout(function(){
                    clearTimeout(timeout)
                    location.assign(list[index-1].href)
                },3000)

                })

            clearInterval(check_player)
        }
    },100)

    //记录播放进度
    setInterval(function(){
        let current = dp.video.currentTime
        console.log(current,location.href)
        localStorage.setItem(location.href,current)
    }, 5000)

};