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.