自炊した本のpdfファイルからバーコード画像を読み取りISBNを取得してAmazonのAPIから得たタイトルのリンクを張りたい

ScanSnapと裁断器で延々と刺身にタンポポを載せるような仕事をしていたのですが,タイトルを入れるのが面倒なので自動で頑張ることにしました.ScanSnapを使ったものの以下の作業はLinux上で行っています.

前提

自炊した本にISBNのバーコード画像が入っていること.裏表紙を捨てずにスキャンしていれば多分OK.ファイルはpdfを仮定していますが,そうで無い場合(zipに固めてみました等)は適当に頑張って下さい.

方針

自炊した本のファイル名は".pdf"に変換.日本語のファイル名は別途リンクを貼ります.直接ファイル名を変更しないのは,

  • あとでファイル名の形式を変えたくなるかもしれない.その際もう一度ISBNの番号を取得するのはバカっぽい.
  • utf8だけで無く,sjisのタイトルのリンクも作っておけばWinSCPWindowsのノートPC等に転送する場合も楽……な気がしたので

準備

ZBar bar code reader
zbarimgで画像からバーコードのISBNを取得します.squeezeやUbuntuならaptitudeで入るようですが*1,我が家のDebianは未だLennyなのでソースから入れました.configureは --without-qt --without-gtk で良いかと.ちなみにconfigureでMagicWandがうんたらと怒られたのでMagicWandもインストール.
pdfimages, pdfinfo
Debianならxpdf-utilsをパッケージ管理システムで入れれば良いでしょう.
python
2.5以上3未満.

注意

ISBN13の先頭が978であると勝手に仮定しています.

ファイル名をISBNに変換

pdfの最初と最後の3ページのどれかにバーコード画像が入っていると仮定しています.pdfが置かれたディレクトリ内で

% ./isbnfilename.sh

でOK.ソースはgistに.bashに慣れちゃってshが怪しいゆとりですよ,ええ…….

Amazon APIでISBNからタイトル等を取得

AccessKeyIDとSecretAccessKeyとやらが必要らしいので,Amazon Web Serviesのページから登録.登録後は アカウント->セキュリティ証明書 から "アクセスキー ID" と "シークレットアクセスキー" とやらを取得しておきます.

ISBNからタイトルを得るコードはgistに.pdfがあるディレクトリに置いて

% ./isbn2title.py <AccessKeyID> <SecretAccessKey> <ISBN>

とすればタイトルが取得できます.以下は例.

% ./isbn2title.py ひみつ ひみつ 9784047270305 
[エンターブレイン][庵田 定夏][白身魚]ココロコネクト ミチランダム (ファミ通文庫).pdf

"[出版社][著者][イラスト]タイトル.pdf"な形式です.何というラノベ専用形式.気に入らなければ適当に変更して下さい.

日本語タイトルのリンクを作成

% for file in *.pdf; do ln $file "$(./isbn2title.py ひみつ ひみつ $(echo $file | sed -e 's/\.pdf//'))"; done

感想とか

毎回コマンドを叩くのが面倒.次は指定ディレクトリにpdfを放り込んだら勝手に変換するようにすると幸せなのかな.

*1:zbar-tools