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插件
这里配置自己的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