obsidian 配置日语注音

  1. 1. 背景
  2. 2. 逆向接口
  3. 3. 配置templater插件
  4. 4. 编写templater脚本
  5. 5. 使用
  6. 6. 一些问题

1. 背景

因为使用obsidian的furigana插件来手动配置日语的假名太麻烦,我就想使用templater插件进行简化,但是还是几乎手动,提升很小,我就决定在网上找提供相关功能的接口,整合进来

2. 逆向接口

我发现marumaru这个网站提供的功能正好是我想要的。
网页比较简单,很简单就能获取到api
浪费我很多时间的问题:header中必须包含的内容不全,导致返回的内容一直为空,也没有报错
最终得到:

const https = require('https');
const querystring = require('querystring');

function sendPostRequest(text) {
const postData = querystring.stringify({ Text: text });
const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': Buffer.byteLength(postData),
    'Host': 'www.jpmarumaru.com',
    'Origin': 'https://www.jpmarumaru.com',
    'Referer': 'https://www.jpmarumaru.com/tw/toolKanjiFurigana.asp',
    'Cookie': 'ASPSESSIONIDSUCSSQCD=MGGJBPFDLPCIEMMGLBLNCIEO'
  }
};
return new Promise((resolve, reject) => {
  const req = https.request('https://www.jpmarumaru.com/tw/api/json_KanjiFurigana.asp', options, (res) => {

    let responseData = '';
    res.on('data', (chunk) => {
      responseData += chunk;
    });

    res.on('end', () => {
      resolve(responseData);
    });
  });
  req.on('error', (error) => {
    reject(error);
  });
  req.write(postData);
  req.end();
});
}
module.exports = sendPostRequest;

3. 配置templater插件

image.png
这里配置自己的js文件地址(建议直接放在当前目录(就是/),我放在其他文件夹可能会找不到)
点击刷新后下面会出现,发现一个用户脚本 tp.user.furigana 这个furigana就是上面我js文件的名称

4. 编写templater脚本

<%* 
let kanji =await tp.system.prompt("请输入日语汉字:");
let furigana = await tp.user.furigana(kanji)
-%>
<% furigana %>

相当简单:
<%* -%> 之间的是templetor函数执行部分,之外的是模板区,你使用这个模板就会出现这一部分的内容,<% %>之间是变量调用。
在函数部分,我调用了 tp.system.prompt函数,这个函数获取用户输入
然后调用自定义的函数获取到结果,最后展示。

5. 使用

可以配置模板的快捷键(在插件配置中)

6. 一些问题

ctrl+shift+i可以打开obsidian的console,遇到什么error可以打开查看
js脚本出现问题的话可能会出现templeter脚本即使正常也报错的情况。
得不到正确的函数执行结果:注意await


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 2738430398@qq.com