2019-08-23
openBDのapiを利用して書籍目録のようなものをつくる[夏の自由研究]
1行1件のISBNを書いたテキストにもとづいて、openBDのapiから書籍の情報をとりだして、Indesignで書籍目録のようなものをつくります。こんなイメージ。
ポット出版のじゃないのかよ!ってなってしまいますが、取得できる紹介文の長さが揃っていて扱いやすい青弓社さんのデータを拝借してサンプルをつくっています。書影のデータは、openBDのものは200ピクセルくらいの小さなものだったので、版元ドットコムから原寸の画像をダウンロードするようにしています。
技術的には、アドビのアプリケーションを操作するExtendscript(javascript)と、Webの技術を利用してエクステンションをつくる仕組みであるCEP(Adobe Common Extensibility Platform)を使っています。
それらの導入についてはこちらに書きました。
ExtendScript の準備
CEP の準備
あらかじめマージン・段組と段落スタイルなどを作ったテンプレートのIndesignドキュメントを用意しておきます。
書誌情報を取り出したい書籍のISBNを1行ずつ書いたテキストを用意しておきます。
978-4-7872-3455-1
978-4-7872-3452-0
978-4-7872-3451-3
978-4-7872-7420-5
978-4-7872-3453-7
978-4-7872-3454-4
978-4-7872-2083-7
……
indesignファイルがあるのと同じフォルダの中に、webからダウンロードしてきた画像ファイルを保存するためのdownloadフォルダとダウンロードしてきた画像をIndesgnに貼りこむように加工しIndesignからリンクさせるための画像をいれておくLinksフォルダを用意しておきます。以上で前準備完了です。
こんな風なエクステンションパネルをつくりました。上から順番にボタンをポチポチやっていきます。技術の仕様と能力の限界の都合により、各処理のステップを同期させるのが難しいため、そこの部分は人間がタイミングを見計らってボタンを押すことによって同期させることにします。
同期=ある処理が終わったら別のなにかの処理をすること。たとえば、すべての画像ファイルのダウンロードが完了するのを待ってからダウンロードした画像グレースケールにして別名保存する。など
一番上のボタンでを押すとテキストファイルを選択するダイアログが出て、事前に用意しておいたISBNのテキストを取り込みます。ふたつめのボタンでリストにあるISBNの書誌情報をopenBDのapiから取得します。3つめのボタンを押すと版元ドットコムから画像をダウンロードしてきます。
全部ダウンロードが終わるのを待ってから、4つめのボタンを押すと、downloadフォルダの中の画像をphotoshopで開き、解像度を350dpiに設定しグレースケールに変更してpsd形式でLinksフォルダに保存します。
全部の画像がpsdで保存されるのを待って、最後のボタンを押すと、Indesign上に書影と書誌情報を自動的に必要な分のページを増やしながら配置します。
いりいろとここもうちょっとどうにかならんのか、というところは多々ありますが、スクリプトでIndesignを操作する・CEPでIndesignのエクステンションパネルをつくる・apiからデータを取得する・取得したデータから使いたいテキストを取り出して整形加工する・webから画像をダウンロードする・Indesignからスクリプトでphotoshopを呼び出す、など、今自分でできそうなことをてんこもりに詰め込んだ感じになっています。あまり大量だともしかしたらメモリ不足などで不具合を起こすかもしれません。4コマ×12ページ分の48点で試したところでは特に問題なく動作しました。何点くらいまでメモリ不足になったりしないで動かせるかは試してないのでわかりません。
具体的なコードなどはもう少しきれいに書き直しながら、あっちでぼちぼちと紹介できたらと思っています。