utools实现全局追加文本到obsidian文件

请问有大佬会utools的插件开发吗?

我最近在写一个utools插件,可以读取剪贴板然后将内容追加到obsidian的某个文件中,这样就可以实现全局快捷输入内容到obsidian了。

然而我不是很会js,目前插件的preload.js文件写成下面的样子,很粗略地实现要求,但还有很多地方能改进:

window.exports = {
    "Timestamp": { // 注意:键对应的是 plugin.json 中的 features.code
        mode: "list",  // 列表模式
        args: {
            // 进入插件应用时调用(可选)
            enter: (action, callbackSetList) => {
                // 如果进入插件应用就要显示列表数据
                utools.showNotification("进入插件")
                callbackSetList([
                    {
                        title: "1",
                        description: '略',
                        icon: 'logo.png' // 图标(可选)
                    },
                    { 
                        title: "2",
                        description: '略',
                        icon: 'logo.png' // 图标(可选)
                    },
                    {
                        title: '3',
                        description: '略',
                        icon: 'logo.png' // 图标(可选)
                    }
                ])
            },
            // 用户选择列表中某个条目时被调用
            select: (action, itemData, callbackSetList) => {

                // 函数用于将 payload 追加到文件
                const appendPayloadToFile = (payload) => {
                    const fs = require('fs');
                    const data = `\n${payload.payload}`;
                    fs.appendFile('D:\\Project\\JS\\example.txt', data, 'utf8', (err) => {
                        if (err) {
                            console.error('文件追加失败:', err);
                            utools.showNotification('文件追加失败');
                            return;
                        }
                        utools.showNotification('文件异步追加成功');
                    });
                };
                // 函数用于处理 payload
                const processPayload = (payload) => {
                    let processedPayload;
                    switch (payload.type) {
                        case 'img':
                            processedPayload = payload;
                            break;
                        case 'text':
                            processedPayload = payload;
                            break;
                        default:
                            processedPayload = null;
                    }
                    return processedPayload;
                };

                // 主函数,处理用户进入插件应用
                const ggg = (payload) => {
                    console.log('用户进入插件应用', payload.code, payload.type, payload);
                    utools.showNotification(payload);
                    appendPayloadToFile(payload);
                    return processPayload(payload);
                };

                // 注册插件进入事件
                utools.onPluginEnter(ggg);
            },
        }
    }
}

有待改进

  • 目前只实现了文本的追加,图片的追加思路是写入图片obsidian内链到文件同时移动图片文件到obsidian附件夹
  • 更好的编辑框?

其他

1 个赞