Twitterしたら、自動でMixiエコー作ったよ!! 『twitter2mixi.rb』

4月 9th, 2009 by nashiki コメントを書く »

今日、作りました!

Twitterしたら自動で自分のMixiエコーを書いてくれるプログラム~。

梨木のTwitterが自動で梨木のMixiエコーに投稿してくれます!!
TwitterMailも一緒に使って携帯からすぐにポストできます。
http://twittermail.com/

twitter2mixi

twitter2mixi.rb

#!/home/cyberwave/local/bin/ruby -Ks
require 'rubygems'
require 'mechanize'
gem('twitter4r', '>=0.2.0')
require 'twitter'
require 'open-uri'
require 'kconv'
require 'yaml'
require 'csv'
 
# 環境準備
# gem install twitter4r
# gem install mechanize --version "= 0.8.5"
 
# コンフィグ情報読込
config = YAML.load_file(File.expand_path(File.dirname(__FILE__)) + '/twitter2mixi.yaml')
 
# twitter つぶやき取得
twitter = Twitter::Client.new(:login => config['twitterusername'], :password => config['twitterpassword'])
timeline = twitter.timeline_for(:user)
status = timeline[0]
puts status.user.screen_name, status.text.toutf8
twitterlaststatus = status.text.toutf8
if twitterlaststatus == nil
  exit
end
 
# つぶやき更新状況の確認
f = open(config['statustempfile'])
mixilaststatus = f.gets
f.close
print mixilaststatus
 
if mixilaststatus == nil || twitterlaststatus.chomp != mixilaststatus.chomp
  puts "Mixiエコーを更新します。"
  f = open(config['statustempfile'], 'w')
  f.puts twitterlaststatus.chomp
  f.close
 
  # Mechanizeの初期化
  agent = WWW::Mechanize.new
 
  # Mixiへ ログイン
  puts "login to mixi by #{config['mixiusername']}"
  page = agent.get('http://mixi.jp/')
  form = page.forms[0]
  form.fields.find {|f| f.name == 'email'}.value = config['mixiusername']
  form.fields.find {|f| f.name == 'password'}.value = config['mixipassword']
  form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl'
  page = agent.submit(form, form.buttons.first)
 
  # mixi エコー を開く
  puts 'open echo page.'
  page = agent.get("http://mixi.jp/recent_echo.pl")
 
  # エコー書き込み
  form = page.forms[1]
  form.fields.find { |f| f.name == 'body' }.value = twitterlaststatus.toeuc
  page = agent.submit( form,form.buttons.first )
 
  puts 'Mixiエコー更新成功!'
end

twitter2mixi.yaml

twitterusername: (Twitterアカウント)
twitterpassword: (Twitterパスワード)
mixiusername: (Mixiアカウント)
mixipassword: (Mixiパスワード)
statustempfile: (テンポラリファイルへのパス)
Advertisement

8 comments

  1. japaniel より:

    奥さんが日本人で良くmixiを使っているけど僕はfacebookもmyspace余り使わないからmixiをやれっていわれったら、それもちょっとって言う感じ。だけど、twitter2mixi.rbあったら助かるな。問題はmixiでnoobでありながらrubyでもnoobである。

    どうやってこのスクリプトを使うか知りたいけど説明かなにかないのかな?

  2. 梨木 繁幸 より:

    japanielさん、コメントありがとうございます。あと、Googleフレンドにも登録ありがとうね。
    このRubyスクリプトは、Rubyの知識と、Linuxを使う知識がないと使えないな。。(現状では)
    WEBサービス公開したら使いたいって言う人は多いのかな??

  3. japaniel より:

    Linux ならある。Ruby ならたりない。残念。

  4. Signe より:

    ぜひぜひWebサービスにしてほしいです!
    待ってます!

  5. masayun より:

    コメント有難うございました!
    基本的には、問題なく動作しているのですが、
    時々、同じつぶやきが、
    何度も、mixiエコーへ登録されてしまう事象が発生しました。

    ちょっとログをとって調べてみたいと思います。
    (まだ、発生条件などはよく分かっていませんが、
    「# つぶやき更新状況の確認」
    か、
    「if mixilaststatus == nil || twitterlaststatus.chomp != mixilaststatus.chomp」
    あたりの判定がうまくいかないことがあるのではないかと思っています。)

コメント・ツッコミ歓迎