使用 Python 連接 Todoist 與 Pomotodo

學會碼代碼之後最大的好處,大概就是可以自己定製自己平時工作、學慣用的軟體了。

這樣一來,自己之前常用的軟體、服務就可以通過自己寫的膠水腳本連接起來,生活方便很多啊。

最近我在寫的一個膠水腳本,完美連接了我平時每天都要用的兩個效率工具,Todoist 和 Pomotodo 。

Todoist ,顧名思義,是用來管理自己todo-list的一個工具,雖然也沒覺得用了這玩意效率提高多少,不過倒是減少了不少焦慮感(不會老想著自己是不是還有什麼事沒做了)

Pomotodo,是一個我常用的番茄鍾軟體,同上,也沒提高多少效率,只是有點心理安慰作用(原來這幾天都有幹活啊)

我之前的習慣是用todoist 整理自己所有的todo,分配deadline,然後用Pomotodo記錄每天都幹了啥,什麼時候幹活了什麼時候在做白日夢這些,最後晚上深刻檢討一下自己,儘管第二天肯定還是照舊...

寫這個膠水腳本之前,我的日常大概是每天從Todoist 複製 todo 出來,粘貼進 Pomotodo , 然後周而復始...

煩人倒是其次,遇到這種多層次的Todo,想粘貼全還是挺麻煩的...

後來發現Pomotodo 和 Todoist 都有API (話說@小明大神,你們api的bug API delete todo 錯誤 啥時候能修復呢),就花了幾天,寫了一個膠水腳本,做到了:

1.一旦在Todoist 中分配一個任務到今天,就把這個todo完整的任務鏈計算出來,加上標籤,同步到Pomotodo裡面。

2.Pomotodo 中標記Todo 為完成後,在Todoist 中也完成這個Todo.

上圖中的「看供給側與證券化的論文」這個Todo,經過這種計算後,得到結果就是這樣:

這種膠水語言寫起來說簡單也簡單,說複雜也挺複雜,大概分以下幾步吧:

  1. 從Todoist 搞到所有的project 和 Todo 的內容和結構
  2. 用函數把todo樹拍扁平成一個個的list,從而生成包含subtodo的完整Todo
  3. 使用Pomotodo 的api,把這些完整的Todo 添加到pomotodo裡面。
  4. 使用todoist 的api 把pomotodo里完成的todo標記為完成

實現以上四步的完整代碼見:

github.com/tsauliu/todo

懶得看代碼的同學其實填上todoist 和pomotodo 的密匙就可以用了。

當然有vps的同學,也可以用apache 做python cgi webhook...做到todoist 這邊一變化就更新pomotodo:

後來感覺todoist的未來deadline可視化做的不太好,於是又寫了一頓javascript,做到了todoist 的 deadline 自動可視化:

這個圖其實還挺好玩的,可以拖動時間軸做到顯示不同日期的dues。有興趣的同學可以看這:

tsauliu.com/demo/plans.

通過假期這幾天寫這個膠水腳本,作為一隻金融狗,我深刻的認識到了自己與職業碼農的遙遠差距,於是搬磚搬的更安心、更踏實了。

這麼看來,雖然浪費了一點點休息時間,但也不失為一件好事呢。


推薦閱讀:

黃哥推薦學習Python 10本好書。
Scrapy對接Selenium
Python筆記 · 一個多線程知乎用戶爬蟲的實現
Python從零開始系列連載(26)——Python特色數據類型(函數)(上)
Python數據分析及可視化實例之Pandas函數速查表

TAG:Python | Todoist | 番茄土豆 |