使用autohotkey快速剪藏信息进入Obsidian
背景介绍
动机
有时候在即刻、知乎、小红书之类的地方,或者看见特别有意思的观点或者知识,想要复制进自己的笔记软件。
正常流程是:
复制文字->打开笔记软件->打开今天的笔记->粘贴;
复制链接->粘贴;
这个流程太过繁琐。
所以使用AutoHotkey简化这一流程,使用AutoHotkey快速剪藏信息进入obsidian。
AutoHotkey
演示结果
在即刻网页版,选中文字,按下ctrl+shift+x
,
按照想要的格式自动复制到Obsidian的今日日记中,
代码编写
注意:以下代码为即刻专用,其他App的暂时没有编写。
设置快捷键
+^x::
{
}
将选中的文字复制,并且在开头添加列表状态,方便在obsidian中形成列表格式。
Send "{Ctrl down}"
Send "c"
Send "{Ctrl up}"
Sleep 100
textNow:=A_Clipboard
textNow := Format("`t- {1}", textNow)
进行格式化处理,防止删去所有空行,并且在最后进行列表格式处理。
textNow := StrReplace(textNow, "`r`n","`n`n")
textNow := StrReplace(textNow, "`n`n","`n")
textNow := StrReplace(textNow, "`n`n","`n")
textNow := StrReplace(textNow, "`r","`n")
textNow := StrReplace(textNow, "`n","`n`t- ")
获取窗口title,并且根据title得到博主名字
WinGetPos &X, &Y, &W, &H, "A"
tinTitle := WinGetTitle("A")
owner := StrSplit(tinTitle, ":")[1]
根据edge的位置点击链接栏,复制链接
if (InStr(tinTitle,"Edge")!=0){
;获得edge的位置
WinGetClientPos &X, &Y, &W, &H, "Edge"
;复制链接
click X+300+90, Y+20+70
Sleep 100
Send "^c"
Sleep 100
link_all := ClipboardAll()
link:= A_Clipboard
Sleep 50
}
else{
isChrome:=0
link :=tinTitle
appOld:=tinTitle
}
打开obsidian,跳转到今日日记页面。
注意:obsidian应该装有Calendar插件,并且将打开今日日记的快捷键设置为:shift+ctrl+t
if WinExist("Obsidian")
WinActivate
else
{
Run "C:\\Users\\Kyle\\Desktop\\Obsidian.lnk"
sleep(500)
}
Sleep 500
;打开今天的日记
Send "{Ctrl down}"
Send "{Alt down}"
Send "t"
Send "{Ctrl up}"
Send "{Alt up}"
Sleep 300
移动到最上行,并且按两个回车+上
Send "{Ctrl down}"
Send "{Home}"
Send "{Ctrl up}"
sleep 100
Send "{Enter}"
sleep 100
Send "{Enter}"
sleep 100
Send "{Up}"
sleep 100
最后按照想要的格式将信息粘贴
SendInput "- "
; A_Clipboard := "[[即刻post]]"owner
A_Clipboard :=Format("[[即刻post]], [[博主-{1}]]",owner)
Send "{Ctrl down}"
Send "v"
Send "{Ctrl up}"
Sleep 100
Send "{Enter}"
Send "{Enter}"
A_Clipboard := textNow
Send "{Ctrl down}"
Send "v"
Send "{Ctrl up}"
Sleep 100
;构建链接
up_name := "链接"
link := Format("[{2}]({1})",link,up_name)
A_Clipboard := link
sleep 50
; MsgBox link
Send "{Enter}"
Send "{Ctrl down}"
Send "v"
Send "{Ctrl up}"
最后返回Edge
if WinExist("Edge")
WinActivate