平常都是用kindle來看電子書,偶爾也會看上一些英文書籍,不可避免的會遇到不少陌生的單詞,而kindle專門針對這種需求,做了不少優化,可以直接在kindle上面查閱單詞,甚至可以背單詞。但是畢竟不是專門的英語學習工具,在復習陌生單詞方面還是不夠專業(例如不能發音是個硬傷),就想着導出單詞到別的軟件上復習。
而在mac下苦於不能直接用kindle mate這款軟件(我一次都沒有用過這個軟件,只是看到網上評論和使用比較多),我也懶得去在windows虛擬機上面間接使用。一頓搜索之下,發現在mac下並沒有直接導出kindle單詞本的軟件可提供使用。
經過一番思考,既然有第三方軟件能夠支持讀取單詞本這種功能,必然是存在方法在kindle上去獲取單詞本的數據。
直接將kindle通過usb鏈接到手機上,你會發現掛載了一個documents
的文件夾,我在這個文件夾找了一圈,愣是沒有找到。想着會不會有什么隱藏文件夾呢?
通過cd
進入kindle的掛載盤,我發現除了documents
文件夾外,還有一個叫做system
的文件夾。頓時感覺有戲。層層遞進,不負眾望,在/Volumes/Kindle/system/vocabulary
目錄下,找到了vocab.db
這個文件。
vocab.db
是一個sqlite
文件,如果你沒有打開sqlite
文件的軟件可以下載一個SqliteBrowser。
SqliteBrowser是開源免費的Sqlite數據庫文件查看軟件
通過SqliteBrowser
可以直接看到到vocab.db
的數據庫下面的表
在SqliteBrowser
軟件的Browse Data
欄下,通過查看數據發現了兩個有實際意義的數據表
其中LOOKUPS
表里面就是對應的你在那本書那塊地方查詢的這個單詞的相關記錄(在kindle里面背單詞可以看得到相關的數據)。
WORDS
表就是我們單詞本里面的所有單詞數據了。
到這里,也宣告正式找到了kindle單詞本的數據所在了。既然知道了數據在哪里了,剩下的導出就簡單的多了,我只需要單詞的txt文本,以便導入別的背單詞軟件,雖然可以通過軟件直接導出,不過這種方式的復用性不夠強。(考慮到導出單詞是一個周期性的工作)
平時軟件開發過程中,其實都已經安裝好了sqlite3
這個庫,可以直接考慮用命令行來實現這個工作流程。
cp /Volumes/Kindle/system/vocabulary/vocab.db ~/
sqlite3 ~/vocab.db "select word from words;" >> kindlewords.txt
將這兩行shell命令保存成sh
文件,這樣我將kindle插入電腦的時候直接運行一下命令就可以直接得到我所需要的txt文件了,既簡單又優雅。
后續考慮將整個流程自動化,從拷貝單詞本到導入單詞到相關的軟件中。