Entry

蔵書インデクシングプロジェクト活動進捗(2)

2008年07月24日

前回は,バーコードリーダーで ISBN を取りまくったので,今回はこいつらをキーにして,Amazon に目録用のデータをもらいにいくことにします。

つことで,スクリプトを書こうと思ったんですけど,かなり前に PHP の練習がてら Amazon 用の DAO 見たいなもんを作っていたことを思い出したのでした。これを使えば一発じゃん!

……と,思ったんすけど,AWS は一度に10件までしか検索できないんだそうで,一発では取れないんだそうな。そりゃそうだわな。1000件以上の ISBN の面倒を見てくれるはずもねいか。作った DAO は,AWS にアクセスして,XML の解析もするもんなんですけど,いっぺんに取れないなら,あまり意味がありません。DAO を使う意味がないから,PHP で書く意味もなくなってしまった。

ともあれ,触り始めちゃったから,とりあえず,PHP で URL のリストだけ作るスクリプトを書いてみました。もはや PHP である必然性がまるでない……。

<?php
define('BOOKLIST_FILE', '/home/aian/public_html/booklist.txt');
define('REQUEST_FILE', '/home/aian/public_html/request.txt');

$url = 'http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService'
 . '&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&AssociateTag=qune-22'
 . '&Operation=ItemLookup&ResponseGroup=Large&IdType=ASIN&Version=2005-10-05'
 . '&ItemId=';

$rfp = fopen(BOOKLIST_FILE, 'r');
$wfp = fopen(REQUEST_FILE, 'w');

$itemId = '';
$cnt = 0;
while ($line = fgets($rfp, 256)) {
    $line = substr($line, 0, 10);
    $itemId .= (strlen($itemId)) ? (',' . $line) : $line;
    if ($cnt < 9) {
        $cnt++;
    } else {
        fputs($wfp, ($url . $itemId . "\n"), 1024);
        $itemId = '';
        $cnt = 0;
    }
}

if (strlen($itemId)) {
    fputs($wfp, ($url . $itemId . "\n"), 1024);
}

fclose($rfp);
fclose($wfp);

?>

なんの工夫もない,普通のスクリプトです。1行1件で ISBN が書かれているファイルを読んで,AWS にアクセスするための URL リストを吐きます。最大10件らしいので,10件ごとに新規に URL を起こします。万が一,流用したいって方がいらっしゃるようなら,AWSAccessKeyId と AssociateTag を自分の ID に変えてくださいね。

と,まぁ,URL リストができちゃったんで,後は XML をもらってきて,SQL に変換するだけ。SQL への変換は XSLT でいいと思うので,それほど苦労はなさそうです。それよりスキーマが決まってないのが問題だよな……どうしようかなぁ……。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN