使用Python配合Evernote完成每周工作安排

標(biāo)題圖

起因:

近期看Evernote API的時候發(fā)現(xiàn)印象筆記對Python非常友好,就試了一下各類操作。

剛好一直覺得用過的那些備忘、代辦軟件功能太亂還不如拿記事本或者短信記。就用印象筆記寫一個,反正擺脫不了印象筆記,就干脆都存在里面。

用過一段時間以后發(fā)現(xiàn)備份和檢索功能還不錯,也可以把一些文檔做鏈接放進(jìn)去。

其實(shí)身邊的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調(diào)整
  • 存放位置與工作安排的名字可以通過修改PackMemo.py 4-6行配置

配置Secret Key

  • 進(jìn)入印象筆記官網(wǎng)登陸(其實(shí)也可以忽略這一步,但下面的網(wǎng)址鏈接不太穩(wěn)定)
  • 進(jì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拖入文件夾

程序細(xì)節(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驗(yàn)證(就是賬號密碼登陸)
  • 筆記指定方式通過myfile方法確定為Notebook/Note
  • 刪除操作僅在使用開發(fā)者Token時可以使用,否則僅能移入已刪除的文件文件夾(API限制)
  • 完整版EvernoteControler.py包含其余組件,如果感興趣可以再做研究

Memo.py

  • 通過替換將日期周數(shù)等內(nèi)容
  • 關(guān)于enex的文檔格式,文檔的內(nèi)容都在<en-note>標(biāo)簽里面
  • 建議有什么需要的格式自己導(dǎo)出一份研究就可以了,這里是擴(kuò)展閱讀

PackMemo.bat

  • 雖然演示視頻中把快捷方式直接放到了%systemroot%/system32下面,但還是得說,這不是一個好習(xí)慣
  • 建議確定一個別的文件夾,專門用來放各類快捷啟動,然后把這個文件夾加入環(huán)境變量
  • 沒準(zhǔn)就有人覺得有用呢(攤手)

API

快速入門

  • 對于API如果想要有個全面的了解的話,可以移步我的另一篇文章。
  • 整個API的框架分為OAuth(使用開發(fā)者Token的話直接獲取EvernoteClient即可)和常用方法
  • 僅是小應(yīng)用的話可以不用了解OAuth
  • OAuth原意不是通過命令行實(shí)現(xiàn),但還是可以通過一定的方法實(shí)現(xiàn),官方文檔見這里

權(quán)限

印象筆記有兩種權(quán)限類型,開發(fā)者權(quán)限和普通權(quán)限。

  • 開發(fā)者權(quán)限:沙盒內(nèi)與使用開發(fā)者Token(僅能操作本人賬號)時的權(quán)限,可以使用所有的方法
  • 普通權(quán)限:用戶可以通過輸入賬號密碼和點(diǎn)擊確認(rèn)給予應(yīng)用授權(quán),可以使用絕大部分方法,具體操作見Oauth.py

獲得授權(quán)后會獲得一個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,以下為官方介紹:

Function: NoteStore.deleteNote

首先,由于其為NoteStore類的方法,所以調(diào)用的方式為NoteStore.deleteNote(token, guid)

其次,token為上述的開發(fā)者Token或者有興趣的話為OAuth獲取到的token

再次,從圖中第七行可以看出,guid的為GUID of the note to delete,下面是Note的介紹

Note

那么,只要獲取到Note,就可以獲得guid。

所以,最后一步,這里牽扯到印象筆記的數(shù)據(jù)結(jié)構(gòu),了解即可

  • 通過NoteStore.listNotebooks獲取Notebook列表,找到需要的Notebook的guid(和Note的guid不同)
  • 通過NoteStore.findNotes設(shè)置特定筆記本的NoteFilter獲取Note列表,找到需要的Note
  • 調(diào)用NoteStore.deleteNote方法即可以生效

值得一提的是,某些操作需要特殊的權(quán)限,sandbox中和使用開發(fā)者Token時可以使用不代表外部可以使用

結(jié)束語

希望讀完這篇文章能對你有幫助,有什么不足之處萬望指正(鞠躬)。

有什么想法或者想要關(guān)注我的更新,歡迎來GithubStar或者Fork。

160304

LittleCoder

EOF

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容