元ネタが修正してたので

自分も修正してみた。
元ネタ→http://d.hatena.ne.jp/sin-idea/20080911/1221119488
変わってるのは
msg = CGI.escape(info.toutf8)

msg = CGI.escape(info)
になってるだけ。

元ネタと自分のやつの変更点は
「再生やめたときに[♪]NowPlaying: ? - [?] [fb2k]みたいなメッセージが送信されるのを防ぐ」だけです。
あと送信間隔を60秒にしてるのは「曲を飛ばすと送信しまくるから」ってだけ。

require 'net/http'
require 'time'
require 'kconv'
require 'yaml'
require 'cgi'
$KCODE= 'utf-8'

#ログイン情報ファイル
cfgname="conf.yaml"

#ここは自分の設定に合わせて変える
#foobar2000で設定しているストップ時のメッセージ
stopmsg='[♪]NowPlaying: ? -   [?]  [fb2k]'
#fb2k動いてないときのメッセージ
endmsg='not running'

#おまじない
Net::HTTP.version_1_2

$env_code = Kconv::UTF8
if RUBY_PLATFORM =~ /mswin/i then
  $env_code = Kconv::SJIS
elsif ENV['LANG'] =~ /euc/i
  $env_code = Kconv:: Kconv::EUC
end

#YAML形式のファイルを読み込んでパスとアカウント情報を保存
conf = YAML.load_file(cfgname)
config = conf["twitter"]
account = config["login"]
password = config["password"]

#値の初期化
new = 0

#メインループ
while true
  newer = test("M","np.txt")#ファイル最終更新時刻を取得
  if new != newer
    open("np.txt","r") do |readinfo|
      info = readinfo.gets.chomp
      msg = CGI.escape(info.toutf8)#URI.escapeだとうまくいかない
      if info.casecmp(stopmsg)==0
      #音楽停止中ならメッセージを送信しない
      elsif info.casecmp(endmsg)==0
      #fb2kが停止中でもメッセージを送信しない
      else
      #fb2kで音楽再生中のみメッセージ送信
          params = 'status=' + msg
          #ベーシック認証&投稿
          req = Net::HTTP::Post.new("/statuses/update.xml?")
          req.basic_auth "#{account}", "#{password}"
          Net::HTTP.start('twitter.com', 80) {|http|
            response = http.request(req,params)
          }
      end
    end
    new = newer #最終更新時刻更新
  else
  end
  sleep 60 #あまりやるとHDDいじめなので60秒おきに取得
end