Initial commit

This commit is contained in:
Docker7530
2026-03-01 01:43:46 +08:00
commit c6125c117b
3840 changed files with 415340 additions and 0 deletions
+123
View File
@@ -0,0 +1,123 @@
# 闪念
```
<%*
// 查找当前日期对应的文件
const file = tp.file.find_tfile(tp.date.now("YYYY-MM-DD"));
if (!file) {
// 如果没有找到对应的文件,弹出通知
new Notice("No Daily Note Found!");
return; // 早期返回,避免更深的嵌套
}
// 弹出提示框,获取用户输入的日记内容
const loggedItem = await tp.system.prompt("What's Up?");
if (loggedItem === undefined || loggedItem === null || loggedItem.trim().length === 0) {
// 如果输入为undefined、null、空串或仅包含空格,不执行任何操作,弹出通知
new Notice("Input is empty or invalid!");
return; // 早期返回,避免更深的嵌套
}
// 获取当前时间
const time = tp.date.now("HH:mm");
// 读取文件内容,并按行分割成数组
const content = (await app.vault.read(file)).split("\n");
// 找到“# 杂记”标题的位置
const index = content.indexOf("# 杂记");
// 检查“# 杂记”标题下一行是否为空行
if (content[index + 1].trim() === "") {
// 如果下一行是空行,就在空行下添加新内容
content.splice(index + 2, 0, `- ${time} - ${loggedItem}`);
} else {
// 如果下一行不是空行,就先添加一个空行,然后添加新内容
content.splice(index + 1, 0, "", `- ${time} - ${loggedItem}`);
}
// 将修改后的内容写回文件
await app.vault.modify(file, content.join("\n"));
-%>
```
# 问题记录模板
```
<%*
// 弹出提示框获取文件标题
const title = await tp.system.prompt("Enter file title");
// !!!!!!!!!!!!!!!!每个人自定义区域!!!!!!!!!!!!!!!!
// 定义待创建文件的目录
const inboxDirectory = "000-Inbox";
// 定义文档中会用到的特定标题,方便将来修改
const detailHeader = "# 问题详情";
// !!!!!!!!!!!!!!!!每个人自定义区域!!!!!!!!!!!!!!!!
// 检查用户输入的标题是否有效(非空且非纯空格)
if (!title || title.trim().length === 0) {
new Notice("Title is empty or invalid!");
return; // 如果标题为空或无效,则显示通知并停止执行
}
// 获取当前日期并格式化为 YYYY-MM-DD 用于文件属性
const currentDate = tp.date.now("YYYY-MM-DD");
// 获取当前时间并格式化为 HH:mm 用于文件属性
const currentTime = tp.date.now("HH:mm");
// 获取当前日期并格式化为 MMDD 用于文件名前缀
const datePrefix = tp.date.now("MMDD");
// 构造待写入新文件中的内容,使用 YAML front matter 和 Markdown 格式
const content = `---
日期: ${currentDate} ${currentTime}
来源:
---
# 问题详情
# 处理过程
# 总结
`;
// 根据日期前缀和用户输入的标题构造文件名
const myFilename = `${datePrefix}-${title}`;
// 尝试创建新文件并写入构造好的内容
try {
await tp.file.create_new(content, myFilename, false, app.vault.getAbstractFileByPath(inboxDirectory));
new Notice("File created successfully!"); // 如果成功,弹出通知
// 根据文件名和目录获取新创建的文件
const createdFile = app.vault.getAbstractFileByPath(`${inboxDirectory}/${myFilename}.md`);
// 获取新窗口叶节点
const leaf = app.workspace.getLeaf(true);
// 在新叶节点中打开新创建的文件
await leaf.openFile(createdFile);
// 等待新视图加载完成
await leaf.view.awaitingView;
// 获取编辑器实例
const editor = leaf.view.sourceMode.cmEditor;
// 寻找文件中的特定标题行
const line_number = editor.lastLine();
for(let i = 0; i <= line_number; i++) {
const line = editor.getLine(i);
if(line.includes(detailHeader)) { // 如果找到指定的标题行
// 将光标移动到该标题下一行的开始位置
editor.setCursor({line: i+2, ch: 0});
break;
}
}
} catch (e) { // 如果尝试创建或打开文件出现错误
new Notice("Failed to create or open file: " + e.message); // 弹出错误通知
}
-%>
```
@@ -0,0 +1,39 @@
要在 Windows 系统上测试 Obsidian 的 `x-callback-url` 功能,可以创建一个简单的场景,在该场景中,你将使用浏览器(如 Edge 或 Chrome)来构造 URL 请求,并利用 Obsidian 和一个 web 服务(比如用一些免费在线服务作为 `x-success` 回调目标)来测试。以下是一个可以直接体验的步骤:
# 准备工作:
1. **确保已安装 Obsidian** 并且已经在本地创建一个名为 `TestVault` 的笔记库。
2. **确认 Obsidian 可以处理 URL Scheme**:在 Obsidian 中,启用 `URI` 插件(如果有),确保它能接收 `obsidian://` 协议的链接。
# 测试步骤:
1. 打开浏览器,复制并粘贴以下 URL 到地址栏中,然后回车:
```
obsidian://new?vault=TestVault&name=TestNote&x-success=https://webhook.site/your-webhook-id
```
- `vault=TestVault`:这是你的笔记库名称,需要与你本地的笔记库名称一致。
- `name=TestNote`:要在 Obsidian 中创建的新笔记名称。
- `x-success=https://webhook.site/your-webhook-id``https://webhook.site/` 是一个在线工具,用于接受任何形式的 HTTP 请求。你可以在这个网站上获取一个唯一的 URL(称为 `your-webhook-id`),Obsidian 完成操作后会回调到这个地址。
2. **获取 `Webhook.site` 的 ID**
- 打开 [Webhook.site](https://webhook.site)。
- 页面上会生成一个唯一的 URL(如 `https://webhook.site/abcdefg-1234-5678`)。复制这个地址,替换上面的 `https://webhook.site/your-webhook-id` 部分。
3. **执行 URL**
- 将替换后的完整 URL 粘贴到浏览器地址栏,然后回车。这个 URL 会触发 Obsidian 创建一个名为 `TestNote` 的新笔记,并在创建完成后回调 `Webhook.site`。
4. **查看回调结果**
- 回到 `Webhook.site` 页面,你会看到 Obsidian 请求回调的详细信息,包括笔记的名称和相关信息。
# 结果:
- 如果操作成功,你应该会在 Obsidian 中的 `TestVault` 笔记库中看到一个名为 `TestNote` 的新笔记。
- 同时,在 `Webhook.site` 上可以查看到一个包含 `name` 参数的请求,比如:
```
name=TestNote&url=obsidian%3A%2F%2Fopen%3Fvault%3DTestVault%26file%3DTestNote&file=file%3A%2F%2F%2F...
```
通过这种方法,你可以很方便地在 Windows 系统上测试 `x-callback-url` 的功能,并直观地看到 Obsidian 和外部服务之间的交互结果。