CJK部首/康熙部首文字置き換え表示スクリプト

Replace Kangxi radicals with normal characters based on data from Google Sheets

当前为 2024-03-03 提交的版本,查看 最新版本

// ==UserScript==
// @name         CJK部首/康熙部首文字置き換え表示スクリプト
// @namespace    http://tampermonkey.net/
// @version      0.15
// @description  Replace Kangxi radicals with normal characters based on data from Google Sheets
// @author       You
// @match        *://*/*
// @exclude      /^[^:/#?]*:\/\/([^#?/]*\.)?greasyfork\.org(:[0-9]{1,5})?\/.*$/
// @grant        GM_xmlhttpRequest
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // グローバル変数としてデータを保持
    var kangxiRadicals = {};

    // Google Sheets の公開URL
    var spreadsheetUrl = 'https://docs.google.com/spreadsheets/d/1rKTSCyWkeMEJ-tp9Fr95UjH-NL-xliVX-gu69-WnX3c/edit#gid=0';

    // Google Sheets からデータを取得して処理する関数
    function processDataFromGoogleSheets(data) {
        try {
            // データの処理を行う
            var lines = data.split('\n');
            for (var i = 1; i < lines.length; i++) {
                var parts = lines[i].split(',');
                if (parts.length >= 5) {
                    kangxiRadicals[parts[3]] = parts[4];
                }
            }
        } catch (error) {
            console.error('Error processing data from Google Sheets:', error);
        }
    }

    // ページ内のテキストを置き換える関数
    function replaceText(node) {
        if (node.nodeType === Node.TEXT_NODE && /\p{Unified_Ideograph}/u.test(node.nodeValue)) {
            var text = node.nodeValue;
            for (var radical in kangxiRadicals) {
                var regex = new RegExp(radical, 'g');
                text = text.replace(regex, kangxiRadicals[radical]);
            }
            node.nodeValue = text;
        } else if (node.nodeType === Node.ELEMENT_NODE) {
            for (var i = 0; i < node.childNodes.length; i++) {
                replaceText(node.childNodes[i]);
            }
        }
    }

    // ページ内の全てのテキストを置き換える
    function replaceAllText() {
        replaceText(document.body);
    }

    // ページの読み込みが完了した時にデータを処理し、テキストを置き換える
    window.addEventListener('load', function() {
        GM_xmlhttpRequest({
            method: 'GET',
            url: spreadsheetUrl,
            onload: function(response) {
                processDataFromGoogleSheets(response.responseText);
                replaceAllText();
            },
            onerror: function(error) {
                console.error('Error fetching data from Google Sheets:', error);
            }
        });
    });
    // スクロールなどで新たなテキストが読み込まれた時にもテキストを置き換える
    window.addEventListener('scroll', replaceAllText);
    window.addEventListener('resize', replaceAllText);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址