2009年7月26日日曜日

twitterからmixiエコーへ送信

Twitterしたら、自動でMixiエコー作ったよ!! 『twitter2mixi.rb』
の記事を参考に(というかほぼそのままだが)、Twitterから、mixiエコーへ送信するようにしてみた。

mixiの微妙な閉鎖感が若干嫌で、ちょっと足が遠のきつつあったが、
辛うじてつなぎ止まったかも。

上記のスクリプトを使用する上で、私の環境だといくつかつまづいたことがあったので、
とりあえず、以下に記しておくことにする...


  1. 文字コードの問題

  2. 依存ライブラリの問題



・文字コードの問題
ソースをUTF-8-unixで書いたのだが、実行すると、


hoge@unicorn:~/bin$ ./twitter2mixi.rb
./twitter2mixi.rb:45: syntax error, unexpected tIDENTIFIER, expecting kEND
puts "login to mixi by #{config['mixiusername']}"
^

と、よく分からないエラーとなる。
これは、実行時のrubyのKCODEとソースの文字コードが異なると発生する(?)様で、
twitter2mixi.rbソースの先頭の記述を以下の様に変更して対応。

#!/usr/bin/ruby -Ku


また、最終行近くの

form.fields.find { |f| f.name == 'body' }.value = twitterlaststatus.toeuc

もうまく動作しなかったので、

form.fields.find { |f| f.name == 'body' }.value = twitterlaststatus.toutf8

に、変更。

・依存ライブラリの問題

Building native extensions. This could take a while...
ERROR: Error installing mechanize:
ERROR: Failed to build gem native extension.
(snip)
checking for libxslt/xslt.h in /opt/local/include/,/opt/local/include/libxml2,/opt/local/include,/opt/local/include,/opt/local/include/libxml2,/usr/local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2... no
libxslt is missing. try 'port install libxslt' or 'yum install libxslt-devel'
(snip)

というエラーが出たが、ubuntuにはそんなパッケージは無い。
で、

hoge@unicorn:~/bin$ sudo apt-cache pkgnames libxslt
libxslt-dev
libxslt1-dbg
libxslt1-dev
libxslt-ruby
libxslt1.1
libxslt1
libxsltc-java
libxslt-ruby1.8
libxslt0-dev
libxsltc-java-gcj
と、出たので、
hoge@unicorn:~/bin$ sudo apt-get install libxslt-dev libxslt-ruby1.8
として、インストール。

4 件のコメント:

  1. twitter2mixiの実装ありがとうございます!!
    無事に動きましたでしょうか?^^

    WEBサービス化したいというコメントももらっているのですが、
    まだ作れていません。。。

    何かありましたらご連絡ください。

    梨木

    返信削除
  2. コメントありがとうございます!
    何の問題かよくわかっていないのですが、
    twitter2mixi.rbをcronで3分間隔で動作させたところ、
    同じtwitterつぶやきが、複数回mixiエコーされることがありました。
    「#つぶやき更新状況確認」
    での判定で何か問題が発生しているのでは?と
    思っているのですが、追いかけきれていません。。

    返信削除
  3. masayunさん

    Cronの設定を20分に1回とかに変えてもだめですかね?
    Mixiへの負荷を考えるとちょっと間隔をあけて設定をしたほうがいいです。

    今のスクリプトだと呟きを1つしか移さないのだけど。。。
    本当は、任意の時間内で、複数の呟きにも対応したほうがいいと思いますが、私自身そんなにつぶやかないので1つのコピー機能のみになっています。。

    返信削除
  4. コメントありがとうございます!
    なるほど、今はcronで3分間隔で実行しているのが問題かもしれません。
    最近Twitter始めたばかりで、つぶやき頻度が高いので、どうにかならないか、考えてみたいと思います。

    返信削除