997596gmail.com / Resilio Sync X

// ==UserScript==
// @name         Resilio Sync X
// @version      0.1
// @description  Resilio Sync Batch Add Link, and automaticaly click OK button.
// @author       SnowstarCyan
// @match        http://127.0.0.1:8888/gui/
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 批量添加秘钥
    var batch_connect = function(CODE, PATH){
        utWebUI.addForceSyncFolder(PATH, CODE, false, void 0, _=>undefined);
    };

    var batch_batch_connect = function(input){
        var matches = input.match(/^\S+\s+.+$/mg).map(x=>x.match(/^(\S+)\s+(.+?)\s*$/m));
        matches.map(match => batch_connect(match[1], match[2]));
    };

    // 生成操作界面
    var appChild = function(itemSelector, html){
        var tmpdiv = document.createElement("div");
        tmpdiv.innerHTML = html;
        console.log(itemSelector);
        console.log($("itemSelector"));
        $(itemSelector)[0].appendChild(tmpdiv.children[0]);
    };

    var main = function(){
        if( !$("#add-folder-btn-group")[0] ){
            return true; // need re call
        }

        appChild(
            "#add-folder-btn-group", '\
<button type="button" class="btn btn-primary" id="open-batch-connection-dialog" data-original-title="" title="" style="\
    font-size: 16px;\
    font-weight: 400;\
    text-transform: capitalize;\
    line-height: 16px;\
    width: auto;\
    letter-spacing: .5pt;\
    padding: 9px 24px 20px 16px;\
    float: left;\
">                    <span class="mycon mycon-add-advanced-folder" style="\
"></span>            批量添加秘钥、链接    </button>\
            ');


        appChild(
            "body", '\
            <div tabindex="-1" role="dialog" aria-hidden="false" id="manual-batch-connection-dialog" class="modal fade" aria-labelledby="a16758100000" style="display: block; visibility: hidden"><div class="modal-backdrop fade" style="height: 857px;"></div>\
                <div class="modal-dialog">\
                    <div class="modal-content">\
                        <div class="modal-header" id="a16758100000">\
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true" id="manual-batch-connection-close">\
                                <span class="mycon mycon-close"></span>\
                            </button>\
                            <h5>批量添加文件夹</h5>\
                        </div>\
                        <div class="modal-body">\
                            <div class="form-group">\
                                <label for="manual-connection-key">格式:一行一个条目,每个条目由 秘钥 目录路径 组成。</label><br>\
                                <br>\
                                <div class="input-group" style="\
                display: block;\
                /* height: 0em; */\
            ">\
                                    <textarea id="manual-batch-connection-keys" type="text" class="form-control" placeholder="AXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   D:\\sync\\同步文件夹A-读写权限\nBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   D:\\sync\\同步文件夹B-只读\n\n格式:(秘钥或链接) (文件夹目录)" data-submit-target="#manual-connection-next" style="font-family: monospace; height: 10em;margin-bottom: 1em;"></textarea>\
                                    \
                                </div>\
                            <div class="input-group" style="\
                text-align: right;\
            "><span class="input-group-btn" style="">\
                                        <button id="manual-batch-connection-next" class="btn btn-sm btn-default" type="button">批量添加</button>\
              </span></div></div>\
                            \
                            \
                        </div>\
                    </div>\
                </div>\
            </div>\
            ');


        // 显示批量添加秘钥面板
        var show_manual_batch_connection_dialog = function(){
            $("body")[0].classList = "modalOpen modal-open";
            $("#manual-batch-connection-dialog")[0].classList                   = "modal fade in";
            $("#manual-batch-connection-dialog > .modal-backdrop")[0].classList = "modal-backdrop fade in";
            $("#manual-batch-connection-dialog")[0].style.visibility            = null;
        };

        var close_manual_batch_connection_dialog = function(){
            $("body")[0].classList = "";
            $("#manual-batch-connection-dialog")[0].classList                   = "modal fade";
            $("#manual-batch-connection-dialog > .modal-backdrop")[0].classList = "modal-backdrop fade";
            $("#manual-batch-connection-keys")[0].value                         = "";
            $("#manual-batch-connection-dialog")[0].style.visibility            = "hidden";
        };

        // 监听面板动作
        $("#open-batch-connection-dialog")[0].onclick   = show_manual_batch_connection_dialog;
        $("#manual-batch-connection-dialog > .modal-backdrop")[0].onclick = close_manual_batch_connection_dialog;
        $("#manual-batch-connection-close")[0].onclick  = close_manual_batch_connection_dialog;
        $("#manual-batch-connection-next")[0].onclick   = function(){
            var input = $("#manual-batch-connection-keys")[0].value;
            close_manual_batch_connection_dialog();
            batch_batch_connect(input);
        };

        // 附加功能:自动点击确认按钮
        setInterval(function(){
            var btn = $("#okButton")[0];
            if( btn ){
                btn.click();
                btn.id = "okButtonClicked";
            }
        }, 32);

    };
    // 延迟执行
    var timerCallMain = setInterval(function(){
        if(!main()){
            clearInterval(timerCallMain);
        }
    }, 32);
})();