前置き
RubyMotionでごにょごにょするのがうまくいかないので腹癒せです。
ええ、大量のデータを突っ込んだDBを擬似的に作りたかったんです。 で、Twitter APIを使ってツイートのデータを突っ込むことにしました。Rubyで。 twitterというRubygemsがあるので、それを使います。
流れ
twitterのGemを利用してタイムラインの情報を取得しつつ、 ruby-mysqlでINSERT文を実行しつづけるというスタイルです。
原因は不明ですが、一度に151のツイートしかINSERTできんかった…
152個目をINSERTしようとすると、こんなエラーを吐かれるのです。
"2013-11-30 17:54:54 +0900 shigemk2: はてなブログに投稿しました\nJUnitを試すにあたって - by shigemk2\n http://t.co/fUWivMxd5H" /Users/shige/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.12/lib/mysql/protocol.rb:502:in `read': undefined method `encoding' for nil:NilClass (NoMethodError) from /Users/shige/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.12/lib/mysql/protocol.rb:178:in `authenticate' from /Users/shige/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.12/lib/mysql.rb:116:in `connect' from /Users/shige/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.12/lib/mysql.rb:50:in `new' from tweet.rb:27:in `block in <main>' from tweet.rb:23:in `collect' from tweet.rb:23:in `<main>'
手順
- なにはともかくbundle install
- PHPでOAuth認証して自分のつぶやきを表示する [Twitter API 1.1 対応版] | webOpixel あたりを参考に、Twitter APIのトークンを取得する (必要な情報は4つあった)
- 得られたトークンはconfig.ymlに書く
- twitter.sqlのSQL文をたたいてDBとテーブルの雛形を作る
- ruby tweet.rbを実行する
- もしくは insert.sh に引数(=実行回数)をつけて実行してもいい。