コマンドラインでTwitterに投稿
30分プログラム、その91。コマンドラインでTwitterに投稿するためのスクリプト。
id:mzp:20070725:notifyの通知をTwitterでやれたら便利じゃね、とid:zyxwvが言っていたので。
使い方
$ twit --username="mzp" --password="xxxx" こんにちは こんにちは
ソース
#! /opt/local/bin/ruby -w # -*- mode:ruby enconding:utf-8 -*- # # twit.rb - Command line twiter poster # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/07/26 22:24:44 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Ruby itself. # # SEEALSO: # http://groups.google.com/group/twitter-development-talk/web/api-documentation # http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt require 'optparse' require 'kconv' require 'net/http' Net::HTTP.version_1_2 # magic class Twitter def initialize(username,password) @username = username @password = password @http = Net::HTTP.start 'twitter.com' end # Update user's state def update(status) post '/statuses/update.json',{'status'=>status} end private def post(path,data) req = Net::HTTP::Post.new(path) req['content-type'] = 'application/x-www-form-urlencoded' req.basic_auth @username,@password req.body = data.map{|k,v| "#{k}=#{URI.encode v}"}.join '&' res = @http.request req res.code == '200' or raise res.message end end if __FILE__ == $0 then opt = OptionParser.new username = password = nil opt.on('-u USERNAME','--username=USERNAME'){|username|} opt.on('-p PASSWORD','--password=PASSWORD'){|password|} opt.parse! ARGV twitter = Twitter.new username,password twitter.update(ARGV.join(' ').toutf8) end
補足
参考にしたやつ。
- http://groups.google.com/group/twitter-development-talk/web/api-documentation
- Twitter API 仕様書 日本語訳 第五十版 (2010年8月12日版)
- 最速インターフェース研究会 :: bluewindからtwitterを更新できるようにRubyでシンプルなクライアントを書いた
で、昨日のid:mzp:20070725:notifyと組み合わせるなら、
export NOTIFY_COMMAND='twit -u mzp -p xxx $@がおわったよ'
とするのがおすすめ。シングルクオートがポイント。
あと、ブックマークコメントによると、gemにあるらしいですよ。
それgemにあるよ。http://twitter.rubyforge.org/