资源网插件

实现资源采集网站的m3u8播放,配合FastStream Video Player浏览器扩展食用更佳!!!

// ==UserScript==
// @name         资源网插件
// @namespace    http://tampermonkey.net/
// @version      3.0.0
// @description  实现资源采集网站的m3u8播放,配合FastStream Video Player浏览器扩展食用更佳!!!
// @author       xiaoya123
// @require      https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.7/hls.min.js
// @license      Disclose source
// @match        *://cj.lzcaiji.com/*
// @match        *://www.lzizy7.com/*
// @match        *://tkzy1.com/*
// @match        *://yhzy.cc/*
// @include      /.*hongniu.*/
// @include      /.*ckzy.*/
// @include      /.*wujinzy.*/
// @include      /.*wolongzy.*/
// @include      /.*wlzyw.*/
// @include      /.*jinying.*/
// @include      /.*jyzy.*/
// @include      /.*guangsuzy.*/
// @include      /.*23\.224\.101\.30.*/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=lzcaiji.com
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    // 按钮样式style
    var style = document.createElement('style');
    var theHead = document.head || document.getElementsByTagName('head')[0];
    style.appendChild(document.createTextNode('#main{width:100%;display:flex;flex-direction:column}#main .left{display:flex;flex-wrap:wrap}button{background-color:#1795bb;border-radius:10px;border:0;color:white;padding:8px 16px;text-align:center;text-decoration:none;font-size:16px;margin:4px 2px;cursor:pointer}video{width:100%}#dataTitle{text-align: center;font-size: 30px;color: blue;padding:25px}'));
    theHead.appendChild(style);

    let contentMap = [
        'document.querySelectorAll("#content")[1]',
        'document.querySelectorAll(".playBox")[1]',
        'document.querySelectorAll("#playlist")[0]',
        'document.querySelectorAll(".dy-collect")[0]'
    ]
    let reg_hrefg = /(.+?)\$*(http.*\.m3u8)/gi;
    let reg_href = /(.+?)\$*(http.*\.m3u8)/i;
    let str = "";
    let content;
    for (let i = 0; i < contentMap.length; i++) {
        content = eval(contentMap[i]);
        if (undefined != content) {
            break;
        }
    }
    // 获取a标签中的网址
    let href_list = content.innerText;
    findHref(href_list);
    content.innerHTML = '<div id="dataTitle"></div><div id="main"><div class="dataRight"><video id="video" controls preload="auto"></video></div><div class="left" id="buttonContainer"></div></div>';
    function findHref(html) {
        let list = html.match(reg_hrefg);
        if (list === null) {
            str = "链接为空!";
            return;
        }
        list.forEach(k => {
            let ks = k.match(reg_href);
            str += '<button data-href="' + ks[2] + '">' + ks[1].trim() + '</button>';
        })
    }
    document.querySelector('#main .left').innerHTML = str;
    var video = document.getElementById('video');
    let len = 1000;
    let videoHLS = {
        autoStartLoad: true,
        manifestLoadingTimeOut: 60000,
        //manifestLoadingMaxRetry : 9,
        manifestLoadingRetryDelay: 500,
        levelLoadingTimeOut: 60000,
        //levelLoadingMaxRetry : 9,
        levelLoadingRetryDelay: 500,

        fragLoadingTimeOut: 60000,
        //fragLoadingMaxRetry : 6,
        fragLoadingRetryDelay: 250,
        startFragPrefetch: true
    }
    var currentHls;
    function play(url) {
        if (Hls.isSupported()) {
            // 如果 Hls 实例已存在,则重用它
            if (currentHls) {
                currentHls.loadSource(url);
                currentHls.attachMedia(video);
            } else {
                // 否则,创建新的 Hls 实例
                currentHls = new Hls();
                currentHls.loadSource(url);
                currentHls.attachMedia(video);
            }
            currentHls.on(Hls.Events.MANIFEST_PARSED, function () {
                video.playbackRate = 2;
                video.play();
            });
        }
    }
    // 在事件监听器外部获取 #dataTitle 元素
    let dataTitle = document.querySelector("#dataTitle");

    // 如果您的所有按钮都在某个父元素中,例如一个叫做 #buttonContainer 的 div
    let buttonContainer = document.querySelector("#buttonContainer");

    buttonContainer.addEventListener('click', function (event) {
        // 检查确保点击的是按钮
        if (event.target.getAttribute('data-href')) {
            dataTitle.innerText = event.target.innerText;
            play(event.target.getAttribute('data-href'));
        }
    });

})();