TwitterArchiveFilter を cygwin 上で動かす
何も考えずに実行するとエラーが出ちゃう
$ ruby twitterarchivefilter.rb -k vim -p 10 Keyword => vim PageNum => 10 LogFile => archive.log /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/reader.rb:216:in `parse_page': Scraper::Reader::HTMLParseError: Unable to load /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/../tidy/libtidy.dylib (Scraper::Reader::HTMLParseError) from /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:865:in `document' from /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:749:in `scrape' from /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:347:in `scrape' from twitterarchivefilter.rb:141:in `getItems' from twitterarchivefilter.rb:119:in `getArchives' from twitterarchivefilter.rb:67:in `filter' from twitterarchivefilter.rb:221
これは require している scrapi が原因。
cygwin libtidy.so
でグーグル先生に聞くとすぐにヒットするけど、添付の libtidy.so が linux 専用らしい orz
で、cygwin で動かすには以下を
setup.exe から tidy をインストールする
いんすとーる
libtidy.so と libtidy.dll をリネームする
$cd /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidy $mv libtidy.dll libtidy.dll.linux $mv libtidy.so libtidy.so.linux
cygwin の dll をコピーする
cp /usr/bin/cygtidy-0-99-0.dll /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidy/libtidy.dll
あとは実行
$ ruby twitterarchivefilter.rb -u basyura -p 10
とすると、archive.log に出力される。
2008-06-28T12:03:59+00:00 : うごいたっぽ 2008-06-28T12:02:31+00:00 : いや、うごいた・・・のか? 2008-06-28T12:01:49+00:00 : TwitterArchiveFilter がようやく cygwin で動いた orzz 2008-06-28T11:28:47+00:00 : ruby 1.8.7-p22-1 がインストールされてる 2008-06-28T11:23:10+00:00 : cygwin に tidy だけ入れるつもりがいろいろ入っちゃってるみたい・・・いつも困るんだが・・・
ちなみに、libtidy.so もリネームしているのは
- /usr/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/reader.rb
begin Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.so") rescue LoadError begin Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.dll") rescue LoadError Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.dylib") end end
となっているので、先に libtidy.so が読み込まれると困るから。