2008-10-04 13:22:07
紀伊国屋書店の毎日のベストセラーリストを画像付きで自分のサイトに埋め込むことにしよう。PHPを使って私はもう嫌と云うほど埋め込んできたのだが、今日はJavaScriptの練習なので、いきなりPHPでincludeとか使ってはならない。勝手に紀伊国屋書店が管理している商品の画像を持ってきたりしてはいけないのだが、それが許される場合がある。Affiliateプログラムである。契約条件を確認したら、埋め込んでいいと書いてあるから、いいのだ。ということで、広告を一つ作って貼り付けてみようか。
アフィリエイトの申し込みの説明はここではしない。自分の広告のsidとpidが何になるかを確認する方法もここでは説明しない。アフィリエイトなんかどうでもいいのだ、私には。合法的にリンクを貼る手段に過ぎない。とにかく、二つのIDがわかったら、下のようなPHPスクリプトを書く。
$url = "http://bookweb.kinokuniya.co.jp/"; $file = file_get_contents($url); $content=ereg_replace("\x0D\x0A|\x0A|\x0D","\n",$file); $content=mb_convert_encoding($content,"UTF-8","Shift_JIS"); $b_start = strpos($content,"和書デイリーベスト10"); $b_end = strpos($content,"</div>",$b_start); $block = substr($content,$b_start,$b_end-$b_start); $items = split("<td class=\"genre-r03-td01\">",$block); $output = "document.writeln('<table class=\"table1\" \"><tr>');\n"; $output .= "document.writeln('<col width=\"50%\"> </col>');\n"; $output .= "document.writeln('<tr><th class=\"th1\">紀伊國屋書店</th><th> </th></tr>');\n"; for ($i=1;$i<3;$i++){ $isbn10 = substr($items[$i],strpos($items[$i],"/htm/")+5,10); $img_url = "http://bookweb.kinokuniya.co.jp/imgdata/".$isbn10.".jpg"; $a_pos = strpos($items[$i],"<a href"); $a_end = strpos($items[$i],"</a>",$a_pos); $title = strip_tags(substr($items[$i],$a_pos,$a_end-$a_pos)); $title = str_replace("−","ー",$title); $output .= "document.writeln('<td><img src=\"".$img_url."\" height=\"70\" align=\"left\" />');\n"; $output .= "document.writeln('<a href=\"http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=xxxxxxx&pid=xxxxxxxx&vc_url=http://bookweb.kinokuniya.co.jp/htm/".$isbn10.".html\" target=\"_blank\"><small>".$title."<small></a></td>');\n"; } $output .= "document.writeln('</table>');\n"; print $output;
これを、kino.phpとかいう名前で保存して、PHPを動かせるサーバに置く。次に目的のサイトのhtmlに以下のようにして引用する。
<script type="text/javascript" src="http://xxx.xxx.xxx.kino.php"> </script>そうするとこんなものが表示されるはず。
あれ、CSSが反映されないなあ。こんな筈じゃなかったのだが。今は原因を追求する元気がないので、とりあえず、このまま出してしまう。
本当はこうなる筈だった。
このベストセラーリストは毎日更新で、Amazonみたいに毎時更新ではないから、一日一回情報を取得してテキストファイルで保存しておいてからそれを呼び出した方が効率的だと思う。よく見る広告のような感じに仕上げるのもここの目的ではないので雑な作りになっている。気が向いたら少し工夫してみるかも。
でも、これならJavaScriptを使わなくてもいいのだ。何というか、わざわざ慣れない言語で書くのは疲れるのだ。もっとJavaScriptを使っているんだっていう感じのものはないのか。あ、Google AJAX Search APIがいいか。前にはわざわざPythonを使ったんだが、JavaScriptの方が説明が詳しいではないか。