今読ミで著者の表示がおかしい事があるという件ですが、現象は分かりました。
今読ミでAmazonを検索する箇所は2カ所存在します。
- 「本を登録」ページで検索
- 自分の「ホーム」ページでISBNを入力
この二つはISBNを入力する場合、同じ動きをし、内部的にAmazon APIのItemLookupというリクエストを送ります。 対して前者でISBN以外を指定した場合はItemSearchというリクエストを送ります。
問題の「アンナ・カレーニナ (上巻)(ISBN 9784102060018)」をそれぞれ二つの方法で検索するプログラムを書いて、著者に関する情報がどういう風に返ってくるのか確かめてみます。
※コードは分かり易さ優先で愚直に書いてます
まずはISBN指定のItemLookupResponseの場合。
[アンナ・カレーニナ (上巻) (新潮文庫)] ---Author <Author>トルストイ</Author> <Author>木村 浩</Author> ---Creator
著者と翻訳者が、この順番で返って来ます。今読ミは最初に返って来たAuthorタグを著者として(実は勝手に解釈して)扱うので、正しく表示されます。また、Creatorタグの情報は送られて来ません。
ところが書名を入力してItemSearchを実行してみると…
※前述プログラムの13〜15行目、28行目をコメントアウト、17〜18行目、29行目のコメントアウトを外します。
[アンナ・カレーニナ (上巻) (新潮文庫)] ---Author <Author>木村 浩</Author> <Author>トルストイ</Author> ---Creator <Creator Role='著'>トルストイ</Creator> [アンナ・カレーニナ〈上巻〉 (1968年) (角川文庫)] ---Author <Author>トルストイ</Author> ---Creator <Creator Role='著'>トルストイ</Creator> [アンナ・カレーニナ 上巻 縮約版 (1) (新潮カセットブック T- 5-1)] ---Author <Author>トルストイ</Author> ---Creator <Creator Role='著'>トルストイ</Creator> <Creator Role='翻訳'>木村 浩</Creator> [アンナ・カレーニナ〈上巻〉 (1948年)] ---Author <Author>レフ・トルストイ</Author> ---Creator <Creator Role='著'>レフ・トルストイ</Creator> <Creator Role='翻訳'>中村 白葉</Creator>
今度は検索なので複数データが送られて来ます。対象のデータは最初の [アンナ・カレーニナ (上巻) (新潮文庫)] のブロックですが、なぜか翻訳者が先に来ています。なので今読ミは最初のAuthorである「木村 浩」を著者として採用していたのでした。
今読ミで本を登録する場合、自分もですが、最も良く使うのは「本を登録」ページから書名の一部や著者名での検索結果から選択でしょうから、これは問題がありますね。
検索の場合、Creatorタグの情報も送られて来ていて、この例だけですと著者が先に来るので使えそうな雰囲気ですが、たまたまかも知れません。Amazonのページでは、CreatorをRole情報付きで全て表示しているように見えるので、順番に依存せず使うのが正しいのだと思います。
しかし今読ミは今のところ本1冊につき著者1名しか登録できない内部構造になっていて、誰か一人を選ばないといけない。
実験結果からすると当面の暫定対策としては、
- ItemLookupではCreatorが送られてこないがAuthorの順序が正しそうなのでそのまま
- ItemSearchの場合はCreatorの最初(本当はRole=’著’なんだろうが属性値がイマイチ信用できないので)のデータ を採用
するように変更しようと思います。
ItemLookupでCreator情報がなぜ取れないのだろう?これが取れれば、共著の本など一人に決められない事もあるので、複数の著者や翻訳者などを扱える様にし易いのだけど。もう一度APIリファレンスを読んでみる必要があるかも。
【カラーミーショップ】なら、出店料無料のショッピングモール【カラメル】に出店できる!