BB.NETにrubyであれこれ
BB.NETにruby scriptを書いてアクセスしてあれこれやる場合についてメモ書き。
環境としてはWindowsのcygwinで動作確認してます。Macやlinuxなどでも同じように出来るはず。たぶん。意味が分からなかったらググってください。
cygwinにgccおよびlibxml2, libxml2-dev, libxslt, libxslt-devが必要になるのでcygwinのsetup.exeを使ってインストール。
rubyのgemが必要になるのでDownload RubyGems | RubyGems.org | your community gem hostでファイルをダウンロードして展開して
$ ruby setup.rb
でインストール。
rubyのmechanizeを使いたいので
$ gem install mechanize
手始めにゲストでログインして牛マンのつぶやきを表示するscriptを書いてみると
#! /usr/bin/ruby require 'rubygems' require 'mechanize' require 'kconv' agent = Mechanize.new agent.get("https://pc.borderbreak.net/bb_p/guest.no") agent.page.link_with(:text => '牛マンのつぶやき').click puts agent.page.at("div[@class='center_middle']").text.gsub(/\r\n|牛マンのつぶやき|トップメニュー/, '')
なんとなく何やっているか分かるかなと。結構短く書けますね。便利便利。
実行してみましょう。ファイルをusiman_guest.rbという名前で保存します。ファイルは以後すべてutf-8で保存してください。で、実行出来るようにパーミッションを変えて実行すると
$ ./usiman_guest.rb 突発的な肉の日ww
表示出来ました。
BB.NETのアカウントを使ってloginして牛マンのつぶやきを表示させる場合は
#! /usr/bin/ruby require 'rubygems' require 'mechanize' require 'kconv' id = "hoge@fuga.isao.net" password = "hogefuga" agent = Mechanize.new agent.get("https://pc.borderbreak.net/bb_p/login.do", "uid" => id, "password" => password) agent.page.link_with(:text => '牛マンのつぶやき').click puts agent.page.at("div[@class='center_middle']").text.gsub(/\r\n|牛マンのつぶやき|トップメニュー/, '')
ほとんど変わりませんね。これもなんとなく何やっているか分かるかなと。同じようにusiman_login.rbなどという名前で保存して実行してみましょう。
$ ./usiman_login.rb 突発的な肉の日ww
同じ結果を得ることが出来ました。
というわけで、結構簡単にloginしてlinkをたどってhtmlファイルを取得してtextを取得することが出来ました。
次は毎週押すのがめんどくさい週1プレゼントを実行すると取得するようなscriptを書いてみます。
1行以上のつぶやきが表示出来ていなかったので47行まで表示できるように修正
stepでまわすのめんどくさいので手抜き版に修正, 半角カタカナが全角カタカナになるのでtoutf8を削除。Nokogiri内部でutf-8なのでそのままputsしてもutf-8みたい。