Greasy Fork is available in English.

Send Server

将当前页面的网址发送到指定的服务器,服务器地址信息需要再代码中修改以适合自己使用!

// ==UserScript==
// @name         Send Server
// @namespace    https://github.com/RANSAA
// @version      0.0.2
// @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/1371786/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==
/**
 * 目前支持的参数:
 * 
 * url: 当前页面网址
 * 
 * title:当前页面标题
 * 
 * four_color_av_m3u8:四色AV中的m3u8视频地址
 * 
 **/ 




/**
 * 配置信息,可更具需求更改配置
 **/
const SERVER_CONFIG = {
    host: "127.0.0.1",          //服务器地址
    port: "80",                 //服务器端口,直接使用”“不指定端口
    method: "POST",             //请求方式
    scheme: "http",             //协议类型
    taskAdd: "task/add",     //yt-dlp 任务添加API Query Path路劲地址
};



/**
 * 将参数组装成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)
}



(function() {
    'use strict';
    TKBaseSDK.initToast();
    addSendServerButton();
})();




// -------------------------------Setup UI-------------------------------
function addSendServerButton(){
    //添加style
    TKBaseSDK.addButtonStyle();

    //每隔button的高为44px

    //创建Send URL按钮
    let sendURL = TKBaseSDK.createItemButton("Send URL","90px");
    //定义的是事件被触发后要做的事情
    sendURL.addEventListener("click", function() {
        sendLocationURL();
    });


    //创建Copy URL按钮
    let copyURL = TKBaseSDK.createItemButton("Copy URL","134px");
    //定义的是事件被触发后要做的事情
    copyURL.addEventListener("click", function() {
        copyLocationURL();
    });


    //创建Copy M3u8按钮
    let copyM3u8 = TKBaseSDK.createItemButton("Copy M3U8","178px");
    //定义的是事件被触发后要做的事情
    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-------------------------------

/**
 * 发送数据当前页面的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;
	TKBaseSDK.copyToClipBoard(url);
    TKBaseSDK.showToast("复制成功!",1);
}


/**
 * 获取并拷贝m3u8链接
 **/ 
function copyM3u8Link(){
    let m3u8Url = getFourColorAVM3u8Url();
    TKBaseSDK.copyToClipBoard(m3u8Url);

    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-------------------------------