起因:
近期看Evernote API的時候發(fā)現(xiàn)印象筆記對Python非常友好貌亭,就試了一下各類操作柬唯。
剛好一直覺得用過的那些備忘认臊、代辦軟件功能太亂還不如拿記事本或者短信記。就用印象筆記寫一個锄奢,反正擺脫不了印象筆記失晴,就干脆都存在里面。
用過一段時間以后發(fā)現(xiàn)備份和檢索功能還不錯拘央,也可以把一些文檔做鏈接放進去涂屁。
其實身邊的API都可以通過Python用起來,簡單的利用也會有不錯的效果灰伟。
演示用的軟件可以在我的Github拆又,或者360云盤(0fe0)上下載。
演示視頻
我把簡單的演示放在了優(yōu)酷上栏账,如果對演示感興趣可以看下去帖族。
演示中沒有示范如何安裝evernote的包,pip install evernote
一下就好了挡爵。
演示主要分為配置Secret Key竖般、使用、配置快捷啟動茶鹃,具體的文字說明我寫在了后面涣雕。
用途
- 該玩具將會將上周的Memo(在Memo筆記本組中)備份到S-Memo筆記本組(如果有的話)
- 用一份空白Memo替代舊Memo
配置
配置Python及程序
-
pip install evernote
:安裝evernote包 -
pip install requests
:如需要使用Oauth,安裝requests包 - Memo樣式可以通過修改模板文件
content.enex
調整 - 存放位置與工作安排的名字可以通過修改
PackMemo.py
4-6行配置
配置Secret Key
- 進入印象筆記官網(wǎng)并登陸(其實也可以忽略這一步闭翩,但下面的網(wǎng)址鏈接不太穩(wěn)定)
- 進入印象筆記開發(fā)者Token獲取開發(fā)者Token
- 將獲取到的開發(fā)者Token添加到EvernoteController.py第21行單引號內(nèi)(->21 DEV_TOKEN = '')
使用
-
python PackMemo.py
:將會自動登錄完成日志創(chuàng)建與存儲 -
Win+R pm <CR>
:Windows系統(tǒng)內(nèi)配置好快捷啟動后即可使用
配置快捷啟動
-
Win+R %systemroot%/system32 <CR>
:打開文件夾 - 將
PackMemo.bat
創(chuàng)建快捷方式并重命名為pm
- 將
pm
拖入文件夾
程序細節(jié)
EvernoteController.py
- 示例程序:基本的筆記操作
e = EvernoteController()
e.create_notebook('Notebook1')
e.create_note('Hello', '<en-note>Hello, world!</en-note>', 'Notebook1')
e.create_notebook('Notebook2')
e.show_notes()
e.move_note('Notebook1/Hello', 'Notebook2')
e.show_notes()
e.delete_note('Notebook2/Hello')
# deleting notebook can only be available when you use developer token for your own evernote
e.delete_notebook('Notebook1')
e.delete_notebook('Notebook2')
e.show_notes()
- 可以選擇是否開啟本地存儲與Oauth驗證(就是賬號密碼登陸)
- 筆記指定方式通過
myfile
方法確定為Notebook/Note
- 刪除操作僅在使用開發(fā)者Token時可以使用挣郭,否則僅能移入已刪除的文件文件夾(API限制)
- 完整版EvernoteControler.py包含其余組件,如果感興趣可以再做研究
Memo.py
- 通過替換將日期周數(shù)等內(nèi)容
- 關于enex的文檔格式疗韵,文檔的內(nèi)容都在<en-note>標簽里面
- 建議有什么需要的格式自己導出一份研究就可以了丈屹,這里是擴展閱讀
PackMemo.bat
- 雖然演示視頻中把快捷方式直接放到了%systemroot%/system32下面,但還是得說伶棒,這不是一個好習慣
- 建議確定一個別的文件夾旺垒,專門用來放各類快捷啟動,然后把這個文件夾加入環(huán)境變量
- 沒準就有人覺得有用呢(攤手)
API
快速入門
- 對于API如果想要有個全面的了解的話肤无,可以移步我的另一篇文章先蒋。
- 整個API的框架分為OAuth(使用開發(fā)者Token的話直接獲取EvernoteClient即可)和常用方法
- 僅是小應用的話可以不用了解OAuth
- OAuth原意不是通過命令行實現(xiàn),但還是可以通過一定的方法實現(xiàn)宛渐,官方文檔見這里
權限
印象筆記有兩種權限類型竞漾,開發(fā)者權限和普通權限眯搭。
- 開發(fā)者權限:沙盒內(nèi)與使用開發(fā)者Token(僅能操作本人賬號)時的權限,可以使用所有的方法
- 普通權限:用戶可以通過輸入賬號密碼和點擊確認給予應用授權业岁,可以使用絕大部分方法鳞仙,具體操作見Oauth.py
獲得授權后會獲得一個Token,在各種方法中都會使用到
通過這個Token即可獲取EvernoteClient, userStore, noteStore
if SANDBOX:
client = EvernoteClient(token=self.token)
else:
client = EvernoteClient(token=self.token, service_host=SERVICE_HOST)
userStore = client.get_user_store()
noteStore = client.get_note_store()
基本方法
以Function: NoteStore.deleteNote為例演示如何使用API笔时,以下為官方介紹:
首先棍好,由于其為NoteStore類的方法,所以調用的方式為NoteStore.deleteNote(token, guid)
其次允耿,token為上述的開發(fā)者Token或者有興趣的話為OAuth獲取到的token
再次借笙,從圖中第七行可以看出,guid的為GUID of the note to delete
较锡,下面是Note的介紹
那么业稼,只要獲取到Note,就可以獲得guid蚂蕴。
所以低散,最后一步,這里牽扯到印象筆記的數(shù)據(jù)結構骡楼,了解即可
- 通過NoteStore.listNotebooks獲取Notebook列表熔号,找到需要的Notebook的guid(和Note的guid不同)
- 通過NoteStore.findNotes設置特定筆記本的NoteFilter獲取Note列表,找到需要的Note
- 調用NoteStore.deleteNote方法即可以生效
值得一提的是君编,某些操作需要特殊的權限跨嘉,sandbox中和使用開發(fā)者Token時可以使用不代表外部可以使用
結束語
希望讀完這篇文章能對你有幫助,有什么不足之處萬望指正(鞠躬)吃嘿。
有什么想法或者想要關注我的更新祠乃,歡迎來Github上Star或者Fork。
160304
LittleCoder
EOF