Ubuntu環境下,如何使用calibre ebook-convert recipe的功能

測試環境

撰寫本文時,測試的環境是

  • 「Xubuntu 14.04 64位元」
  • 「calibre v1.25.0」

緣起

在撰寫「Ubuntu環境下,快速開始使用gitbook」這篇時,發現「gitbook」是使用「ebook-convert」這個「工具」來產生「pdf」「epub」「mobi」這三個格式的檔案。

然後看到有一個參數「–list-recipes」,蠻特別的。

1
2
3
4
--list-recipes
List builtin recipe names. You can create an ebook from a
builtin recipe like this: ebook-convert "Recipe Name.recipe"
output.epub

所以執行了一下,顯示的訊息,又引起我的好奇心了。

1
$ ebook-convert --list-recipes

顯示的訊息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
	...略...

中時電子報
人民日报
日本経済新聞(朝刊・夕刊)
日経新聞電子版(Free, MAX)
日経新聞電子版(MAX)
日経新聞電子版(Social)
日経新聞電子版(スポーツ)
日経新聞電子版(生活)
日経新聞電子版(産業)
日経新聞電子版(経済)
日経新聞電子版(総合)
星島日報 (香港)
時事通信
毎日新聞
毎日新聞(Science)
河北新報
联合早报网 zaobao.com
聯合新聞網
自由電子報
蘋果日報 (香港)

...略...

1544 recipes available

所以使用「calibre recipe」查詢了一下資料,看到「這篇」和「這篇」參考文章。

原來可以這樣使用。

1
$ ebook-convert "聯合新聞網.recipe" udn.pdf
1
$ ebook-convert "聯合新聞網.recipe" udn.epub
1
$ ebook-convert "聯合新聞網.recipe" udn.mobi

不過抓出來的,有些內容是亂碼,我猜應該是網頁編碼不一致的問題。

深入探索

若已經有安裝「calibre」這個套件。

1
$ sudo apt-get install calibre

切換到「/usr/share/calibre/」這個資料夾。

1
$ cd /usr/share/calibre/

可以看到兩個檔「builtin_recipes.xml」和「builtin_recipes.zip」。

1
$ ls builtin_recipes.*

顯示

1
builtin_recipes.xml  builtin_recipes.zip

查看「builtin_recipes.xml」內容

1
$ grep zh_TW ./builtin_recipes.xml

可以看到

1
2
<recipe description="United Daily (Taiwan)" language="zh_TW"
author="Eddie Lau" title="聯合新聞網" needs_subscription="no" id="builtin:united_daily"/>

解開「builtin_recipes.zip」到「/tmp/recipe」。

1
$ unzip builtin_recipes.zip -d /tmp/recipe

利用「united_daily」查詢相關的檔案。

1
$ ls /tmp/recipe/united_daily*

顯示

1
/tmp/recipe/united_daily.recipe

觀看「united_daily.recipe」

1
$ less /tmp/recipe/united_daily.recipe

custom recipe

以下以「http://www.ubuntu-tw.org/modules/newbb/rss.php」這個「RSS Feed」為例。

根據「這篇」提到的,可以利用「calibre」的「GUI」來產生自己的「recipe」。

產生的檔案會放在「~/.config/calibre/custom_recipes」這個資料夾。

1
2
$ cd ~/.config/calibre/custom_recipes
$ ls

顯示

1
index.json  UbuntuTw_1000.recipe

觀看「UbuntuTw_1000.recipe」的內容

1
$ cat UbuntuTw_1000.recipe

「UbuntuTw_1000.recipe」的內容如下

1
2
3
4
5
6
7
class BasicUserRecipe1422253355(AutomaticNewsRecipe):
title = u'UbuntuTw'
oldest_article = 7
max_articles_per_feed = 100
auto_cleanup = True

feeds = [(u'UbuntuTw', u'http://www.ubuntu-tw.org/modules/newbb/rss.php')]

除了可以使用GUI的「Fetch news」的功能,
也可以執行下面的指令。

1
2
3
4
5
6
7
# cd ~/.config/calibre/custom_recipes

ebook-convert UbuntuTw_1000.recipe UbuntuTw.pdf

ebook-convert UbuntuTw_1000.recipe UbuntuTw.epub

ebook-convert UbuntuTw_1000.recipe UbuntuTw.mobi

官方參考文件

Wiki

其他文章