You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:12:43