AmazonのASINを取得して、最短URLにしたりする
AmazonのURL、長すぎてうんざりしませんか?
Twitterなら自動的にbit.ly等で短縮してくれるからいいものの、メッセンジャーとかにコピー&ペーストすると、訳わからない文字の羅列でいやになった経験、皆さんもあると思います。
最短のURL
長いURLはAmazonのパラメータによる動作の違いと、最短のURLでも書きましたが、日本語をエンコードしているためです。
基本的にAmazonの商品リンクにはASINが含まれているので、短くしたいときは、これを抜き出してあげて
dp/のあとに書けばOK。
具体的には以下のように。
(以前、http://www.amazon.co.jp/dp/4088598164/mitainamono-22と書きましたが、wwwとcoも抜いて大丈夫のようです)
※mitainamono-22は私のアフリエイトコードです。アフリエイトコードをつける場合が多いと思うので、付加してあります。
より短くしたければ、amz.lyを使えばOK。
さらに6文字短くできます(笑)
ただしamz.lyは非公式のURL短縮サービスなので、その点はご注意を
ブックマークレット
かといって手動でASINを抜き出して、最短のURLにするのは若干馬鹿馬鹿しいですね。
ブックマークレットを使いましょう。
URLにASINを含むページの場合(html上にASINの記載がない場合)
アドレスバーから正規表現でASINらしい文字列をピックアップして、最短のURLに置き換えて表示するブックマークレットです。
アドレスの識別パターンは、dp、product、ASIN、product-description等が複数ありすぎるので、こちらの方が確実ですね。
▽アマゾンの商品ページでASINを取り出すブックマークレットの雛形(たつをのChangeLog)
http://chalow.net/2008-12-02-3.html
上記記事を参考に、wwwとcoを除いてみました。
で、やってみたんですが、アドレスバーに表示させるとamazon.jpはwww.amazon.co.jpにリダイレクトしちゃいます(当たり前ですがwwwとcoが入ったものが表示されてしまう)。だからいじった意味ないですね(><。。。
で、書き直すためJavaScriptを勉強していたところ、次の記事をみつけました。
2番目はそのまんま希望のものですね。
しかも細かい手ほどきつき。ありがたやー。
▽アマゾンの長いURLを短縮するBookmarklet(#!電式ブログ)
http://denshiki.blog33.fc2.com/blog-entry-56.html
▽アマゾン短縮URLブックマークレット改(#!電式ブログ)
http://denshiki.blog33.fc2.com/blog-entry-60.html
とっても詳しいので、自分用細かいカスタマイズブックマークレットが欲しい場合には上記記事を参考にするのがいいと思います。
ただdocument.getElementById('ASIN')でhtmlのASINを読み取るタイプだからどちらかというと下のタイプですか(ていうか間違いなくそうだなぁ)
だからこれみたいなASIN等がhtml中にないページでは、使えないですね。うーむ。
アドレスバーから正規表現でASINらしい文字列をピックアップして、最短のURLに置き換えてプロンプト表示するのが作りたいです(><。。
けどJavaScriptがよくわからないので、ここまででペンディング。
URLにASINを含まないページの場合(html上にASINの記載がある場合)
上のパターンと比較すると、強みは、htmlを読んでいるので、URLにASINを含まないページでも対応できる点ですね。ASINの桁数等が変わってもOK。
弱みとしては、やっぱりhtml上にASINの記載がない場合に対応できません。
▽Amazonの個別商品ページからASINを取得するブックマークレット(Open MagicVox.net)
http://www.magicvox.net/archive/category/computer/software/2007_03092006/
両方対応するブックマークレットは書けないでしょうか
書きたいんですが、そもそも可能なのかよくわからないし、JavaScriptがコワイです……。
まぁ普通レビューページではなく、商品のトップページ?でしょうから、どっちのタイプでもまず読み取ることができると思うんですけどね。
実は今やっている作業、ブックマークレットが作りたかったわけではありません。
Amazonの商品ページのURLをもらったときにJavaScriptでASIN番号を抽出しようというものでした。
……正直しんどいので、全部PHPで書いちゃおうと思います(^_^;
Amazonはスクレイピング禁止でAPI使えという方針だから、URLにASINを含まない場合はとりあえずあきらめる方向で。
とりあえずASINを特定する正規表現がわかったので(え、これでいいの?って感じですが、納得しました)、これでいこうと思います。
▽アマゾンの URL から ASIN を取得(たつをのChangeLog)
http://chalow.net/2006-09-06-1.html
あとでJavaScriptでクライアントサイドで一挙解決!できるようになったら置き換えればいいかなと決めました。