Skip to content

Loukei/Yaml2Anki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Saladict Yaml to anki spreadsheet

記錄我自己使用沙拉查詞的方式,如果你的使用情境與我類似,希望能幫助到你

  1. 將沙拉查詞單字本輸出成.yaml
  2. 運用python腳本轉換成.xlsx格式
  3. 使用Anki外掛讀取檔案並轉成筆記

緣起

沙拉查詞

沙拉查詞是一款好用的瀏覽器插件,只要選中不熟悉的單字,它會自動擷取單字並顯示網路字典的查詢結果,並且可以快速製作卡片並同步到Anki。

沙拉查詞的缺點

如果你想記錄更多的資訊,比如字根字首等,別無選擇只能寫在Note欄位。 相關討論

IMG

格式化輸出

想改善Note欄位的方式有幾種:

  1. 把Note欄位當作html的方式編寫,這樣在自動製卡的時候就可以顯示漂亮的圖片
    • 這樣在每次紀錄生字的時候都需要編寫html,心力不是花費在筆記而是在撰寫html上
    • 筆記的內容依然是固定的,而且生字本會很難閱讀
  2. 把Note欄位當作一個csv檔,每個不同欄位透過,分隔,將生字本輸出成CSV檔引入
    • ,本身並無法說明值的內容,容易搞錯值的定義
    • Anki本身載入.csv格式會有問題,遇到欄位內容有\n時,會無法辨識每筆資料的內容有幾欄。
  3. 採用結構化的文本格式輸出,比如.json.yaml,將生字本輸出成文字格式,再透過工具轉為anki筆記

這裡我採用第三種方案。

IMG

相關工具

genanki

  • genanki是一個python Lib,使用者可以透過genanki打包製作出自己的.apkg牌組。
  • 使用者必須了解Anki內部的資料結構才能操作。

AnkiConnect

  • AnkiConnect是一個Anki的外掛,安裝之後再anki執行時會開啟一個Server,外部的程式可以透過此server即時的與Anki溝通,執行各種操作包含創建牌組與筆記等。
  • 封包的格式是簡單的POST命令,實際的命令在body用json格式包裝
  • curl localhost:8765 -X POST -d "{\"action\": \"deckNames\", \"version\": 6}"
  • 與genanki類似,你必須理解API並正確包裝成JSON命令

CrowdAnki

  • CrowdAnki是一個Anki外掛,提供JSON格式的方式匯入/匯出牌組
  • JSON格式不易閱讀,不好手動修改牌組內容,通常會選擇載入Anki Desktop再編輯

Panki

  • 建構牌組的外部工具,類似genanki與CrowdAnki等
  • jsonhtml等方式定義筆記與卡片模板
  • 可以使用.csv,.json,.yaml來管理筆記資料
  • 可以讀取.apkg轉成panki的專案形式,這樣的好處是我們可以先在anki設計好筆記與卡片,導出.apkg後,再經由.csv補進資料

Anki-Cli [2021/8/10]

  • 非官方的外部CLI工具
  • 支援使用yaml輸入筆記,與本篇試圖做到的事情相同,而且不用額外編輯與處理excel

本篇專案的使用方式

  1. 安裝Anki外掛Spreadsheet Import Plus for Anki

  2. 使用沙拉查詞快速查詢生字的辭義並製作筆記 IMG

  3. 將生字本輸出成yaml格式 IMG

  4. 使用腳本yaml2xlsx.py轉成xlsx試算表 -i mydict.yaml

  5. 打開轉換好的試算表,根據你的筆記欄位名稱修改試算表欄位名稱

  1. 打開Anki匯入xlsx檔,匯入格式選擇SpreadSheet Import Plus(.xlsx)

這樣的流程有幾個好處:

  1. 使用yaml格式快速紀錄情境與生字,打開沙拉查詞生字本的時候可讀性高
  2. yaml紀錄的生字本,若是偏好其他閃卡服務如Memrise或Quizlet也很好轉換
  3. xlsx的處理大量筆記比較方便

Reference

Relate Anki tools

Python Lib in this Article