// ==UserScript== // @name A2p // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description Anime2Potplayer,把浏览器播放的动漫在Potplayer打开,这样就可以使用SVP4补帧! // @author MakotoArai(https://github.com/MakotoArai-CN) // @supportURL https://blog.ciy.cool // @license GPL-v3 // @icon https://cravatar.cn/avatar/1e84fce3269537e4aa7473602516bf6d?s=256 // @match *anich.emmmm.eu.org/* // @match *.mutedm.com/* // @match *.iyinghua.com/* // @match *.5dm.link/* // @grant GM_setValue // @grant GM_getValue // @downloadURL none // ==/UserScript== (function() { 'use strict'; window.onload = function () { console.info("%cA2P%c%s", "color:red;font-size:40px;font-weight:bold;", "color:black;font-size:16px;font-weight:normal", GM_info.script.version); // 定时器用于动态嗅探视频链接 const videoTimer = setInterval(findVideoUrl, 1000); function findVideoUrl() { const videoElement = document.querySelector("video"); if (videoElement && videoElement.src) { clearInterval(videoTimer); preparePotplayerInteraction(videoElement, GM_getValue("check") ?? false); } } function preparePotplayerInteraction(videoElement, check = true) { const videoUrl = videoElement.src; console.log(`检测到视频链接: ${videoUrl}`); creatBtn(videoElement); if (check) window.location.href = `potplayer://${videoUrl}`; // 暂停网页视频的播放 videoElement.autoplay = false; } function creatBtn(videoElement) { // 插入自定义CDN document.head.insertAdjacentHTML("beforeend", ` `); // 右键菜单 var menu = document.createElement("div"); // 插入自定义css document.head.insertAdjacentHTML("beforeend", ` )`); /* 右键菜单 */ menu.innerHTML = `
`; document.body.appendChild(menu); // 自定义鼠标右键 (function (a) { a.extend({ mouseMoveShow: function (b) { var d = 0, c = 0, h = 0, k = 0, e = 0, f = 0; a(window).mousemove(function (g) { d = a(window).width(); c = a(window).height(); h = g.clientX; k = g.clientY; e = g.pageX; f = g.pageY; h + a(b).width() >= d && (e = e - a(b).width() - 5); k + a(b).height() >= c && (f = f - a(b).height() - 5); a("html").on({ contextmenu: function (c) { 3 == c.which && a(b).css({ left: e, top: f }).show() }, click: function () { a(b).hide() } }) }) }, disabledContextMenu: function () { window.oncontextmenu = function (e) { // 阻止默认事件 e.preventDefault(); return !1 } } }) })(jQuery); $(function () { for (var a = navigator.userAgent, b = "Android;iPhone;SymbianOS;Windows Phone;iPad;iPod".split(";"), d = !0, c = 0; c < b.length; c++) if (0 < a.indexOf(b[c])) { d = !1; break } d && ($.mouseMoveShow(".usercm"), $.disabledContextMenu()) }); const potplayer = document.querySelector(".potplayer"); const aa2p = document.querySelector(".aa2p"); const videoUrl = videoElement.src; potplayer.addEventListener("click", function () { window.location.href = `potplayer://${videoUrl}`; // 暂停播放 videoElement.pause(); }) aa2p.innerHTML = `${GM_getValue("check") ? "关闭自动跳转" : "开启自动跳转"}`; aa2p.addEventListener("click", function () { const check = GM_getValue("check") ?? false; if (check) { GM_setValue("check", false); aa2p.innerHTML = `开启自动跳转`; } else { GM_setValue("check", true); aa2p.innerHTML = `关闭自动跳转`; } }) } } })();