实现资源采集网站的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'));
}
});
})();