Greasy Fork

Greasy Fork is available in English.

蓝湖

try to take over the world!

当前为 2020-11-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         蓝湖
// @namespace    http://tampermonkey.net/
// @version      0.2.11
// @description  try to take over the world!
// @author       HolmesZhao
// @match        https://lanhuapp.com/web/
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    var colorJson =  {}
    var colorMMJJson = {
        "BackgroundTitle": "FFFFFF",
        "Tip_Strong": "FFA317",
        "Disable": "B8BBC2",
        "LinkText": "3777FF",
        "Tip_Success": "07C16A",
        "NavigationBarBackground": "F9F9F9",
        "AccessoryTitle": "8F9396",
        "MainTitle": "292F3D",
        "Tip_Failure": "F8554F",
        "Tip_Weak": "FFF6D4",
        "Background": "F2F2F2",
        "Separator": "EEEEEE"
    }
    // 错题 app 的颜色
    var colorStudyJson = {
        "BackgroundTitle": "FFFFFF",
        "Tip_Strong": "FFA317",
        "Disable": "B8BBC2",
        "LinkText": "3777FF",
        "Tip_Success": "07C16A",
        "NavigationBarBackground": "FAFCFF",
        "AccessoryTitle": "8F9396",
        "MainTitle": "292F3D",
        "Tip_Failure": "F8554F",
        "Tip_Weak": "FFF6D4",
        "Background": "F5F7FA",
        "Separator": "EDEEF0",
        "Accessory1": "FFB91A",
        "Accessory2": "FF6904",
        "TextButtonMain": "0687FF",
        "VIPFont": "994D12"
    }

    var fontJson = {
        "MMRegularFontName": "苹方-简 常规体",
        "MMMediumFontName": "苹方-简 中黑体",
        "MMSemiboldFontName": "苹方-简 中粗体"
    }

    var fontSizeJson = {
        "MMSpecialBigFontSize": "34pt",
        "MMSpecialMiddleFontSize": "24pt",
        "MMSpecialSmallFontSize": "21",
        "MMTitleFontSize": "18pt",
        "MMTitleTabSelectFontSize": "16pt",
        "MMTitleTabNormalFontSize": "15pt",
        "MMContentFontSize": "14pt",
        "MMAccessoryFontSize": "13pt",
        "MMDescriptionFontSize": "12pt",
        "MMLabelFontSize": "11pt",
        "MMMarkFontSize": "10pt",
    }

    var color = '';
    var font = '';
    var fontSize = '';
    var app = 'mmj';

    function changeColorText() {
        var copy_texts = document.getElementsByClassName('copy_text');
        for (let index = 0; index < copy_texts.length; index++) {
            const element = copy_texts[index];

            for (const key in colorJson) {
                if (colorJson.hasOwnProperty(key)) {
                    const value = colorJson[key];
                    if (element.innerText.indexOf(value) != -1 ||
                        element.innerText.indexOf(value.toLowerCase()) != -1) {
                        element.innerText = key;
                        color = key;
                        return;
                    }
                }
            }

        }
    }

    function changeFontText() {
        var layer_names = document.getElementsByClassName('layer_name');
        for (let index = 0; index < layer_names.length; index++) {
            const element = layer_names[index];
            for (const key in fontJson) {
                if (fontJson.hasOwnProperty(key)) {
                    const value = fontJson[key];
                    if (element.innerText.indexOf(value) != -1) {
                        element.innerText = key;
                        font = key;
                        return;
                    }
                }
            }
        }
    }

    function changeFontSizeText() {
        var item_titles = document.getElementsByClassName('item_title');
        for (let index = 0; index < item_titles.length; index++) {
            const element = item_titles[index];
            if (element.innerText.indexOf('字号') != -1) {
                let sizeDom = element.parentElement.getElementsByClassName('two')[0];
                for (const key in fontSizeJson) {
                    if (fontSizeJson.hasOwnProperty(key)) {
                        const value = fontSizeJson[key];
                        if (sizeDom.innerText.indexOf(value) != -1) {
                            sizeDom.innerText = key;
                            fontSize = key;
                            return;
                        }
                    }
                }
            }
        }
    }

    function changeText(params) {
        changeColorText();
        changeFontText();
        changeFontSizeText();
    }

    function addButton(name, marginLeft, fun) {
        var txt = document.createTextNode(name);
        var btn = document.createElement('button');
        btn.className = 'mmbutton';
        btn.style = "z-index: 9999; font-size: large; position: fixed; top: 0pt; left: " + (marginLeft) + "px;";
        btn.onclick = fun;
        btn.appendChild(txt);
        document.body.appendChild(btn);
        return btn.offsetWidth + btn.offsetLeft;
    };

    function remove() {
        let style = document.getElementsByClassName('mu-paper mu-drawer mu-paper-round mu-paper-2 open right')[0].getAttribute('style');
        if (style.indexOf('display') == -1) {
            drawerStyle = style;
            document.getElementsByClassName('mu-paper mu-drawer mu-paper-round mu-paper-2 open right')[0].setAttribute('style', 'display: none;');
        } else {
            document.getElementsByClassName('mu-paper mu-drawer mu-paper-round mu-paper-2 open right')[0].setAttribute('style', drawerStyle);
        }
    };

    function getFont() {
        font = font.split('Font')[0];
        // [UIFont MMMediumFontWithFontSize:MMTitleFontSize]
        let fontCode = "[UIFont " + font + "FontWithFontSize:"+ fontSize +"]";
        let btn = document.getElementsByClassName('mmbutton')[3];
        let btnText = btn.innerText;
        let textarea = "<textarea id=\"copyFont\" style=\"opacity: 0;\">" + fontCode + "</textarea>";
        btn.innerHTML = textarea;
        var element = document.getElementById("copyFont");
        element.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令
        btn.innerText = btnText
    };
    function getSwiftFont() {
        font = font.split('Font')[0];
        // .mediumFont(with: .Content)
        let fontCode = "." + 
                       font.charAt(2).toLowerCase() + 
                       font.slice(3) + 
                       "Font(with: ." + 
                       fontSize.slice(2, -8) + ")"
        let btn = document.getElementsByClassName('mmbutton')[5];
        let btnText = btn.innerText;
        let textarea = "<textarea id=\"copyFont\" style=\"opacity: 0;\">" + fontCode + "</textarea>";
        btn.innerHTML = textarea;
        var element = document.getElementById("copyFont");
        element.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令
        btn.innerText = btnText
    };

    function getColor() {
        color = color.split('_').join('');
        color = color.charAt(0).toLowerCase() + color.slice(1);
        // UIColor.mm_mainTitleColor
        let colorCode = "UIColor.mm_" + color + "Color";
        let btn = document.getElementsByClassName('mmbutton')[4];
        let btnText = btn.innerText;
        let textarea = "<textarea id=\"copyColor\" style=\"opacity: 0;\">" + colorCode + "</textarea>";
        btn.innerHTML = textarea;
        var element = document.getElementById("copyColor");
        element.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令
        btn.innerText = btnText
    }
    function getSwiftColor() {
        color = color.split('_').join('');
        color = color.charAt(0).toLowerCase() + color.slice(1);
        // .mm_mainTitle()
        let colorCode = "UIColor.mt." + color;
        let btn = document.getElementsByClassName('mmbutton')[6];
        let btnText = btn.innerText;
        let textarea = "<textarea id=\"copyColor\" style=\"opacity: 0;\">" + colorCode + "</textarea>";
        btn.innerHTML = textarea;
        var element = document.getElementById("copyColor");
        element.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令
        btn.innerText = btnText
    }

    function changeApp() {
        let btn = document.getElementsByClassName('mmbutton')[0];
        let key = 'mbkj'
        app = localStorage.getItem(key)
        if (app == '' || app == null) {
            app = 'mmj'   
        }
        switch (app) {
            case 'mmj':
                btn.innerText = '错题APP'
                colorJson = colorStudyJson
                localStorage.setItem(key, 'study');
                break;
            case 'study':
                btn.innerText = '喵喵机'
                colorJson = colorMMJJson
                localStorage.setItem(key, 'mmj');
                break;
            default:
                break;
        }
    }

    function appName() {
        let key = 'mbkj'
        app = localStorage.getItem(key)
        if (app == '' || app == null) {
            app = 'mmj'   
        }
        switch (app) {
            case 'mmj':
                return '喵喵机'
            case 'study':
                return '错题APP'
            default:
                return ""
        }
    }

    var drawerStyle = '';
    var btnLeft = screen.width/5;
    var marginLeft = 30;
    btnLeft += marginLeft;
    btnLeft = addButton(appName(), btnLeft, changeApp);
    btnLeft += marginLeft;
    btnLeft = addButton('点击开关抽屉', btnLeft, remove);
    btnLeft += marginLeft;
    btnLeft = addButton('点击更换文字', btnLeft, changeText);
    btnLeft += marginLeft;
    btnLeft = addButton('OC 字体', btnLeft, getFont);
    btnLeft += marginLeft;
    btnLeft = addButton('OC 颜色', btnLeft, getColor);
    btnLeft += marginLeft;
    btnLeft = addButton('Swift 字体', btnLeft, getSwiftFont);
    btnLeft += marginLeft;
    btnLeft = addButton('Swift 颜色', btnLeft, getSwiftColor);
})();