您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Anime2Potplayer,把浏览器播放的动漫在Potplayer打开,这样就可以使用SVP4补帧!
当前为
// ==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 // ==/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", ` <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> `); // 右键菜单 var menu = document.createElement("div"); // 插入自定义css document.head.insertAdjacentHTML("beforeend", ` <style> a {text-decoration: none;} div.usercm{background-repeat:no-repeat;background-position:center center;background-size:cover;background-color:#fff;font-size:13px!important;width:160px;-moz-box-shadow:1px 1px 3px rgba (0,0,0,.3);box-shadow:0px 0px 15px #333;position:absolute;display:none;z-index:10000;opacity:0.9; border-radius: 8px;} div.usercm ul{list-style-type:none;list-style-position:outside;margin:0px;padding:0px;display:block} div.usercm ul li{margin:0px;padding:0px;line-height:35px;} div.usercm ul li a{color:#666;padding:0 15px;display:block} /* div.usercm ul li a:hover{color:#fff;background:rgba(170,222,18,0.88)} */ div.usercm ul li a:hover{color:#fff;background:rgba(15, 120, 233, 0.88)} /* 蓝色 */ div.usercm ul li a i{margin-right:10px} a.disabled{color:#c8c8c8!important;cursor:not-allowed} a.disabled:hover{background-color:rgba(255,11,11,0)!important} div.usercm{background:#fff !important;} </style> )`); /* 右键菜单 */ menu.innerHTML = ` <div class="usercm" style="left: 199px; top: 5px; display: none;"> <ul> <li><a href="/"><i class="fa fa-home fa-fw"></i><span>首页</span></a></li> <li><a href="javascript:void(0);" onclick="'' == (window.getSelection ? window.getSelection() : document.selection.createRange().text) ? console.log() : document.execCommand('Copy')"><i class="fa fa-copy fa-fw"></i><span>复制</span></a></li> <li><a href="javascript:history.go(1);"><i class="fa fa-arrow-right fa-fw"></i><span>前进</span></a></li> <li><a href="javascript:history.go(-1);"><i class="fa fa-arrow-left fa-fw"></i><span>后退</span></a></li> <li style="border-bottom:1px solid gray"><a href="javascript:window.location.reload();"><i class="fa fa-refresh fa-fw"></i><span>重载网页</span></a></li> <li><a href="javascript:void(0);" class="potplayer"><i class="fa fa-arrow-right fa-fw"></i><span>Potplayer</span></a></li> <li><a href="javascript:void(0);" class="aa2p"><i class="fa fa-arrow-right fa-fw"></i><span>自动跳转</span></a></li> <li><a href="https://blog.ciy.cool"><i class="fa fa-pencil-square-o fa-fw"></i><span>关于我</span></a></li> </ul> </div> `; 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 = `<i class="fa fa-arrow-right fa-fw"></i><span>${GM_getValue("check") ? "关闭自动跳转" : "开启自动跳转"}</span>`; aa2p.addEventListener("click", function () { const check = GM_getValue("check") ?? false; if (check) { GM_setValue("check", false); aa2p.innerHTML = `<i class="fa fa-arrow-right fa-fw"></i><span>开启自动跳转</span>`; } else { GM_setValue("check", true); aa2p.innerHTML = `<i class="fa fa-arrow-right fa-fw"></i><span>关闭自动跳转</span>`; } }) } } })();