ニンテンドー3DSの予約状況をTweetするBot:@Amazon3DSを作った
本日、ニンテンドー3DSの予約が始まりましたね!我が家では先日DSi LLを購入したばかりなので、3DSの購入予定は無いのですが、お祭り騒ぎには乗じたい!ということで、Amazon.co.jpでのニンテンドー3DSの予約状況をTweetするBotを作りました。
・@Amazon3DS
Amazon Web ServicesのProduct Advertising APIを使いたいが為に作ったようなものなので、将来的には潰しちゃうかもだけど。
まず、Amazon Web Servicesを使う為には、アカウントを作成する必要があります。http://aws.amazon.com/jp/から新規にアカウント開設を行い、「アクセス証明書」ページから「アクセスキーID」と「シークレットアクセスキー」を取得します。
さて、RubyからAWSにアクセスする為には便利なgemパッケージがあります。amazon-ecsです。まずはこいつをインストール。
本体のソースは以下。amazon-ecsでニンテンドー3DSのASIN(本体2色なので2つ)から商品情報を取得、現在のステータス(availability)を抽出し、RubytterでTwitterにTweetしています。ステータスがnilの場合は「予約不可」とし、それ以外の場合はそのままTweetしますので、「近日発売 予約可」のようになるはずです(他の商品ではそうなったんだけど、3DSは未だ予約可になってないので...)
・@Amazon3DS
Amazon Web ServicesのProduct Advertising APIを使いたいが為に作ったようなものなので、将来的には潰しちゃうかもだけど。
まず、Amazon Web Servicesを使う為には、アカウントを作成する必要があります。http://aws.amazon.com/jp/から新規にアカウント開設を行い、「アクセス証明書」ページから「アクセスキーID」と「シークレットアクセスキー」を取得します。
さて、RubyからAWSにアクセスする為には便利なgemパッケージがあります。amazon-ecsです。まずはこいつをインストール。
$ sudo gem install amzon-ecs
本体のソースは以下。amazon-ecsでニンテンドー3DSのASIN(本体2色なので2つ)から商品情報を取得、現在のステータス(availability)を抽出し、RubytterでTwitterにTweetしています。ステータスがnilの場合は「予約不可」とし、それ以外の場合はそのままTweetしますので、「近日発売 予約可」のようになるはずです(他の商品ではそうなったんだけど、3DSは未だ予約可になってないので...)
#!/usr/bin/ruby -Ku require 'rubygems' require 'oauth' require 'rubytter' require 'amazon/ecs' # Amazon::Ecs.debug = true Amazon::Ecs.options = { :aWS_access_key_id => ACCESS_KEY, :aWS_secret_key => SECRET_KEY, :associate_tag => "**********-22", :country => :jp } res1 = Amazon::Ecs.item_lookup("B00457VVS4", {:response_group => 'Large'}) res2 = Amazon::Ecs.item_lookup("B00457VVRU", {:response_group => 'Large'}) title1,title2,status1,status2 = String.new res1.items.each do |item| title1 = item.get('title') avail1 = item.get('availability') if avail1 == nil then status1 = "予約不可" else status1 = avail1 end end res2.items.each do |item| title2 = item.get('title') avail2 = item.get('availability') if avail2 == nil then status2 = "予約不可" else status2 = avail2 end end ntime = Time.now.strftime("%Y-%m-%d %H:%M:%S") mess = "[#{ntime}] #{title1}が【#{status1}】、#{title2}が【#{status2}】だよ!" # Twitter Post consumer = OAuth::Consumer.new( CONSUMER_KEY, CONSUMER_SECRET, :site => 'http://twitter.com' ) token = OAuth::AccessToken.new( consumer, ACCESS_TOKEN, ACCESS_SECRET ) client = OAuthRubytter.new(token) client.update(mess) exitamzon-ecsは他にも色々使い道がありそうなので、また何かネタを考えたいと思います。
Nintendo 3DS
任天堂 (2011-02-26)
売り上げランキング: 1
任天堂 (2011-02-26)
売り上げランキング: 1
Nintendo 3DS
任天堂 (2011-02-26)
売り上げランキング: 520
任天堂 (2011-02-26)
売り上げランキング: 520