Revilist、13桁ISBN対応しました
2008-12-28-1
[Maintenance][Programming]
先日公開した、
アマゾンの商品のカスタマーレビューを一気に表示するサイト
「Revilist」ですが[2008-12-25-1]、
ASINだけでなく13桁のISBN(ISBN-13)も使えるようにしました。
- Revilist - アマゾンのレビューを一気読み
ttp://revilist.net/
ISBN-13をASIN(ISBN-10)に変換してから、
既存の Revilist の枠組みに投げるようにしています。
■変換ロジック
(1) 13桁の数字文字列から、最初の3文字と最後の1文字を削除する。
(2) 各桁の数字をそれぞれ左から10倍、9倍、8倍、...、3倍、2倍して合計する。
10のときは "X"、11のときは "0" にする。
(「モジュラス11 ウェイト10-2」 ref. Wikipedia:ISBN)
(3) これを(1)の9桁数字文字列の末尾に足す
■以上の処理を行うコード片
JavaScript :
Perl :
■リダイレクト CGI
ISBN-13 を指定して Revilist の ASIN ページへリダイレクトする
CGI も用意しました。
どうぞご利用ください。
使用例:
-ttp://revilist.net/rd/redirect.cgi?isbn=9784774133411
-ttp://revilist.net/rd/redirect.cgi?isbn=4774133418
(↑ASIN(ISBN-10)でもOK!)
-ttp://revilist.net/rd/9784774133411
(↑Rewrite しているのでこういうURLでもOK!)
■参考
- 水野貴明 / 俺流amazonの作り方-Amazon Webサービス最新活用テクニック
(3年弱前の本だけど、いまだにいろいろと参考にしています。)
- ISBNコード(とASIN)のまとめ
http://www.marusankakusikaku.jp/archives/2007/01/06-isbn-asin.html
- RevlistをISBN-13対応にするスクリプト(SeaHorse/Greasemonkey)
(風柳亭 - 別館:書庫のある庵 -)
http://furyu.tea-nifty.com/annex/2008/12/revlistisbn-13s.html
-- RevilistをISBN-13に対応するスクリプト
http://furyu.tea-nifty.com/script/RevilistPlus.user.js
アマゾンの商品のカスタマーレビューを一気に表示するサイト
「Revilist」ですが[2008-12-25-1]、
ASINだけでなく13桁のISBN(ISBN-13)も使えるようにしました。
- Revilist - アマゾンのレビューを一気読み
ISBN-13をASIN(ISBN-10)に変換してから、
既存の Revilist の枠組みに投げるようにしています。
■変換ロジック
(1) 13桁の数字文字列から、最初の3文字と最後の1文字を削除する。
9784774133416 → 978[477413341]6 → 477413341
(2) 各桁の数字をそれぞれ左から10倍、9倍、8倍、...、3倍、2倍して合計する。
4×10 + 7×9 + 7×8 + 4×7 + 1×6 + 3×5 + 3×4 + 4×3 + 1×2 = 234それを11で割った余りを11から引く。
10のときは "X"、11のときは "0" にする。
(「モジュラス11 ウェイト10-2」 ref. Wikipedia:ISBN)
234÷11=29 余り3 → 11 - 3 = 8
(3) これを(1)の9桁数字文字列の末尾に足す
"477413341" + "8" → 4774133418
■以上の処理を行うコード片
JavaScript :
asin = isbn13.substr(3,9); var ck = 0; for (var i = 0; i < 9; i++) { ck += asin.substr(i,1) * (10 - i); } ck = (11 - ck % 11) % 11; asin = asin + ((ck == 10) ? 'X' : ck);
Perl :
$asin =~ s/^\d{3}(\d{9})\d$/$1/; my $ck; for (my $i = 0; $i < 9; $i++) { $ck += substr($asin, $i, 1) * (10 - $i); } my $cs = (11 - $ck % 11) % 11; $asin .= ($cs == 10) ? "X" : $cs;
■リダイレクト CGI
ISBN-13 を指定して Revilist の ASIN ページへリダイレクトする
CGI も用意しました。
どうぞご利用ください。
使用例:
-
-
(↑ASIN(ISBN-10)でもOK!)
-
(↑Rewrite しているのでこういうURLでもOK!)
■参考
- 水野貴明 / 俺流amazonの作り方-Amazon Webサービス最新活用テクニック
(3年弱前の本だけど、いまだにいろいろと参考にしています。)
- ISBNコード(とASIN)のまとめ
http://www.marusankakusikaku.jp/archives/2007/01/06-isbn-asin.html
- RevlistをISBN-13対応にするスクリプト(SeaHorse/Greasemonkey)
(風柳亭 - 別館:書庫のある庵 -)
http://furyu.tea-nifty.com/annex/2008/12/revlistisbn-13s.html
-- RevilistをISBN-13に対応するスクリプト
http://furyu.tea-nifty.com/script/RevilistPlus.user.js