Sleazy Fork is available in English.

含羞草研究所免费看

针对 含羞草研究所 的优化脚本,此脚本可以让用户观看VIP视频

As of 2022-04-12. See the latest version.

// ==UserScript==
// @license MIT
// @name         含羞草研究所免费看
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  针对 含羞草研究所 的优化脚本,此脚本可以让用户观看VIP视频
// @author       You
// @match        https://www.hxcbb101.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hxcbb101.com
// @grant        none
// ==/UserScript==


function importLib(){
    importJS("https://greasyfork.org/scripts/443000-cryptojs/code/cryptoJs.js?version=1037694")
    importJS("https://greasyfork.org/scripts/443002-dplayer/code/DPlayer.js?version=1037697")
    importJS("https://greasyfork.org/scripts/443005-hls/code/hls.js?version=1037700")
}
function importJS(src){
    let script = document.createElement('script');
    script.src = src;
    document.head.appendChild(script);
}
async function getPreUrl(token,videoId) {
    var myHeaders = new Headers();
    myHeaders.append("auth", token);
    myHeaders.append("Content-Type", "application/json");

    var raw = JSON.stringify({
        "videoId": parseInt(videoId)
    });

    var requestOptions = {
        method: 'POST',
        headers: myHeaders,
        body: raw,
        redirect: 'follow'
    };

    let res = await fetch("https://www.hxc-api.com/videos/getPreUrl", requestOptions);
    res = res.text();
    return res;
}

function getVideoId(){
    let url = window.location.href;
    let urlSplited =url.split("/");
    let videoId = urlSplited[urlSplited.length-1];
    return videoId;
}

function getStorage(){
   let storage = localStorage.getItem("newPCVideoNoLiveStore")
   let json = JSON.parse(storage);
   return json;
}

function getToken(storage){
    let res = storage;
    let token = res.userToken;
    return token;
}

function play(playerUrl, pic) {
    var dp = new DPlayer({
        element: document.querySelector(".split"),                       // 可选,player元素
        autoplay: false,                                                   // 可选,自动播放视频,不支持移动浏览器
        theme: '#FADFA3',                                                  // 可选,主题颜色,默认: #b7daff
        loop: true,                                                        // 可选,循环播放音乐,默认:true
        lang: 'zh',                                                        // 可选,语言,`zh'用于中文,`en'用于英语,默认:Navigator language
        screenshot: true,                                                  // 可选,启用截图功能,默认值:false,注意:如果设置为true,视频和视频截图必须启用跨域
        hotkey: true,                                                      // 可选,绑定热键,包括左右键和空格,默认值:true
        preload: 'auto',                                                   // 可选,预加载的方式可以是'none''metadata''auto',默认值:'auto'
        video: {                                                           // 必需,视频信息
            url: playerUrl,                                         // 必填,视频网址
            pic: pic,                                      // 可选,视频截图
            type: 'hls'
        }
    });
    console.log(dp)
}


async function reloadPlayer() {
    let url = window.location.href;
    let videoId = getVideoId(url);
    if (videoId === '') {
        return;
    }
    let playUrl = await getPlayUrl(videoId)
    console.log("playUrl", playUrl)

    if (global.type === 'pc') {
        let pic = document.querySelector(".backImg img").getAttribute("src")
        let ad = document.querySelector(".exchangeBg").remove()
        play(playUrl, pic)
    }else{
        let pic = document.querySelector(".backImg img").getAttribute("src")
        play(playUrl, pic)
    }


}


async function init(){
    let storage = getStorage()
    let token = getToken(storage)
    let videoId = getVideoId()
    let preUrl = await getPreUrl(token,videoId)
    preUrl = JSON.parse(preUrl)
    if(preUrl.code === 0){
        let m3u8Url = preUrl.data.url
        let splited = m3u8Url.split("?")
        let m3u8UrlParams = splited[1]
        let urlSearchParams = new URLSearchParams(m3u8UrlParams)
        urlSearchParams.delete("start")
        urlSearchParams.delete("end")
        let newM3U8Url = splited[0] + "?" + urlSearchParams.toString()
        let pic = document.querySelector(".backImg img").getAttribute("src")
        play(newM3U8Url, pic)
    }
}

(function () {
    'use strict';
    importLib();
    setTimeout(() => {
        init();
    }, 1200)

})();