free-ss.site 生成全部链接

将所有分享ss链接全部显示,方便统一复制使用

Από την 27/02/2018. Δείτε την τελευταία έκδοση.

// ==UserScript==
// @name         free-ss.site 生成全部链接
// @version      0.3.6
// @description  将所有分享ss链接全部显示,方便统一复制使用
// @author       dolacmeo
// @match        https://free-ss.site/
// @match        https://free-ss.gq/
// @require      https://cdn.jsdelivr.net/npm/js-base64@2.4.3/base64.min.js
// @run-at       document-end
// @namespace http://tampermonkey.net/
// ==/UserScript==
// @0.3.6 2018-2-27   增加镜像站 free-ss.gq
// @0.3.5 2018-2-24   主站代码更新,旧版已不可用。代码中加入了干扰隐藏表格。新年第一次摸鱼~
// @0.3.4 2018-2-13   整理脚本代码,年前最后一次摸鱼。祝大家新春快乐~
// @0.3.3 2018-2-6    主站代码更新,旧版已不可用
// @0.3.2 2018-2-2    点击二维码按钮生成SS、SSR两种链接与二维码,方便使用
// @0.3.1 2018-2-2    可进行多选,再生成链接,不选择生成所有
// @0.3   2018-2-2    随站更新,现从表格直接读取数据生成链接
// @0.2.1 2018-1-31   修复bug,备注名称加入当前日期
// @0.2   2018-1-31   不直接显示连接,变为两个复制按钮,点击即可复制所有链接,新增SSR链接(带备注与分组信息)
// @0.1   2018-1-26   成功打开页面后直接展示所有ss链接

// 获取table ID
var ss_id;
$("table").each(function (){
    var new_re = new RegExp('#'+$(this).attr("id"), 'g');
    if ($('html').html().match(new_re).length == 3) {
        ss_id = '#'+$(this).attr("id");
    }
});

var today_date = new Date();
var date_str = today_date.toISOString().slice(0,10)+'_';

var ss_links_str = "",ssr_links_str = "";

var gen = {
    // 将数据处理成链接
    datas: function () {
        var ssdatas;
        if ($(ss_id).DataTable().rows('.selected').data().length) {
            ssdatas = $(ss_id).DataTable().rows('.selected').data();
        } else {
            ssdatas = $(ss_id).DataTable().data();
        }
        ss_links_str = "";
        ssr_links_str = "";
        $.each(ssdatas, function(i, data){
            var ss = gen.ss(data),
                ssr =gen.ssr(data);
            $("#ss-links").append(ss+'<br>');
            $("#ssr-links").append(ssr+'<br>');
            ss_links_str = ss_links_str + ss + '\n';
            ssr_links_str = ssr_links_str + ssr + '\n';
        });
        return ssdatas;
    },
    // 生成ss链接
    ss: function (data) {
        return 'ss://'+Base64.encodeURI(data[4]+':'+data[3]+'@'+data[1]+':'+data[2])+'#'+data[6]+'('+date_str+data[5]+')';
    },
    // 生成ssr链接
    ssr: function (data) {
        return 'ssr://'+Base64.encodeURI(data[1]+':'+data[2]+':origin:'+data[4]+':plain:'+Base64.encodeURI(data[3])+
                                         '/?remarks='+Base64.encodeURI(data[6]+'('+date_str+data[5]+')')+'&group=ZnJlZS1zcy5zaXRl');
    },
    qr: function (data) {
        var ss = gen.ss(data),
            ssr =gen.ssr(data);
        var qrcode = $('#qrcode');
        qrcode.children('canvas').remove();
        qrcode.children('br').remove();
        qrcode.children('a').remove();
        qrcode.qrcode({background:'#FFFFFF',ecLevel:'M',text:ss});
        qrcode.append('<a href="'+ss+'">SS </a>');
        qrcode.qrcode({background:'#FFFFFF',ecLevel:'M',text:ssr});
        qrcode.append('<a href="'+ssr+'">SSR</a>');
    }
};

// 载入HTML
function init_html(){
    $(".main").append('<textarea id="input" style="position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;"> </textarea>');
    $(".main").append("<p id='ss-links' style='border-style:double;text-align:left;display:none'></p>");
    $(".main").append("<p id='ssr-links' style='border-style:double;text-align:left;display:none'></p>");
    $(".main").prepend("<ul><li class='aff'><p style='margin: 0;' id='link_num'></p></li>"+
                       "<li class='aff'><button id='btn_ss'>复制SS链接</button></li>"+
                       "<li class='aff'><button id='btn_ssr'>复制SSR链接</button></li>"+
                       "<li class='aff'>"+ss_id+"</li></ul>");
    $("#link_num").html("等待数据加载,请稍后... <span id='sel'></span>");
}

function ready_ss() {
    $(ss_id+' tbody').on( 'click', 'tr', function () {
        $(this).toggleClass('selected');
        $("#sel").html($(ss_id).DataTable().rows('.selected').data().length);
    });
    $(ss_id+' tbody').on('click','i',function(){
        gen.qr($(ss_id).DataTable().row($(this).closest('tr')).data());
    });
    function copy(str){
        gen.datas();
        var input = document.getElementById("input");
        input.value = str; // 修改文本框的内容
        input.select(); // 选中文本
        document.execCommand("copy"); // 执行浏览器复制命令
        alert("链接复制成功");
    }
    $("#link_num").html("复制之后可使用剪贴板批量导入 (点击可选,当前已选择 <span id='sel'>0</span> 条),共"+gen.datas().length+"条");
    document.getElementById('btn_ss').addEventListener('click',function(ev){
        copy(ss_links_str);
    });
    document.getElementById('btn_ssr').addEventListener('click',function(ev){
        copy(ssr_links_str);
    });
}

(function() {
    'use strict';
    init_html();
    $(document).ready(function() {
        // 等待3s,数据加载后执行
        setTimeout(function(){
            var ss_table = $(ss_id).DataTable();
            ready_ss();
        },3000);
    });
})();