Hatena::Groupenjoy-programming

迷い楽しむプログラミング このページをアンテナに追加 RSSフィード

2008-06-18

「Amazon.co.jpのURLを整形お手伝いさん。」を公開した件

09:22 | 「Amazon.co.jpのURLを整形お手伝いさん。」を公開した件 - 迷い楽しむプログラミング を含むブックマーク はてなブックマーク - 「Amazon.co.jpのURLを整形お手伝いさん。」を公開した件 - 迷い楽しむプログラミング 「Amazon.co.jpのURLを整形お手伝いさん。」を公開した件 - 迷い楽しむプログラミング のブックマークコメント

JavaScriptブックマークレットでいいじゃん、という気持ちがしないでもないのですけれども、複数行のURLを一変に変換できるあたりが長所といえば長所かもしれません。


使い方

Amazon.co.jpURLを整形お手伝いさん

http://hrkt0115311.so.land.to/ruby/az/asinhelp.html

上記に、例えば下記のようなAmazon.co.jpURLをぺたりと貼り付けてください。複数行あっても大丈夫です。一応文字数制限かけてあるので、あまり大量に貼り付けると処理できない場合があります。人様からお借りしているサーバーなのでご理解いただければ幸いです。

http://www.amazon.co.jp/gp/product/0471247448/ref=s9psip_c3_at2-rfc_p?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-2&pf_rd_r=1S4XCD4HX3SCWPMZE5Y8&pf_rd_t=101&pf_rd_p=94832606&pf_rd_i=489986
http://www.amazon.co.jp/gp/product/B0000CD86X/ref=s9qpick_c3_img1-rfc_p?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-3&pf_rd_r=1S4XCD4HX3SCWPMZE5Y8&pf_rd_t=101&pf_rd_p=74576406&pf_rd_i=489986
http://www.amazon.co.jp/gp/product/B001AMBC5E/ref=s9top_c5_img1-rfc_p?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-5&pf_rd_r=1S4XCD4HX3SCWPMZE5Y8&pf_rd_t=101&pf_rd_p=83925906&pf_rd_i=489986
http://www.amazon.co.jp/gp/product/B0014J59FC/ref=s9newrf_c6_img1-rfc_p?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-6&pf_rd_r=1S4XCD4HX3SCWPMZE5Y8&pf_rd_t=101&pf_rd_p=70117306&pf_rd_i=489986
http://www.amazon.co.jp/exec/obidos/ASIN/4774117986/hrkt0115311-22/ref=nosim/

cgiの反応は4種類

  1. 文字数制限を越えて処理できないとお返事すること
  2. 逆に、何も入力されてないですよとお返事すること
  3. アソシエイトID(EX hrkt0115311-22)を入力されたら対応した形式のURLに整形すること
  4. アソシエイトID欄が空欄の場合は、おそらく最短のURLに整形すること
アソシエイトIDが入力された場合

http://www.amazon.co.jp/exec/obidos/ASIN/0471247448/hrkt0115311-22/ref=nosim/
http://www.amazon.co.jp/exec/obidos/ASIN/B0000CD86X/hrkt0115311-22/ref=nosim/
http://www.amazon.co.jp/exec/obidos/ASIN/B001AMBC5E/hrkt0115311-22/ref=nosim/
http://www.amazon.co.jp/exec/obidos/ASIN/B0014J59FC/hrkt0115311-22/ref=nosim/
http://www.amazon.co.jp/exec/obidos/ASIN/4774117986/hrkt0115311-22/ref=nosim/

アソシエイトID欄が空欄の場合
http://amazon.co.jp/dp/0471247448
http://amazon.co.jp/dp/B0000CD86X
http://amazon.co.jp/dp/B001AMBC5E
http://amazon.co.jp/dp/B0014J59FC
http://amazon.co.jp/dp/4774117986

ソースコード

保証です。

#!/usr/local/bin/ruby
require "cgi"
cgi = CGI.new
puts "Content-type: text/html\n\n"
puts "<center>"
#最大文字数の設定
maxlen = 1400
str1 = cgi.params["a1"][0]
asin_url = cgi.params["a2"][0]

#入力データの格納と処理
if str1 != "" and str1.size <= maxlen and asin_url != "" and asin_url.size <= maxlen
puts %Q|<textarea readonly="readonly" rows="25" style="font-size: 9pt;width: 600px">|
asin_url.each do |line|
  asin = line.slice(/[0-9A-Z]{10,13}/)
  puts "http://www.amazon.co.jp/exec/obidos/ASIN/#{asin}/#{str1}/ref=nosim/"
end
puts "</textarea><br/>"
puts "上段のHTMLが、下段です。</center>"
elsif str1.size <= maxlen and asin_url != "" and asin_url.size <= maxlen
puts %Q|<textarea readonly="readonly" rows="25" style="font-size: 9pt;width: 600px">|
asin_url.each do |line|
  asin = line.slice(/[0-9A-Z]{10,13}/)
  puts "http://amazon.co.jp/dp/#{asin}"
end
puts "</textarea><br/>"
elsif str1.size > maxlen or asin_url.size > maxlen
  puts "<center>すみません。入力文字数が、最大文字数を越えています。<br/>処理できませんでした。</center>"
else
  puts "<center>入力情報が確認できません</center>"
end