スポンサーリンク

カクヨムのをクロスフォリオの[[rb:傍点>・・]]に変換するソース

カクヨムのルビ記法は

寿限無じゅげむ

のようになります。が、クロスフォリオは上の普通のルビはそのままいけるのですが、現状(2025.02.17現在)では「傍点」は対応していません。タイトルに有るように[[rb:傍点>・・]]のようにしなければならないようです。

そんなのいちいちやってられませんし、ヒューマンエラーの源泉でしかないので、ツールで一発でできるようにしてみました。とはいえ、完全個人用なので、おまじないの一つも入れてませんし、例外処理も入ってないのは御愛嬌。15分で書いたからねwww

用意するのは、なんかのエディタ(個人的にはVSCode)とPython実行環境だけです。この辺のやり方は調べてください。VSCode使うならこの辺が有用かと。

そして、たとえば「D:\python\xfolio」などのフォルダを作り、そこに「input」フォルダと「output」フォルダを作ります。そして「input」フォルダに任意の.txtファイルを保存しておきます。いくつでも良いです。

で、xfolio.pyなどと言うファイル(別にaaaa.pyでもいい)を作成して以下を貼り付けてください。

で、<と>のところを 《2つと  》2つ に置換してください。末尾に.txtに変換したファイルも載せたので参照のほど。

import os
import re

def convert_text(text):
    def replace_ruby(match):
        word = match.group(1)
        dots = '・' * len(word)
        return f"[[rb:{word}>{dots}]]"
    
    text = re.sub(r'<(.*?)>', replace_ruby, text)
    return text

def process_file(input_path, output_path):
    with open(input_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    converted_content = convert_text(content)
    
    os.makedirs(os.path.dirname(output_path), exist_ok=True)
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(converted_content)

def process_all_files(input_dir, output_dir):
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.endswith(".txt"):
            input_path = os.path.join(input_dir, filename)
            output_path = os.path.join(output_dir, filename)
            process_file(input_path, output_path)
            print(f"変換が完了しました: {output_path}")


input_dir = "input"
output_dir = "output"
process_all_files(input_dir, output_dir)

これで環境ができたのであとは、この.pyを実行するだけです。できれば、python -m venv venv 等適当に仮想環境作った方が後々いいです。

pythonは手軽なのでちょっとしたツールを作るうえで便利ですし、実行環境もあったほうが何かと良いです。

ぜひ挑戦してみてください。

コメント

タイトルとURLをコピーしました