Emacs+org-modeで編集しているファイルをmobi形式にしてKindle内に保存する

  • 1. 現在開いているファイルをHTMLにエクスポート
  • 2. kindlegen で .mobi に変換
  • 3. Kindle内のフォルダに移動

スクリプト化しただけです。即席。UTF-8 だったら日本語入りでも大丈夫。
目次も勝手に生成されます。
Kindleの Home では org-mode の "#+TITLE: ..." で指定したタイトルが表示されます。

M-x org2mobi で変換・保存完了です。

Kindle内に保存する際 mv で上書きされる点に注意。


html2mobi(シェルスクリプト

#!/bin/bash
# -*- shell-script -*-

KINDLEGEN=~/bin/kindlegen
DEST_DIR=/media/Kindle/documents/memo

HTML=$1
MOBI=$2
MOBI_NONDIR=${MOBI##*/}

$KINDLEGEN -unicode "$HTML"

mv "$MOBI" "$DEST_DIR/$MOBI_NONDIR"


.emacs あたりに書く

(defun escape-special-chars-for-filename (str)
  (replace-regexp-in-string "[ \t*@/#\?!$\\]" "_" str))

(defun file-base-with-org-title ()
  (concat 
   (escape-special-chars-for-filename
    (plist-get (org-infile-export-plist) :title)) ;; #+TITLE: {this}
   "_"
   (file-name-sans-extension (file-name-nondirectory (buffer-file-name)))))

(defun org2mobi ()
  (interactive)
  (let ((html2mobi "~/bin/html2mobi")
        (file-base (file-name-sans-extension (buffer-file-name)))
        html-file
        mobi-file)
    (setq html-file (concat file-base ".html"))
    (setq mobi-file (concat (file-base-with-org-title) ".mobi"))

    (save-buffer)
    (org-export-as-html-batch)

    (browse-url-firefox html-file)

    (shell-command
     (concat html2mobi
             " \"" html-file "\" "
             " \"" mobi-file "\" ")
     "org2mobi out"
     "org2mobi err")))

2011年 2月 20日 日曜日 00:03:55 JST

  • mobi のファイル名をタイトル+ファイル名にした。 #+TITLE が foo で ファイルが bar.org なら、できあがりのファイル名は "foo_bar.mobi" になるように。それに合わせて html2mobi の引数も修正
  • html2mobi で出力先ディレクトリのチェックを行わないようにした。シェル(?)にまかせる。エラーになる場合は org2mobi err バッファにメッセージが出力される