bilibili auto triple

b站50%自动三连

// ==UserScript==
// @name         bilibili auto triple
// @namespace    http://tampermonkey.net/
// @version      0.4
// @author       cjq
// @match        https://www.bilibili.com/video/*
// @grant        none
// @run-at       document-end
// @description  b站50%自动三连
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    let videoDom, timeLine
    const getInfo= () =>{
        const urlNormal = location.pathname.split("/")[2]
        //const videoAV = urlNormal.startsWith("av") && urlNormal.replace("av", "")
        const videoAV = window.aid;
        let value = "; " + document.cookie;
        let parts = value.split("; bili_jct=");
        if (parts.length === 2 && videoAV){
            return {userId:parts.pop().split(";").shift(), av:videoAV};
        } else{
            return false
        }
    }

    const autoFunc= e =>{
        const {currentTime} = e.target
        if(currentTime >= timeLine * 0.5){
            console.log("like")
            videoDom.removeEventListener("timeupdate", autoFunc)
            let xhr = new XMLHttpRequest();
            xhr.open("POST", 'https://api.bilibili.com/x/web-interface/archive/like/triple', true);
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
            xhr.withCredentials = true
            if(getInfo()){
                console.log(getInfo())
                xhr.send(`aid=${getInfo().av}&csrf=${getInfo().userId}`);
                let tripleBox = [...document.querySelector(".ops").children]
                tripleBox.map((res, index)=>{
                    if(index < 3){
                        res.classList.add("on")
                    }
                })
            }
        }
    }

    const startFunc= ()=>{
        console.log("begin listen", timeLine)
        if(addEventListener){
            videoDom.addEventListener("timeupdate", autoFunc)
        }

    }
    window.onload = ()=>{}

    console.log("auto triple on~")

    var timerId=setInterval(function(){
        videoDom=document.querySelector("video");
        console.log(videoDom);
        if(videoDom!=undefined && videoDom!=''){
            //setTimeout(startFunc, timeLine * 400)
            timeLine = videoDom.duration
            startFunc();
            clearInterval(timerId);
        }
    },500);


})();