Workflowy是一個極簡風格的大綱寫做工具,使用它提供的無限層級縮進和各類快捷鍵,能夠很是方便的理清思路,寫出一個好看而實用的大綱。以下圖所示。python
印象筆記更是家喻戶曉,無人不知的跨平臺筆記應用。雖然有不少競爭產品在和印象筆記爭搶市場,可是印象筆記強大的搜索功能仍是緊緊抓住了很多用戶。git
若是可以把用Workflowy寫大綱的便利性,與印象筆記強大的搜索功能結合起來,那豈不是如虎添翼?以下圖所示。github
EverFlowy就是這樣一個小工具。它能夠自動把Workflowy上面的條目拉下來再同步到印象筆記中。若是Workflowy有更新,再運行一下這個小工具,它就會同步更新印象筆記上面的內容。Workflowy負責寫,印象筆記負責存,各盡其能,各得其所。sql
Everflowy基於Python 3開發,代碼託管在Github中,地址爲:github.com/kingname/Ev…這個小工具在持續開發中,目前能夠實現Workflowy單向同步到印象筆記和差別更新。因爲印象筆記的Oauth驗證方式須要申請才能對正式的帳號使用,但它又不會經過這種我的小工具的申請,因此目前暫時使用開發者Token。關於如何申請開通正式帳號的開發者Token,在後文會有詳細的說明。shell
首先須要保證電腦中安裝了Python 3,不然沒法運行這個小工具。代碼的依賴關係使用Pipenv來管理,因此須要首先使用pip安裝pipenv:json
python3 -m pip install pipenv
複製代碼
有了Pipenv之後,使用Git把代碼拉到本地再安裝依賴:api
git clone https://github.com/kingname/EverFlowy.git
cd EverFlowy
pipenv install
pipenv shell
複製代碼
運行了上面的4條命令之後,你的終端窗口應該以下圖相似。bash
Pipenv會自動建立一個基於Virtualenv的虛擬環境,而後把EverFlowy依賴的第三方庫自動安裝到這個虛擬環境中,再自動激活這個虛擬環境。app
在代碼的根目錄,有一個config.json文件,打開之後以下圖所示。工具
你須要修改三個地方,分別是username
,password
和dev_token
。其中username
和password
分別對應了Workflowy的用戶名和密碼,而dev_token
是印象筆記的開發者Token。
這裏須要說明一下印象筆記的開發者Token。印象筆記的開發者Token有兩套,分別是沙盒環境的開發者Token和生產環境的開發者Token。所謂沙盒環境,就是一個測試開發環境,這個環境是專門爲了快速開發印象筆記App而設計的,它的地址爲:sandbox.evernote.com。打開這個網址,能夠看到頁面上彈出了警告,以下圖所示。
不管你以前是否有印象筆記的帳號,要使用沙盒環境,都必需從新註冊。註冊完成之後,經過訪問sandbox.evernote.com/api/Develop…獲取沙盒環境的開發者Token。
關於印象筆記的沙盒環境,我將另外開一篇文章來講明。本文主要介紹如何申請生產環境的開發者Token,從而可使用正式的印象筆記帳號。
在2017年6月之後,印象筆記關閉了生產環境開發者Token的申請通道,若是打開申請網址:app.yinxiang.com/api/Develop…,你會發現申請的按鈕是灰色的且沒法點擊。要解決這個問題,就須要讓印象筆記的客服幫忙。
登陸本身的印象筆記正式帳號,打開印象筆記首頁,把頁面拉到最下面,能夠看到有一個「聯繫咱們」,以下圖所示。
進入「聯繫咱們」,點擊「聯繫客服」,以下圖所示。
在聯繫客服的頁面填寫以下信息,最後一項「簡要描述問題」填寫「我須要基於印象筆記API開發,請幫我開通生產環境開發者Token」並提交。
大約24小時內,就能夠受到客服回覆的郵件,以下圖所示。
此時再次打開app.yinxiang.com/api/Develop…就能夠申請開發者Token了,以下圖所示。
須要注意的是,開發者Token只會顯示一次,因此你須要馬上把它記錄下來。
有了生產環境的開發者Token之後,把它填寫到config.json中,配置就算完成了。在終端輸入命令:
python3 EverFlowy.py
複製代碼
程序就能夠開始同步Workflowy的數據到印象筆記了。
同步完成之後,你會發現程序的根目錄出現了一個history.db文件。這是一個sqllite的文件,裏面就是你在Workflowy中的全部大綱內容和對應的印象筆記GUID和enml格式的內容。這是爲了實現數據的差別更新而生成的。你可使用各類可以瀏覽sqllite的工具來查看裏面的內容。
evernote_util/EverNoteUtil.py
第98行,把client = EvernoteClient(token=self.dev_token, sandbox=False, service_host='app.yinxiang.com')
複製代碼
修改成:
client = EvernoteClient(token=self.dev_token)
複製代碼
個人公衆號:未聞Code