AmazonのASIN取得方法って、いまは…

AmazonのASIN取得って、内部Webアプリがobidos(Perl::Masonのやつ)だったころはけっこうたいへんだったけど、今はhiddenで入ってるやつ取れば100パーセントOKなのかしらん。

ちょっと信用ならんので、自分でobidos時代から含めて7通りつくってみた。基本JavaScriptで、HTMLをパーズするときは(キライだけど)jQueryベースで記述。

var asin = $('input#ASIN').val();

var asin = location.href.toString.replace(
    /^.*/gp/product/([0-9a-zA-Z]+)(:?$|/.*$)/,
    '$1'
);

var asin = location.href.toString.replace(
    /^.*/dp/([0-9a-zA-Z]+)(:?$|/$|.*$)/,
    '$1'
);

var asin = location.href.toString.replace(
    /^.*/exec/obidos/ASIN/([0-9a-zA-Z]+)(:?$|/$|.*$)/,
    '$1'
);

var asin =
    (
        !Associates
        || !Associates.SocialShareAttributes
        || !Associates.SocialShareAttributes.asin
    )
    ? undefined
    : Associates.SocialShareAttributes.asin
;

var asin =
    $('li')
        .filter(function(){
            if ( $(this).text() && $(this).text().match('ISBN-10:') ) {
                return true;
            }
        })
        .slice(0, 1)
        .text()
        .replace( /ISBN-10:/, '' )
        .replace( /[^0-9a-zA-Z]/g, '' )
;

var asin =
    $('tr')
        .filter(function(){
            if ( $(this).text() && $(this).text().match('ASIN') ) {
                return true;
            }
        })
        .slice(0, 1)
        .text()
        .replace( /ASIN/, '' )
        .replace( /[^0-9a-zA-Z]/g, '' )
;

あとで使うときやるのでまだ動作検証してない。
というかハイライトがなんかおかしいな。RegExpリテラルが書き間違ってるかも。