override missav js
当前为
// ==UserScript==
// @name override-missav-js
// @namespace https://missav.com
// @version v0.0.13
// @description override missav js
// @author You
// @match https://missav.com/*
// @grant none
// ==/UserScript==
const onMouseEnter = () => {
// 获取页面中所有拥有 .thumbnail 类的元素
const thumbnails = document.querySelectorAll(".thumbnail");
// 遍历所有的 .thumbnail 元素
thumbnails.forEach(function (thumbnail) {
// 在每个 .thumbnail 元素下找到符合条件的 a 元素
const link = thumbnail.querySelector("div:first-child > a:last-child");
if (link == null) {
return;
}
// 检查 link 是否已经有监听器或者已经被触发过点击
if (!link.hasAttribute("data-click-triggered")) {
// 创建一个监听函数,它可以被解除绑定
function hoverTriggerClick(event) {
// 触发点击事件
link.click();
// 在触发点击后解除 mouseenter 事件监听
link.removeEventListener("mouseenter", hoverTriggerClick);
}
// 标记 link 已添加事件监听器
link.setAttribute("data-click-triggered", "true");
// 为该 a 元素添加鼠标悬停的事件监听器
link.addEventListener("mouseenter", hoverTriggerClick);
}
});
};
const onVideo = () => {
// 获取页面中所有拥有 .thumbnail 类的元素
const thumbnails = document.querySelectorAll(
".thumbnail > div:first-child > a:first-child"
);
// 遍历所有的 .thumbnail 元素
thumbnails.forEach(function (thumbnail) {
// 在每个 .thumbnail 元素下找到符合条件的 a 元素
const video = thumbnail.querySelector(
"div:first-child > a:first-child > video"
);
if (video == null){
return;
}
if (video.getAttribute("play") === "true" && video.src.indexOf("https") != -1) {
// video.play();
// video.className = "preview";
return;
}
// const id = video.id.replace("preview-", "");
// console.log(id, video.dataset.src);
// video.src = video.dataset.src.replace("undefined", id);
// console.log(video.id, video.dataset.src);
if (video.dataset.src.indexOf("undefined") > -1) {
return;
}
video.setAttribute("costom-src", "true");
video.setAttribute("play", "true");
video.src = video.dataset.src;
// video.play();
// video.className = "preview";
});
};
const playVideo = () => {
onVideo();
const videos = document.querySelectorAll("video[costom-src=true]");
videos.forEach((video) => {
video.play();
video.className = "preview";
});
}
const addSettingIcon = () => {
const div = document.createElement("div");
div.style.position = "fixed";
div.style.right = "20px";
div.style.bottom = "20px";
div.style.padding="10px";
div.style.zIndex = "50";
div.style.width = "16px";
div.style.height = "16px";
div.style.color = "white";
div.style.backgroundColor = "black";
div.style.borderRadius = "50%";
div.style.opacity = "1";
div.style.cursor = "pointer";
div.style.display = "flex";
div.style.justifyContent = "center";
div.style.alignItems = "center";
div.style.userSelect = "none";
div.innerText = "⚙️";
div.addEventListener("mouseenter", function () {
div.style.opacity = "1";
});
div.addEventListener("mouseleave", function () {
div.style.opacity = "0.5";
});
div.addEventListener("click", function () {
playVideo();
});
document.body.appendChild(div);
}
const addTriggerAutoPlay = () => {
const div = document.createElement("div");
div.style.position = "fixed";
div.style.right = "20px";
div.style.bottom = "50px";
div.style.padding="10px";
div.style.zIndex = "50";
div.style.width = "16px";
div.style.height = "16px";
div.style.color = "white";
div.style.backgroundColor = "black";
div.style.borderRadius = "50%";
div.style.opacity = "1";
div.style.cursor = "pointer";
div.style.display = "flex";
div.style.justifyContent = "center";
div.style.alignItems = "center";
div.style.userSelect = "none";
div.innerText = "♨️";
div.addEventListener("mouseenter", function () {
div.style.opacity = "1";
});
div.addEventListener("mouseleave", function () {
div.style.opacity = "0.5";
});
div.addEventListener("click", function () {
const autoPlay = localStorage.getItem("autoPlay");
if (autoPlay === "1") {
localStorage.setItem("autoPlay", "0");
return;
}
localStorage.setItem("autoPlay", "1");
});
document.body.appendChild(div);
}
(function () {
"use strict";
addSettingIcon();
addTriggerAutoPlay();
document.addEventListener("keydown", function (event) {
playVideo();
});
setInterval(() => {
if (window.player != null) {
return;
}
const autoPlay = localStorage.getItem("autoPlay");
if (autoPlay === "1") {
setTimeout(() => {
playVideo();
}, 2000);
const observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.addedNodes.length > 0) {
// onMouseEnter();
playVideo();
}
});
});
observer.observe(document.body, {
attributes: false,
childList: true,
subtree: true,
});
}
}, 1000)
})();