BB.NETにrubyであれこれ

 BB.NETにruby scriptを書いてアクセスしてあれこれやる場合についてメモ書き。
 環境としてはWindowscygwinで動作確認してます。Maclinuxなどでも同じように出来るはず。たぶん。意味が分からなかったらググってください。


 cygwingccおよび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みたい。