Greasy Fork

Greasy Fork is available in English.

iKun助手

小黑子,露出鸡脚了吧!

当前为 2022-12-28 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         iKun助手
// @namespace    https://github.com/PeterXiong720/BlackKun/
// @require      https://unpkg.com/cnchar/cnchar.min.js
// @version      114.514.3
// @license      MIT
// @description  小黑子,露出鸡脚了吧!
// @author       PeterXiong720
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @run-at       document-start
// ==/UserScript==
// noinspection NonAsciiCharacters

// 是否开启调试模式
const Debug = false;

// 调试输出函数
function debug(...args) {
    if (!Debug) {
        return;
    }

    for (let str of args) {
        try {
            console.log((str));
        } catch (e) {
            console.log(JSON.stringify(str));
        }
    }
}

// 是否开启无差别模式
// 警告:开启后会替换所有读音为“ji”的汉字,可能会严重影响阅读,请谨慎开启!!!
const enablePlusMode = false;

// http get
function httpGet(aUrl, aCallback) {
    return new Promise((resolve, reject) => {
        const anHttpRequest = new XMLHttpRequest();
        let times = 0;
        anHttpRequest.onreadystatechange = function () {
            if (anHttpRequest.responseText !== '') {
                resolve(`${anHttpRequest.responseText}`);

            } else if (times >= 3) {
                resolve('{}');
            }
            times++;
        }

        anHttpRequest.open('GET', aUrl, true);
        anHttpRequest.send(null);
    });
}

const body = document.getElementsByTagName('body')[0];

// iKun语录词典
const dic = {
    '是不是想吃牢饭': '食不食香翅捞饭',
    '想吃牢饭是不是': '香翅捞饭食不食',

    '是不是有病': '食不食油饼',
    '有病是不是': '油饼食不食',

    '是不是想踩缝纫机': '食不食香菜凤仁鸡',
    '想踩缝纫机是不是': '香菜凤仁鸡食不食',

    '想吃牢饭': '香翅捞饭',
    '想进监狱': '香精煎鱼',
    '想踩缝纫机': '香菜凤仁鸡',
    '真没有素质': '蒸梅油酥汁',
    '没有素质': '梅油酥汁',
    '素质真高': '树枝蒸糕',
    '露出鸡脚': '卤出鸡脚',
    '无语真下头': '乌鱼蒸虾头',

    '速删': '苏珊',
    '有病': '油饼',
    '缝纫机': '凤仁鸡',
    '监狱': '煎鱼',
    '牢饭': '捞饭',
    '素质': '树枝',
    '理智': '荔枝',
    '普信男': '蒲杏楠',
    '真下头': '蒸虾头',
    '下头': '虾头',

    '鸡': '只因',
    '机': '只因',
    '基': '只因'
};

function checkWord(str) {
    debug(dic);
    for (let word of Object.keys(dic)) {
        debug(word);
        if (str.indexOf(word) !== -1) {
            debug('已发现可替换词汇');
            return true;
        }
    }

    return false;
}

function changeWord(str) {
    let retStr = str;
    for (let key in dic) {
        debug(key);
        debug(dic[key]);
        retStr = retStr.replaceAll(key, dic[key]);
    }

    return retStr;
}

function getChinese(strValue) {
    if (strValue !== null && strValue !== '') {
        const reg = /[\u4e00-\u9fa5]/g;
        // @ts-ignore
        return strValue.match(reg).join('');
    }
    return '';
}

function chicken() {
    if (checkWord(body.innerHTML)) {
        body.innerHTML = changeWord(body.innerHTML);

        console.log('小黑子,露出鸡脚了吧!');
    }

    setTimeout(chicken, 10000);
}

function chickenPlus() {
    let chi = getChinese(body.innerHTML);
    debug(chi);

    for (let char of chi) {
        debug(char);
        let pingyin = cnchar.spell(char, 'tone', 'low');
        if (pingyin === 'jī') {
            body.innerHTML = body.innerHTML.replaceAll(char, '只因');
        }
    }

    setTimeout(chickenPlus, 12000);
}

(async function () {
    // 加载网页后先执行一次再进入延时循环
    setTimeout(chicken, 100);
    if (enablePlusMode) {
        setTimeout(chickenPlus, 100);
    }

    console.log('iKun助手 v114.514.3 作者:Bilili@FingerInMyAss');
    console.log('https://space.bilibili.com/358524238');

    // 加载云词库
    let json = await httpGet('https://raw.githubusercontent.com/PeterXiong720/BlackKun/master/data.json');
    debug(json);
    let remoteData = JSON.parse(json);
    for (let key in remoteData) {
        debug(`key: ${key}, value: old- ${dic[key]} new- ${remoteData[key]}`);
        dic[key] = remoteData[key];
    }
})();