MARC::NDL_Search::OPAC - 国立国会図書館サーチAPIにおけるOPAC検索のPerlモジュール
use MARC::NDL_Search::OPAC; my $NDL_Search = new MARC::NDL_Search::OPAC;
$NDL_Search->set_query({'any' => '吾輩は猫である'}); # キーワード検索 $NDL_Search->search; my $records = $NDL_sarch->reords; foreach $biblio (@{$records) { print "タイトル: ", $biblio->{"title"}, "\n"; print "著者: ", join q{, }, @{$biblio->{"author"}}, "\n"; print "出版者: ", join q{, }, @{$biblio->{"publisher"}}, "\n"; }
$NDL_Search->isbn_search('4101010013'); print "タイトル: ", $biblio->{"title"}, "\n"; print "著者: ", join q{, }, @{$biblio->{"author"}}, "\n"; print "出版者: ", join q{, }, @{$biblio->{"publisher"}}, "\n";
my $error = $NDL_Search->error; exit if ($error);
my $hits = $NDL_Search->hists;
国会図書館サーチ APIのNDL-OPACの利用に特化したPerlモジュールです。 国会図書館の蔵書をこのモジュール経由で検索することができます。
検索キーワードや表示パラメータは、ハッシュの形式で渡します。 キーワードはutf8文字列で与える必要があります。
my %query = ( 'any' => $any, # キーワード検索 'title' => $title, # タイトル検索 'creator' => $creator, # 著者検索 'publisher' => $publisher, # 出版社検索 'from' => $from, # 刊行日FORM (YYYY-MM-DD) 'until' => $until, # 刊行日UNTIL(YYYY-MM-DD) 'ndc' => $ndc, # NDC 'isbn' => $isbn, # ISBN検索 'max' => $max, # ページごと表示件数 'page' => $page, # ページ番号 'timeout' => $timeout, # タイムアウト ); $NDL_Search->set_query(\%query); $NDL_Search->search;
キーワード検索の結果は書誌レコードの配列レファレンスになります。 各レコード中の項目は、書誌レコード(ハッシュレファレンス)から 取り出すことができます。 いくつかの項目は、配列(繰り返し項目)になっています。 呼び出せるデータ項目と、どの項目が繰り返し項目かは以下のコードで 確認ください。
my $records = $NDL_Search->records; exit if $NDL_Search->error; if (!$NDL_Search->hits) { foreach my $biblio (@{$records}) { print "タイトル: ", $biblio->{"title"}, "\n"; print "タイトル(読み): ", $biblio->{"title_yomi"}, "\n"; print "シリーズ: ", $biblio->{"series"}, "\n"; print "シリーズ(読み): ", $biblio->{"series_yomi"}, "\n"; print "巻: ", $biblio->{"volume"}, "\n"; print "著者: ", join q{, }, @{$biblio->{"author"}}, "\n"; print "著者(読み): ", join q{, }, @{$biblio->{"author_yomi"}}, "\n"; print "出版者: ", join q{, }, @{$biblio->{"publisher"}}, "\n"; print "カテゴリー: ", $biblio->{"category"}, "\n"; print "注記: ", join q{, }, @{$biblio->{"note"}}, "\n"; print "guid: ", $biblio->{"guid"}, "\n"; print "出版日: ", $biblio->{"pubDate"}, "\n"; print "description: ", $biblio->{"description"}, "\n"; print "ISBN: ", $biblio->{"ISBN"}, "\n"; print "NDLC: ", $biblio->{"NDLC"}, "\n"; print "NDC9: ", $biblio->{"NDC9"}, "\n"; print "subject: ", $biblio->{"subject"}, "\n"; print "\n\n"; } }
ISBNをキーに1件のデータのみ取り出します。日本刊行書籍限定です。 なお、このisbn_searchメソッドでは、ISBNの13桁・10桁変換を自動的に行います。 キーワード検索と異なり、検索結果は書誌レコードの配列ではなく、1件の 書誌レコードとして戻ります。 書誌レコードのデータ形式は、キーワード検索と同じです。
$NDL_Search->isbn_search($isbn); my $biblio = $NDL_Serach->records; exit if $NDL_Search->error; if ($NDL_Search->hits > 0) { print "タイトル: ", $biblio->{"title"}, "\n"; print "タイトル(読み): ", $biblio->{"title_yomi"}, "\n"; print "シリーズ: ", $biblio->{"series"}, "\n"; print "シリーズ(読み): ", $biblio->{"series_yomi"}, "\n"; print "巻: ", $biblio->{"volume"}, "\n"; print "著者: ", join q{, }, @{$biblio->{"author"}}, "\n"; print "著者(読み): ", join q{, }, @{$biblio->{"author_yomi"}}, "\n"; print "出版者: ", join q{, }, @{$biblio->{"publisher"}}, "\n"; print "カテゴリー: ", $biblio->{"category"}, "\n"; print "注記: ", join q{, }, @{$biblio->{"note"}}, "\n"; print "guid: ", $biblio->{"guid"}, "\n"; print "出版日: ", $biblio->{"pubDate"}, "\n"; print "description: ", $biblio->{"description"}, "\n"; print "ISBN: ", $biblio->{"ISBN"}, "\n"; print "NDLC: ", $biblio->{"NDLC"}, "\n"; print "NDC9: ", $biblio->{"NDC9"}, "\n"; print "subject: ", $biblio->{"subject"}, "\n"; }
このモジュールは何もエクスポートしません。
事前にPerlモジュールBusiness::ISBNをインストールしてください。 それ以外は、Perlの標準的なモジュールを使用しています。
このモジュールのご利用に際して発生した不利益にいては、 一切責任を負いかねますので、ご了解の上で利用ください。
Akira Maeda<maeda.akira@mail.u-tokyo.ac.jp>
Copyright (C) 2011 by Akira Maeda
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.