| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
■ 書名羅列スクリプト改 reading.php |
書名を羅列したHTMLを作成するPHPスクリプトってのを公開しましたところ、稚拙なスクリプトにも関らずそれなりの反応や要望を頂きました。
頂いた要望は
ざっとこんな感じ。
ということで、拙作スクリプトを上記要望に添えるようなカタチになるよう書き換えてみました。
reading2.zip (2004/09/11)
「SJISやUTF-8対応」は、マルチバイト文字列(mbstring)関数が有れば簡単です。最終的に出力する文字列のうち、日本語のものをmb_convert_encoding()で変換すればいいだけ。(内部的にはEUC-JPのまま)
こうして見ると、多コード対応は最初からしてても良かったですね(^_^;)
画像表示は、ちょっと苦労しました。
Amazonのサムネイルサイズ画像は
http://images-jp.amazon.com/images/P/4757512260.09.THUMBZZZ.jpg ![]()
例えば↑こんなURLで表現されます。
で、「上記画像をリクエストしてエラーが返って来た場合」という処理を実験してみたのですが、これが上手くいかない。何故か、エラーが出ません。
実験を繰り返した結果、どうも「http://images-jp.amazon.com/images/P」以下へのリクエストで「存在しないファイル名」を指定した場合、1*1ピクセルの透明画像を返してくる→エラーを返して来ない模様。
これは言うまでもなく(画像が存在しなくても赤い『×』が出ない、という意味で)非常に良い手なのですが、画像の有無を調べたい場合にはちょっと困る→思案の末、エラーではなく「取得した画像の横幅」を調べるようにしました。
まず一番小さな(=回線負荷の少ない)サムネイルファイルを探し、これが駄目なら標準サイズ画像を探し、これも無い場合は自前の「無いよ画像」のファイル名を返す…というアルゴリズムで画像ファイル名を生成します。 *1
そのため、羅列する本の数にもよりますが、「ファイル生成」ボタンを押すと、ちょっと考え込んで返ってくるまで時間が掛かります(^_^;) これはファイル作成時に裏でAmazonと通信し、ファイルが有るか無いかを1つ1つ判定しているため。
JavaScriptでの表示は、こちらで組み込ませて頂いたプチログを、大いに参考にさせて貰いました。外部スタイルシートの使い方とかも、殆どココからパクらせて(^^;貰ってます。重ねて感謝!
ファイル名 パーミッション ファイル内容 reading.php 644 スクリプト本体 reading.log 666 ログファイル reading.inc 666 出力JavaScriptファイル reading.css 644 スタイルシート no-image.png 644 「無いよ」画像
スクリプト側の設定部分は先頭部に集中してます。
たぶん、太線部さえ設定すればそれで動くだろうと思います。なお、当スクリプトは文字コード/改行コードにEUC/LFを使っているのでWindows付属のメモ帳等では書き換えできません。EUC対応のエディターを使ってください。
あとは、スタイルシートも含めて適当に変えてください。「文字幅」ってのは「半角文字何文字分に相当する幅か」ということです。全角文字のみだと「設定数値の半分」数の文字が表示されます。
BookMarkletは前と同じで大丈夫です。Amazonで羅列したい本を表示した状態でBookMarkletを呼び出し、「送信」を押して「ファイル作成」を押すことでインクルードされるJavaScriptファイル「reading.inc」が生成されます。
その後、HTML(またはXHTML)の書名を表示したい部分に
とか書いておけばOK!(^_^)
なお、このサイトではたまたまMovable Typeのサイドバーに組み込んで使ってますが、MTの機能を何も使ってないスタンドアロンなスクリプト→mbstring可能なPHPが使える環境であれば、HTMLな非blogサイトでもそのまま使えます。
| 関連IT用語 by e-Words |