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.13
// @description  Replace Kangxi radicals with normal characters based on data from Google Sheets
// @author       You
// @match        *://*/*
// @exclude      /^[^:/#?]*:\/\/([^#?/]*\.)?greasyfork\.org(:[0-9]{1,5})?\/.*$/
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

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

    // Google Sheets の公開URL
    var spreadsheetUrl = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vRILmNrR6VAFvk4bLMXSlByV1vmW3Fcvg8PZWGXObx5W4v8whohjDvvoS8N5IzJ2e3WqXVI4SdXJLzg/pub?gid=0&single=true&output=csv';

    // Google Sheets からデータを取得して処理する関数
    async function processDataFromGoogleSheets() {
        try {
            // スプレッドシートからデータを取得
            var response = await fetch(spreadsheetUrl);
            var data = await response.text();

            // データの処理を行う
            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 fetching 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() {
        processDataFromGoogleSheets().then(replaceAllText);
    });
    // スクロールなどで新たなテキストが読み込まれた時にもテキストを置き換える
    window.addEventListener('scroll', replaceAllText);
    window.addEventListener('resize', replaceAllText);
})();

QingJ © 2025

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