AHK64|用AutoHotkey V2產生Yanki MD檔,快速建立Anki閃卡TEST
評論 文字稿
大家好,在前面的兩支影片裏面
我們介紹了使用Obsidian Yanki外掛來產生Markdown的檔案
再透過Yanki的同步
把這些Markdown的檔案再產生成Anki的閃卡
在這一次的影片裏面
就來介紹如何產生Yanki的這些Markdown的檔案
使用的程式是AutoHotkey V2的腳本
透過這個腳本
就可以指定一個設定的文字檔
在這個設定的文字檔裏面
就可以寫下需要產生出閃卡的英文單字
再透過這個腳本
產生出Obsidian的Markdown的檔案
有了這些檔案以後
就可以再透過Yanki這個外掛
把這些Markdown的檔案產生到Anki裏面了
我們先來看一下這個設定的文字檔
它的格式是怎麼樣
首先要請大家注意的就是這個文字檔
請大家使用UTF-8沒有BOM的方法
來做它的檔案編碼
格式裏面的第一個字元如果是分號或者是井號
它就是註解行,不會執行的
就是讓我們做一些說明性的文字
接着第一行 不是註解的這個內容
必須用斜線開頭
它指定的就是說設定好了路徑之後
下面的每一個單字都要產生在這一個指定的資料夾裏面
一直到後面又有一個新的資料夾的設定出現爲止
因此我們這個設定
這兩個單字是產生在7A-1資料夾裏面
後面這一些是產生在7A-2-words資料夾裏面
所以我們可以透過這個來指定不同的單字
要產生在哪一個資料夾裏面
設定檔 只要這樣子設定好以後
就可以直接透過這個腳本
這個腳本目前的名稱叫做yanki1.ahk
這個文字檔它是透過WinHTTP這個COM物件
到Yahoo!的字典網站裏面
去取回中文的解釋還有音標這一些需要的欄位
有了這些欄位以後再產生出Markdown的檔案
以下我們就來看一下這個腳本的邏輯說明
yanki1.ahk是使用AutoHotkey V2這個版本來撰寫
在這邊我們定義了一些Global的變數
在這個地方就指定好了預設的檔名
接着在後面這個action_word變數裏面
使用了一個多行的字串
這個就是我們要輸出的格式
要產生出來的Markdown的檔案
它的完整的內容就在這個地方
在後面的腳本處理上
就把這個{1}、{2}、{3}、{4}這幾個欄位
用實際取到的內容給替換掉
然後後面接着就使用InputBox()
讓使用者輸入一個檔名
有了這個檔名以後 開始來讀取這個檔案
這個檔案讀取的方法是使用Loop read這個指令
讀到了以後再去解析每一行
因此這個A_LoopReadLine就是讀到的每一行
(讀到)這個每一行以後就來解析它的內容
如果它的第一個字元是分號或者是井號的
就不處理 直接再讀下一行
如果它的第一個字元是斜線的
就把這個斜線後面的路徑給儲存起來
然後把它給放到輸出路徑的陣列裏面
然後同時我們再把後面所取到的每一個單字
都放到底線A_EnglishWords這個陣列裏面
透過這一個讀檔的內容
就可以把設定檔的裏面的所有單字
通通給讀到陣列裏面了
後面就再針對每一個單字
到Yahoo!的網站去取回它對應的中文解釋
還有它的音標等等 這些欄位的內容
爲了讓執行的進度能夠顯示在螢幕上
因此我們就建立了一個GUI的物件
然後透過這個GUI的物件來變更它的進度
這樣子就可以在螢幕上面看到它的進度
處理到目前筆數的狀態就可以顯示在螢幕上
迴圈全部跑完以後
就是所有的檔案都已經產生完畢了
我們需要的單字的Markdown檔案就全部產生完
在整個處理的邏輯裏面 最重要的就是這個output
它就是負責產生Markdown的檔案
我們是把它寫成一個函數
我們可以看到這個output函數
它就是透過translate這個函數
從Yahoo!的網站取回音標等等的欄位
然後最後再把這個內容透過FileAppend把檔案給寫出去
因此真正寫檔的動作是用FileAppend來做輸出的動作
取回音標等等這些欄位是透過translate
來看一下這個translate,它也是一個函數
首先就是把Yahoo!的網址給組織好
然後透過 p= 把這個要搜尋的單字給傳遞進來
再透過這個COM物件跟Yahoo!網站取得它的內容
然後取到的內容以後再透過HTMLFile這個COM物件
對這個HTML的內容做解析
因此我們後面這邊就是在做解析的內容
把解析到的內容就分別儲存到變數裏面
然後最後再把這個變數給放到這個陣列裏面
然後有了這個陣列以後
就把這個陣列給傳遞迴output函數
然後output這個函數透過陣列把需要的欄位一一給取出來
最後就把這個檔案給產生出來
我們可以看一下這個...
比如說這個Angry
這個就是我們透過Yahoo!奇摩
後面這個內容就是從Yahoo!奇摩網站取回來的內容
透過這樣子的方法
我們就可以很簡單的產生出需要的
這些Yanki的Markdown檔案
然後再透過Yanki的這個Markdown
就可以同步到Anki裏面
來做一次實際運行的狀況給大家看
到Anki裏面,然後進入我們這個是English-7
這個牌組點擊一下瀏覽
目前因爲已經有產生好的內容
我們就把這個裏面的內容給全部刪掉
按下[Ctrl+A],再按[Ctrl+Delete]
把所有的內容全部刪掉
然後再重新產生一次需要的這個Markdown檔案
因此就是在VS Code裏面點擊右鍵
這裏面就有一個Run AHK Script
這邊就可以輸入檔名,就是我們的設定檔名
然後接着點擊【確定】,它就開始處理了
檔案已經產生完畢了,目前有182個檔案
我們就可以到Obsidian裏面
來看一下這些內容有沒有產生出來
像這些都是直接透過剛剛yanki1.ahk產生出來的檔案
然後在Obsidian裏面再按下[Ctrl+P]
再輸入yanki,找到Sync指令再執行它
它就會開始做同步的處理了
我們就可以到Anki裏面
來看一下它資料的內容是不是有進來
各位可以看到這個新卡片的數字一直在增加
就表示說Obsidian裏面的Yanki的Markdown檔
已經同步到Anki裏面來
它還沒有同步完 但是我們先來看一下
它現在已經儲存進來的內容
這個就是我們剛剛產生進來的內容
這樣子我們就可以透過文字的設定檔
把需要的單字給同步到Anki裏面來
以上就是今天介紹的 這個AutoHotkey V2的腳本
希望對於各位在使用Yanki產生檔案上
能夠有一些幫助
如果你覺得我介紹的AutoHotkey的技巧
對於你在學習上有幫助的話
請各位記得訂閱、按贊、分享
謝謝各位!