星期四, 7月 26, 2012

calibre-haodoosearch 為 Calibre 增加搜索好讀網站並下載的功能

昨天在用 Calibre 時,突然想到如果可以直接在 Calibre 裡直接做搜索與下載的動作不是很好嗎?原本是先去好讀網站上搜索,然後下載到某個資料夾以後,再放到 Calibre 裡,這樣的動作很繁瑣。
有起了念,就趕緊去找,之前是看過幾次寫 Calibre plugin 的文,但這次是增加對書籍的搜索,不知道是不是可以寫這樣的 Plugin。在 Calibre 的源碼裡翻找了一下,大致知道這樣是要寫個 Store,所以就用 Calibre store plugin 去搜索,就找到 Store plugin 的討論串。這個討論串裡面正好有提供框架,就直接拿來改了。今天改了一上午,就改的差不多了,源碼放在 github 上 。有需要的人就自行取用,使用上有一天一百次的限制,這是 Google APIs 的限制,你可以試著申請 developer key,然後把 haodoo.py 裡的 key 改掉,就可以自己擁有一天 100 次 query 的限額。
順便記錄一下幾個心得:
  • 可以直接用 print() 印訊息,然後搭配 calibre-debug 就可以看到輸出。
  • 在設定 actual_plugin 時,搞了好久,然後才發現是自己忽略了框架plugin裡的 .txt 檔案。這個檔案名稱決定了 actual_plugin 屬性該怎麼寫。
  • 實驗結果,Calibre 從 UI 傳下來的字串是 utf-8,然後直接宣告字串變數的話,該字串變數則是 unicode 。
  • 最好不要使用 Calibre 裡面沒包的 library,要不然會很麻煩。我本來是打算用 Google API client library 來執行 custom search,但是後來發現有太多依存關係,就放棄了。
  • 有些字串在印完會丟出例外,我後來乾脆都用 try except 包起來,要不然會沒辦法繼續執行/除錯。
  • 可以自己寫批次檔來做快速佈署的工作,這在 Writing your own plugins to extend calibre‘s functionality 有介紹,會省掉很多工夫。主要就是 calibre-customize 這指令,當這樣用時 calibre-customize -b /your_plugin/ ,會自動幫你把 your_plugin 壓縮成 your_plugin.zip ,並且放到 Calibre 的 plugins 目錄 (Windows 上是在 $USERPROFILE\Application Data\calibre\plugins )。

沒有留言: