请求修改Tampermonkey脚本:点击链接执行Windows命令并优化标签问题
修改Tampermonkey脚本实现点击AceStream链接直接启动MPV(Windows系统)
解决思路
浏览器脚本无法直接执行系统命令,因此需要借助本地HTTP服务器中转请求触发MPV启动;同时修复原有脚本打开空白标签页的问题。
步骤1:创建本地中转服务器(Python脚本)
编写简单的Python本地服务器,用于接收脚本请求并调用MPV:
from http.server import BaseHTTPRequestHandler, HTTPServer import subprocess import urllib.parse class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): # 解析请求中的AceStream链接 query_params = urllib.parse.parse_qs(urllib.parse.urlparse(self.path).query) if 'url' in query_params: acestream_link = query_params['url'][0] # 启动MPV(若MPV不在系统PATH中,替换为完整路径,如'C:/Program Files/MPV/mpv.exe') subprocess.Popen(['mpv', '--profile=acestream', acestream_link], shell=True) # 返回成功响应 self.send_response(200) self.end_headers() self.wfile.write(b"MPV启动请求已发送") else: self.send_response(400) self.end_headers() self.wfile.write(b"缺少必要的url参数") def run_server(port=8000): server_addr = ('', port) httpd = HTTPServer(server_addr, RequestHandler) print(f"本地服务器已启动,监听端口{port}...") httpd.serve_forever() if __name__ == '__main__': run_server()
保存为mpv_server.py,运行该脚本(需提前安装Python),保持窗口后台运行。
步骤2:修改Tampermonkey脚本
替换原有脚本,移除空白标签页逻辑,改为向本地服务器发送请求:
// ==UserScript== // @name Webui Player Replacements // @namespace http://tampermonkey.net/ // @description 转换链接为AceStream格式并点击启动MPV // @version 0.2 // @match http://{DOMAIN_NAME}/* // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; const links = document.querySelectorAll('a'); links.forEach(el => { const originalHref = el.getAttribute('href'); const trimmedPath = originalHref.split('?')[0]; const streamId = trimmedPath.replace('http://127.0.0.1:6878/webui/player/', ''); const acestreamUrl = `acestream://${streamId}`; el.setAttribute('href', acestreamUrl); // 替换点击事件,阻止默认跳转并请求本地服务器 el.onclick = function(event) { event.preventDefault(); GM_xmlhttpRequest({ method: "GET", url: `http://localhost:8000/?url=${encodeURIComponent(acestreamUrl)}`, onload: () => console.log("已请求启动MPV") }); }; }); })();
关键说明
- 空白标签页问题:移除了原有脚本中的
window.open调用,通过event.preventDefault()阻止默认跳转,彻底解决该问题。 - MPV路径:若MPV未添加到系统环境变量
PATH中,需在Python脚本里将'mpv'替换为MPV的完整安装路径。 - 服务器运行:每次使用前需先启动
mpv_server.py,保持后台运行。
内容的提问来源于stack exchange,提问作者Jose Hidalgo
相关产品推荐
相关产品推荐

