此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/494214/1371699/TKBaseSDK%20Test.js
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已经安装了用户样式管理器,让我安装!)
// ==UserScript==
// @name TKBaseSDK Test
// @namespace https://github.com/RANSAA
// @version 0.0.1
// @description 将当前页面的网址发送到指定的服务器,服务器地址信息需要再代码中修改以适合自己使用!
// @author sayaDev
// @license MIT License
// @icon data:image/png;base64,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
// @match http://*/*
// @match *://*/*
// @require https://update.greasyfork.org/scripts/494214/1371698/TKBaseSDK.js
// @grant unsafeWindow
// @grant GM_openInTab
// @grant GM_xmlhttpRequest
// @connect self //添加需要跨域不弹出用户选择页面的标注
// @connect localhost
// @connect 127.0.0.1
// @connect *
// @compatible chrome
// @compatible edge
// @compatible firefox
// @compatible opera
// @compatible safari
// @noframes
// ==/UserScript==
/**
* 配置信息,可更具需求更改配置
**/
const SERVER_CONFIG = {
host: "127.0.0.1", //服务器地址
port: "80", //服务器端口,直接使用”“不指定端口
method: "POST", //请求方式
scheme: "http", //协议类型
taskAdd: "task/add", //yt-dlp 任务添加API Query Path路劲地址
};
(function() {
'use strict';
TKBaseSDK.initToast();
addSendServerButton();
})();
// -------------------------------Setup UI-------------------------------
function addSendServerButton(){
//添加style
TKBaseSDK.addButtonStyle();
//每隔button的高为44px
//创建Send URL按钮
let sendURL = TKBaseSDK.createItemButton("Send URL","100px");
//定义的是事件被触发后要做的事情
sendURL.addEventListener("click", function() {
sendLocationURL();
});
//创建Copy URL按钮
let copyURL = TKBaseSDK.createItemButton("Copy URL","144px");
//定义的是事件被触发后要做的事情
copyURL.addEventListener("click", function() {
copyLocationURL();
});
//创建Copy M3u8按钮
let copyM3u8 = TKBaseSDK.createItemButton("Copy M3U8","188px");
//定义的是事件被触发后要做的事情
copyM3u8.addEventListener("click", function() {
copyM3u8Link();
});
let list = document.createElement("TKButtonList");
list.appendChild(sendURL);
list.appendChild(copyURL);
list.appendChild(copyM3u8);
document.body.appendChild(list);
}
// -------------------------------Setup UI-------------------------------
// -------------------------------Action-------------------------------
/**
* 将参数组装成JSON格式
* 获取当前需要的所有属性
* url:当前页面的url地址
* title:当前网页的标题
* four_color_av_m3u8:四色AV中播放页面中的m3u8链接--值为可选
**/
function loadParameterJSON(){
// //示例
// var json = {
// jsonrpc:'2.0',
// method:'aria2.addUri',
// id:url,
// params:[
// [url],
// ]
// }
// return JSON.stringify(json)
//当前网页地址
let url = window.location.href;
//当前网页标题
let title = document.title;
//四色AV中的m3u8链接
let four_color_av_m3u8 = getFourColorAVM3u8Url();
let json = {
"url": url,
"title": title,
"four_color_av_m3u8":four_color_av_m3u8
};
return JSON.stringify(json)
}
/**
* 发送数据当前页面的URL到指定服务器
*/
function sendLocationURL()
{
console.log(`Send Server`);
//服务器的地址
var serverUrl = SERVER_CONFIG.scheme + "://" + SERVER_CONFIG.host + ":" + SERVER_CONFIG.port + "/" + SERVER_CONFIG.taskAdd
if (SERVER_CONFIG.port === "" ) {
serverUrl = SERVER_CONFIG.scheme + "://" + SERVER_CONFIG.host + "/" + SERVER_CONFIG.taskAdd
}
//发送的参数数据
let data = loadParameterJSON();
console.log(`serverUrl: ${serverUrl}`);
console.log(`parameter: ${data}`);
//GM_xmlhttpRequest方式请求
GM_xmlhttpRequest({
method: SERVER_CONFIG.method,
url: serverUrl,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
data: data,
onload: function(response) {
console.log(response);
console.log(`readyState:${response.readyState}`);
console.log(`status:${response.status}`);
console.log(`statusText:${response.statusText}`);
console.log(`responseHeaders:\n${response.responseHeaders}`);
console.log(`responseText:${response.responseText}`);
if (response.status === 200) {
console.log(`Send URL Success: ${url}`);
TKBaseSDK.showToast("当前URL地址发送成功!",1);
} else {
console.log(`Send URL Error: ${url} statusText: ${response.statusText}`);
TKBaseSDK.showToast("当前URL地址发送失败!",0);
}
},
onerror: function(response) {
// 请求发生错误时执行
console.error("Request failed:", response);
let msg = `发送失败,Send Server服务地址:${response.finalUrl}`;
console.log(msg);
TKBaseSDK.showToastWtihTime(msg, 0, 4000);
}
});
}
/**
* 拷贝当前网页地址
**/
function copyLocationURL(){
//当前网页地址
let url = window.location.href;
//将magnet复制到剪切板
let transfer = document.createElement('input');
document.body.appendChild(transfer);
transfer.value = url;
//transfer.focus();
transfer.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
}
transfer.blur();
document.body.removeChild(transfer);
console.log('复制成功');
TKBaseSDK.showToast("复制成功!",1);
}
/**
* 获取并拷贝m3u8链接
**/
function copyM3u8Link(){
let m3u8Url = getFourColorAVM3u8Url();
//将magnet复制到剪切板
let transfer = document.createElement('input');
document.body.appendChild(transfer);
transfer.value = m3u8Url;
//transfer.focus();
transfer.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
}
transfer.blur();
console.log('复制成功');
TKBaseSDK.showToast("复制成功",2);
document.body.removeChild(transfer);
if (m3u8Url === "") {
TKBaseSDK.showToast("复制失败,没有找到M3U8链接!",0);
}else{
TKBaseSDK.showToast("复制成功!",1);
}
}
/**
* 获取四色AV中的m3u8链接地址
**/
function getFourColorAVM3u8Url(){
// Define a regular expression to match the playUrl variable pattern
const playUrlPattern = /var playUrl\s*=\s*"([^"]+)"/;
// Get all script tags on the page
const scripts = Array.from(document.getElementsByTagName('script'));
// Look for the script containing the playUrl variable
const matchedScript = scripts.find(script => playUrlPattern.test(script.textContent));
var m3u8Url = ""
// If found, extract the URL
if (matchedScript) {
const match = matchedScript.textContent.match(playUrlPattern);
m3u8Url = match && match[1];
console.log('m3u8 URL:', m3u8Url);
} else {
console.warn('m3u8 URL could not be found.');
}
return m3u8Url
}
// -------------------------------Action-------------------------------