青空文庫をKindleで読むためのRubyスクリプト

青空文庫を Kindle で読むには「Kindleストア>本>無料本」で探すのが一番簡単。Kindle ストアで見つからなければ、手元の Mac で mobi ファイルを作る。下準備に手間がかかるけれど、新着の小説をいち早く Kindle で読めるようになる。

動作環境:

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.7.5
BuildVersion: 11G63

手順

0. 前準備(ツールの入手)
1. 青空文庫からXHTMLを入手
2. mobiに変換し確認

0. 前準備(ツールの入手)

(1) Rubyスクリプト aozora2kindle.rb を github からインストール

$git clone https://github.com/takatama/aozora2mobi-ruby.git

(2) RubyでXHTMLを操作するためにHTMLパーサー nokogiri をインストール

Nokogiri
http://nokogiri.org/tutorials/installing_nokogiri.html

の手順に従うんだけれど、少々面倒。

(3) KindleGenと、Kindleプレビューツールを以下からインストール。いずれも無料。

Amazon.co.jp:Kindle ダイレクト・パブリッシング:ヘルプ
https://kdp.amazon.co.jp/self-publishing/help?topicId=A3IWA2TQYMZ5J6

KindleGenは、XHTMLファイルからmobiファイルを作るコマンドラインツール。zipを解凍したディレクトリを適切な場所に移動してから、

$cd aozora2kindle-ruby
$ln -s (解凍したディレクトリ)/kindlegen .

としておくと便利。

Kindleプレビューツールはできたmobiファイルを確認するためのGUI。「アプリケーション」フォルダに移動しておく。

1. 青空文庫からXHTMLを入手

青空文庫のXHTMLへのURLを探す。例えば、坊ちゃんの場合は、次のURLになる。

http://www.aozora.gr.jp/cards/000148/files/752_14964.html

このURLをaozora2kindle.rbに渡して実行。

$cd aozora2kindle-ruby
$ruby aozora2kindle.rb http://www.aozora.gr.jp/cards/000148/files/752_14964.html

すると、752_14964.htmlが作成される。あわせて、mobi ファイルに変換するための下準備として、(1) XHTMLファイルが参照するCSSファイルの入手、(2) CSSファイルが参照する画像の入手、(3) CSSファイルでの縦書き指定、(4) XHTMLファイルが参照する画像の入手、をそれぞれ実施している。

2. mobiに変換し確認

KindleGenを使って、下ごしらえしたXHTMLファイルをmobiファイルに変換する。

$./kindlegen 752_14964.html

Kindleプレビューツールを使って、できたmobiファイルを確認する。mobiファイルをKindleに送信すれば持ち運べるようになる。

Google AppEngine Python2.7 で画像の Exif 情報を抽出する

Google AppEngine Python2.7 を使って、アップロードした画像ファイルから Exif 情報を抽出してみる。コードは https://github.com/takatama/gae-webapp2-images で公開している。

Images Python API の使用方法 – Google App Engine — Google Developers で紹介されている例は少し古かったので、webapp2を使うように変更した。

Exif を取得する部分は python – Image exif data in google app engine – Stack Overflow を参考にした。ここに書いてあるように、ローカルで AppEngine 開発用サーバを動かしたとき、取得できる Exif は限られているので注意。

 anImage.rotate(0)
 anImage.execute_transforms(parse_source_metadata=True)
 exif = anImage.get_original_metadata()
 

Google AppEngine で EXIF 情報を抽出するには、Images Python API の get_original_metadata() を使う。そのために、execute_transforms() しておく必要があるが、image に対して何も操作せずに execute_transforms() を呼び出してもエラーになるため、rotate(0) してある。

もっと Python らしいコードが書けるようになりたいな。

開発マシンは Mac OS X 10.7。AppEngine 開発用サーバで images API を使うため、PILをインストールした。備忘録として、開発マシンの設定作業を書き留めておく。

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.7.4
BuildVersion: 11E53

(1) Google App Engine Python 2.7 のセットアップ
Google App Engine SDK を Downloads – Google App Engine — Google Developersからインストールする。ダウンロードした dmg をダブルクリックして解凍し、アプリケーションフォルダへ移動する。

Mac には最初から Python 2.7 がインストールされているので、すぐにコーディングを始められる。

$python --version
Python 2.7.1

(2) PIL (Python Imaging Library) インストール
Google AppEngine SDK の開発用サーバを使えば、ローカルで動作確認ができる。images API をローカルの開発用サーバで動かすには、PIL をインストールする必要がある。

$sudo easy_install pip
$sudo pip install pil

(3) GitHub for Mac インストール
GitHubで管理するため、Set Up Git · github:help から GitHub for Mac をインストールして使う。公開鍵、秘密鍵の設定なしで使うことができる。使い始めるまでが楽ちん。

Githubの使い方 Windows編

備忘録です。

新しいリポジトリーを作る。

  1. Githubでリポジトリーを作る。

    Create A Repo に従って Create a New Repository からリポジトリーを作る。このとき、READMEは作らない方がわかりやすい。

  2. PCでGit Bashを起動。

    $mkdir リポジトリー名
    $cd リポジトリー名
    $git init
    $touch README
    $git add README
    $git commit -m 'first commit'
    $git remote add origin git@github.com:アカウント名/リポジトリー名.git
    $git push -u origin master

    origin はエイリアス名のこと。後で楽するためにremoteコマンドでリポジトリー名に名前をつけている。

    master はデフォルトのブランチ名。svnでいうところのtrunk。

新しいファイルを追加する。

  1. PCでGit Bashを起動。

    $cd リポジトリー名
    $git add .
    $git status
    $git commit
    $git push -u origin master

リポジトリー名を変更する。

  1. Github でリポジトリー名を変更。
    リポジトリーの Admin ページで Repository Name を rename
  2. PC で Git Bashを起動。
    $vi .gir/config
     [remote "origin"] url = git@github.com:アカウント名/新しいリポジトリー名.git 

     

参考

  1. Git超入門:”git push origin master”の”push”と”origin”と”master”の意味がわからないあなたへ
  2. githubのリポジトリ名を変更する – モンテカットの開発日記